MCPcopy Index your code
hub / github.com/erikjuhani/basalt

github.com/erikjuhani/basalt @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
794 symbols 2,127 edges 55 files 114 documented · 14%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Basalt  

TUI Application to manage Obsidian notes    


TUI Application to manage Obsidian vaults and notes directly from the terminal ✨.

Demo

Basalt is a cross-platform TUI (Terminal User Interface) for managing Obsidian vaults and notes. It runs on Windows, macOS, and Linux. Basalt is not a replacement for Obsidian. Instead, it provides a minimalist terminal interface with a WYSIWYG experience.

Installation

  • Using Cargo: sh cargo install basalt-tui

  • Using aqua: sh aqua g -i erikjuhani/basalt

Or download a pre-compiled binary from the latest release, extract it, and move the basalt binary to a location in your PATH.

Configuration

Basalt can be customized using a TOML configuration file. The file does not exist by default — create it manually when you want to override the defaults.

macOS and Linux:

  • $HOME/.basalt.toml
  • $XDG_CONFIG_HOME/basalt/config.toml

Windows:

  • %USERPROFILE%\.basalt.toml
  • %APPDATA%\basalt\config.toml

If configuration files exist in multiple locations, only the first one found is used. The home directory configuration takes precedence.

[!WARNING]

This behavior may change in future versions to merge all found configurations instead.

See the full configuration reference for key mappings, custom commands, and defaults.

Documentation

Contributing

Contributions are welcome, primarily for bug fixes. Feature work is considered on a case-by-case basis — please open an issue first to discuss.

See CONTRIBUTING.md for development setup, code style, and contribution guidelines.

License

Copyright (c) Erik Kinnunen.

Basalt spans three crates under two licenses:

  • basalt-tui (the application) is GPL-3.0-or-later. Distributed modifications must stay open under the same terms.
  • basalt-core and basalt-widgets (the libraries) are Apache-2.0, so they stay reusable in other projects.

Contributions are accepted under a Contributor License Agreement. See CONTRIBUTING.md.

Extension points exported contracts — how you extend this code

Env (Interface)
(no doc) [2 implementers]
basalt/src/config/env.rs
FindNote (Interface)
(no doc) [2 implementers]
basalt-core/src/obsidian/vault_entry.rs
ReplaceVar (Interface)
(no doc) [1 implementers]
basalt/src/command.rs
AsListItems (Interface)
(no doc) [1 implementers]
basalt/src/outline.rs
Flatten (Interface)
(no doc) [1 implementers]
basalt/src/outline/item.rs
FindItem (Interface)
(no doc) [1 implementers]
basalt/src/outline/item.rs

Core symbols most depended-on inside this repo

push
called by 63
basalt-core/src/markdown.rs
is_empty
called by 44
basalt/src/note_editor/rich_text.rs
lines
called by 35
basalt/src/note_editor/virtual_document.rs
into_iter
called by 30
basalt/src/config/mod.rs
set_view
called by 29
basalt/src/note_editor/state.rs
update
called by 27
basalt/src/note_editor/cursor.rs
chars
called by 25
basalt/src/note_editor/virtual_document.rs
resize_viewport
called by 25
basalt/src/note_editor/state.rs

Shape

Method 356
Function 301
Class 80
Enum 48
Interface 9

Languages

Rust99%
TypeScript1%

Modules by API surface

basalt/src/note_editor/state.rs83 symbols
basalt/src/note_editor/render.rs51 symbols
basalt-core/src/markdown.rs37 symbols
basalt/src/note_editor/cursor.rs35 symbols
basalt/src/debug_log.rs34 symbols
obsidian-to-zola/src/main.rs31 symbols
basalt/src/config/key_binding.rs30 symbols
basalt/src/outline/state.rs28 symbols
basalt/src/app.rs28 symbols
basalt/src/input/mod.rs27 symbols
basalt/src/explorer/state.rs26 symbols
basalt/src/config/symbol.rs24 symbols

For agents

$ claude mcp add basalt \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact