A lightweight, terminal-first note-taking tool with Markdown support and bi-directional linking.
NOTE: A detailed documentation is under development and will be available soon.
- Terminal-first & Lightweight – Fast, distraction-free, runs entirely in the terminal.
- Plain Markdown Notes – Fully persistent
.mdfiles accessible with any editor. - Interactive CLI & REPL – Create, edit, search, and link notes from the command line.
- Bi-directional Linking – [[note]] style links with automatic backlinks.
- Customizable Themes & Editor – Pick your favorite terminal theme and editor.
- Developer-friendly – Scriptable, works with Git, perfect for terminal workflows.
pip install anadaAfter installation, use anada command:
anada # Start interactive mode
anada new "my note" # Create a note
anada list # List all notespip install git+https://github.com/sohv/anada.git# Clone the repository
git clone https://github.com/sohv/anada.git
cd anada
# Install dependencies and package
pip install -e .
# Or install normally
pip install .git clone https://github.com/sohv/anada.git
cd anada
pip install -r requirements.txt
pip install -e .For deployment instructions, see deployment.
- CRUD Operations - Create, read, update, and delete Markdown notes
- Persistent Storage - All notes saved to disk (
~/.notes/notes/) and persist across sessions - Bi-directional Links -
[[note]]style links with automatic backlinks - Full-text Search - Search notes by content
- Interactive REPL - Command mode with autocompletion and history
- Theming - Multiple color themes (default, dark, nord)
- Lightweight - Minimal dependencies, runs everywhere
python main.py
# or
./main.pyThis starts an interactive REPL where you can use commands:
notes> new "project ideas"
notes> edit "project ideas"
notes> list
notes> search "obsidian"
notes> theme dark
notes> helpYou can also use Anada as a CLI tool:
# Create a new note
python main.py new "my note"
# Edit a note
python main.py edit "my note"
# Show a note
python main.py show "my note"
# List all notes
python main.py list
# Search notes
python main.py search "keyword"
# Show links in a note
python main.py link "my note"
# Show backlinks
python main.py backlinks "my note"
# Change theme
python main.py theme nord| Command | Description |
|---|---|
new <title> |
Create a new note |
edit <title> |
Open note in your default editor ($EDITOR) |
show <title> |
Display note content with backlinks |
delete <title> |
Delete a note |
list |
List all notes with metadata |
search <query> |
Search notes by content |
link <title> |
Show all [[links]] in a note |
backlinks <title> |
Show notes that link to this note |
theme <name> |
Change theme (default, dark, nord) |
editor [name] |
Show or set editor (nano, vim, etc.) |
help |
Show help message |
quit |
Exit Anada |
When you use edit <title> or open <title>, Anada opens the note in your default editor. The editor is determined by:
- The
editorsetting in~/.notes/config.yml - The
$EDITORenvironment variable - Defaults to
vimif neither is set
Check or Change Editor:
# In interactive mode
notes> editor # Show current editor
notes> editor nano # Change to nano
notes> editor vim # Change to vim
# Or via command line
anada editor # Show current editor
anada editor nano # Change to nanoSet Editor via Environment Variable:
# For current session
export EDITOR=nano
# Permanently (add to ~/.bashrc or ~/.zshrc)
echo 'export EDITOR=nano' >> ~/.zshrc # or ~/.bashrcEditor Commands Reference:
For comprehensive editor commands (nano and vim), see commands.md:
- Nano commands: Save, exit, navigation, etc.
- Vim commands: Navigation, editing, save/exit, etc.
Configuration is stored in ~/.notes/config.yml. You can customize:
notes_dir: Directory where notes are stored (default:~/.notes/notes)editor: Editor command (default:$EDITORorvim)theme: Current theme name (default:default)
Themes are defined in the config file and can be customized.
Anada uses Obsidian-style links:
# My Note
This is related to [[another note]].When you view a note, Anada automatically shows:
- All links in the note
- All notes that link back to this note (backlinks)
~/.notes/
├── notes/ # All your notes are stored here
│ ├── my_note.md # Each note is a .md file
│ ├── project_ideas.md # Notes persist across sessions!
├── config.yml # Configuration file
└── .anada_history # Command history
Important: All notes are saved to ~/.notes/notes/ directory on your filesystem. This means:
- Notes persist across terminal sessions
- Notes are saved immediately when created/edited
- You can access notes even after closing and reopening the terminal
- Notes are plain Markdown files - you can edit them with any text editor
- Python 3.8+ - Core language
- Rich - Beautiful terminal output
- prompt-toolkit - Interactive REPL with autocompletion
- Click - CLI framework
- PyYAML - Configuration management
notes> new "project ideas"
Created: project_ideas.md
notes> new "terminal tools"
Created: terminal_tools.md
notes> edit "project ideas"
# Opens in your editor - add: "See [[terminal tools]] for inspiration"
notes> show "terminal tools"
# Shows note with backlinks showing it's linked from "project ideas"notes> search "project"
# Shows all notes containing "project"notes> theme nord
Theme changed to: nord- Graph visualization (ASCII or web export)
- Tag support (
#tagparsing) - Sync/export to Obsidian folder
- Plugin hooks for extensibility
- Enhanced Markdown rendering with syntax highlighting
Contributions welcome! Please feel free to submit a Pull Request.