Skip to main content

Terminal-based Obsidian-like note-taking tool

Project description

Anada

A lightweight, terminal-first note-taking tool with Markdown support and bi-directional linking.

PyPI version Python Version License: MIT

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 .md files 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:

  1. The editor setting in ~/.notes/config.yml
  2. The $EDITOR environment variable
  3. Defaults to vim if 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: $EDITOR or vim)
  • 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 (#tag parsing)
  • 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

anada-0.1.1.tar.gz (19.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

anada-0.1.1-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file anada-0.1.1.tar.gz.

File metadata

  • Download URL: anada-0.1.1.tar.gz
  • Upload date:
  • Size: 19.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for anada-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a3978f0352b3db9738af9a8410f70605645ee8f88f8d62e1a48dec2012dc6b13
MD5 a6250fa1fa73d83873cb01f41f12ccb4
BLAKE2b-256 ad6c783b55fb09c96bea1629e3ad5024ea77a4ba7ae0e23cd6dafb8804813d45

See more details on using hashes here.

File details

Details for the file anada-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: anada-0.1.1-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

Hashes for anada-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1fde3c0bc2d13828c782d3153565f08118ccc184ef115aabe4812828de81fa96
MD5 9c0c290217722d9e384585e55dc762c2
BLAKE2b-256 0c81170fb1ba63abed057dcdba08ce767f27b9021f79a945f7936b41d1668afe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page