Terminal-based Obsidian-like note-taking tool
Project description
Anada
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.
Why Anada?
- 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.
Installation
Install from PyPI
pip install anada
After installation, use anada command:
anada # Start interactive mode
anada new "my note" # Create a note
anada list # List all notes
Install from GitHub
pip install git+https://github.com/sohv/anada.git
Install from Source
# 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 .
Development Installation
git clone https://github.com/sohv/anada.git
cd anada
pip install -r requirements.txt
pip install -e .
For deployment instructions, see deployment.
Features
- 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
Usage
Interactive Mode
python main.py
# or
./main.py
This 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> help
Command Mode
You 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
Commands
| 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 |
Editing Notes
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
Setting Up Your Editor
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 nano
Set Editor via Environment Variable:
# For current session
export EDITOR=nano
# Permanently (add to ~/.bashrc or ~/.zshrc)
echo 'export EDITOR=nano' >> ~/.zshrc # or ~/.bashrc
Editor 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
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.
Linking Notes
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)
Directory Structure
~/.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
Tech Stack
- Python 3.8+ - Core language
- Rich - Beautiful terminal output
- prompt-toolkit - Interactive REPL with autocompletion
- Click - CLI framework
- PyYAML - Configuration management
Examples
Creating and Linking Notes
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"
Searching
notes> search "project"
# Shows all notes containing "project"
Theming
notes> theme nord
Theme changed to: nord
Future Enhancements
- Graph visualization (ASCII or web export)
- Tag support (
#tagparsing) - Sync/export to Obsidian folder
- Plugin hooks for extensibility
- Enhanced Markdown rendering with syntax highlighting
Contributing
Contributions welcome! Please feel free to submit a Pull Request.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file anada-0.1.3.tar.gz.
File metadata
- Download URL: anada-0.1.3.tar.gz
- Upload date:
- Size: 19.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eaea3110f736cb7069ebddf05632c844647b3547513c7d0c08212216532450db
|
|
| MD5 |
13ccf98d023517982863988471fc6a40
|
|
| BLAKE2b-256 |
829c413b6fddb47b6f3efb6e2630c216a0ed57c79b44d850d2c1be708988c9d9
|
File details
Details for the file anada-0.1.3-py3-none-any.whl.
File metadata
- Download URL: anada-0.1.3-py3-none-any.whl
- Upload date:
- Size: 18.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
645a83be7cb2b4f37eab0f00e5209aba24e83dc99ac386925534fec1fd097d84
|
|
| MD5 |
7663a2565efd7cdacbfb105187dc66ad
|
|
| BLAKE2b-256 |
a1cab69348f4223f2c78ca4b8d0f371c02b5edb58f4c6e7cb985156ee76bf474
|