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.3.tar.gz (19.4 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.3-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

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

Hashes for anada-0.1.3.tar.gz
Algorithm Hash digest
SHA256 eaea3110f736cb7069ebddf05632c844647b3547513c7d0c08212216532450db
MD5 13ccf98d023517982863988471fc6a40
BLAKE2b-256 829c413b6fddb47b6f3efb6e2630c216a0ed57c79b44d850d2c1be708988c9d9

See more details on using hashes here.

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

Hashes for anada-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 645a83be7cb2b4f37eab0f00e5209aba24e83dc99ac386925534fec1fd097d84
MD5 7663a2565efd7cdacbfb105187dc66ad
BLAKE2b-256 a1cab69348f4223f2c78ca4b8d0f371c02b5edb58f4c6e7cb985156ee76bf474

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