jonhadfield
sn-cli
Go

a command line interface for standard notes

Last updated Jun 21, 2026
94
Stars
9
Forks
14
Issues
0
Stars/day
Attention Score
35
Language breakdown
Go 98.3%
Shell 0.9%
Makefile 0.8%
PowerShell 0.1%
β–Έ Files click to expand
README

πŸ“ sn-cli

A modern command-line interface for Standard Notes

Build Status Go Report Card License: MIT

✨ Features

  • πŸ“‹ Notes & Tasks: Create, edit, and manage notes and checklists
  • πŸ” Full-Text Search: Search across titles and content with fuzzy matching and regex support
  • πŸ“€ Migration: Export to Obsidian with automatic Maps of Content (MOC) generation
  • 🏷️ Tags: Organize content with flexible tagging
  • πŸ“Š Statistics: Detailed analytics about your notes and usage
  • πŸ” Secure Sessions: Keychain integration for macOS and Linux
  • ⚑ Fast Sync: Efficient synchronization with Standard Notes servers
  • πŸ”„ Multi-Platform: Windows, macOS, and Linux support

πŸš€ Quick Start

Installation

Download the latest release:

# macOS/Linux curl -L https://github.com/jonhadfield/sn-cli/releases/latest/download/sncli$(uname -s)$(uname -m) -o sn chmod +x sn && sudo mv sn /usr/local/bin/

Or via direct download

Visit: https://github.com/jonhadfield/sn-cli/releases

First Run

# See all available commands
sn --help

Add a note

sn add note --title "My First Note" --text "Hello, Standard Notes!"

List your notes

sn get notes

View statistics

sn stats

πŸ“‹ Commands

| Command | Description | |---------|-------------| | add | Add notes, tags, or tasks | | delete | Delete items by title or UUID | | edit | Edit existing notes | | get | Retrieve notes, tags, or tasks | | search | Full-text search across notes (supports fuzzy matching and regex) | | migrate | Migrate notes to other applications (Obsidian, etc.) with MOC generation | | tag | Manage tags and tagging | | task | Manage checklists and advanced checklists | | stats | Display detailed statistics | | session | Manage stored sessions | | register | Register a new Standard Notes account | | resync | Refresh local cache | | wipe | Delete all notes and tags |

Note: Export and import are temporarily disabled due to recent Standard Notes API changes

πŸ” Authentication

Environment Variables

export SN_EMAIL="your-email@example.com"
export SN_PASSWORD="your-password"
export SN_SERVER="https://api.standardnotes.com"  # Optional for self-hosted

Session Storage (Recommended)

Store encrypted sessions in your system keychain:
# Add session (supports 2FA)
sn session --add

Add encrypted session

sn session --add --session-key

Use session automatically

export SNUSESESSION=true

or

sn --use-session get notes

πŸ†• Recent Updates

Version 0.4.1 (2026-01-30)

  • πŸ” Fixed: Authentication issues with updated dependencies
  • 🏷️ Improved: Tag cloud visualization with offline support
  • πŸ›‘οΈ Enhanced: Network error handling and graceful degradation
  • πŸ› Fixed: Tag reference matching and display issues

Version 0.4.0 (2026-01-29)

  • πŸ’Ύ Added: Backup and restore functionality
  • πŸ“€ Added: Enhanced export with multiple formats
  • 🎨 Added: Tag cloud visualization
  • πŸ“ Added: Note templates system
View full changelog β†’

πŸ’‘ Examples

# Create a note with tags
sn add note --title "Meeting Notes" --text "Important discussion points" --tag work,meetings

Find notes by tag

sn get notes --tag work

Search for notes (searches both title and content)

sn search --query "meeting"

Fuzzy search with limit

sn search --query "mtng" --fuzzy --limit 5

Case-sensitive regex search

sn search --query "TODO|FIXME" --regex --case-sensitive

Search within specific tags

sn search --query "project" --tag work

Create a checklist

sn add task --title "Todo List" --text "- Buy groceries\n- Call dentist\n- Finish project"

View your note statistics

sn stats

Edit a note

sn edit note --title "Meeting Notes" --text "Updated content"

πŸ” Search Feature

The search command provides powerful full-text search across all your notes:

Basic Usage:

# Simple search sn search --query "keyword" sn search -q "keyword"  # Short form

Search Options:

--query, -q     Search query (required) --content, -c   Search in note content (default: true) --fuzzy, -f     Enable fuzzy matching for typo tolerance --case-sensitive  Make search case-sensitive (default: false) --tag           Filter results by tag --limit, -l     Limit number of results (default: unlimited) --output        Output format: table, rich, json, yaml (default: table)

Advanced Examples:

# Regex pattern matching sn search -q "bug-[0-9]+" --regex

Fuzzy search (matches similar terms)

sn search -q "imprtant" --fuzzy

Case-sensitive search in work-tagged notes

sn search -q "Project" --case-sensitive --tag work

Get top 10 results in rich format

sn search -q "todo" --limit 10 --output rich

Search only in titles (faster)

sn search -q "meeting" --content=false

Search Features:

  • Searches both note titles and content by default
  • Highlights matching terms in results
  • Shows context snippets around matches
  • Sorts results by relevance (title matches score higher)
  • Supports multiple output formats with syntax highlighting

πŸ“€ Migration to Other Applications

Export your notes to other platforms with intelligent organization:

# Basic export to Obsidian
sn migrate obsidian --output ./my-vault

Export with automatic MOC generation

sn migrate obsidian --output ./vault --moc

Export specific tags only

sn migrate obsidian --output ./vault --tag-filter work,projects

Preview migration without writing files

sn migrate obsidian --output ./vault --dry-run

Features:

  • Automatic MOC (Maps of Content) generation
  • Tag preservation in YAML frontmatter
  • Metadata preservation (dates, UUIDs)
  • Multiple organizational styles
  • Wikilink formatting
Output Structure:
my-vault/ β”œβ”€β”€ Home.md              # Main entry point β”œβ”€β”€ Work MOC.md          # Category MOCs β”œβ”€β”€ Learning MOC.md └── ... (all your notes)

βš™οΈ Advanced Configuration

Shell Completion

Tab completion is available for Bash, Zsh, Fish, and PowerShell.

Quick Install (Bash on macOS):

brew install bash-completion@2 sudo cp autocomplete/bashautocomplete /usr/local/etc/bashcompletion.d/sncli echo '[ -f /usr/local/etc/bashcompletion ] && . /usr/local/etc/bashcompletion' >> ~/.bash_profile source ~/.bash_profile

Quick Install (Fish):

mkdir -p ~/.config/fish/completions cp autocomplete/fish_autocomplete.fish ~/.config/fish/completions/sncli.fish

πŸ“– For detailed installation instructions for all shells, see autocomplete/README.md

Self-Hosted Servers

export SN_SERVER="https://your-standardnotes-server.com"

πŸ”§ Development

# Build from source
git clone https://github.com/jonhadfield/sn-cli.git
cd sn-cli
make build

Run tests

make test

View all make targets

make help

⚠️ Known Issues

  • New accounts registered via sn-cli require initial login through the official web/desktop app to initialize encryption keys

🀝 Contributing

Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ”— Links


πŸ”— More in this category

Β© 2026 GitRepoTrend Β· jonhadfield/sn-cli Β· Updated daily from GitHub