CLI Reference
Complete command reference for nb.
nb
USAGE nb [command]
COMMANDS archive Archive notes completion Generate the autocompletion script for the specified shell concept Manage project concepts and architectural memory context Show current workspace context git Manage Git repositories within notebook directories init Initialize nb in current directory list List notes in current workspace migrate Migrate and standardize notes move Move or copy notes to different locations new Create a new note obsidian Manage Obsidian integration quick Create a quick note without opening editor remote Manage remote integrations and sync notes search Search notes tmux Tmux window management commands tui Launch an interactive TUI for browsing notes across workspaces version Print version information workspace Manage workspaces (deprecated)
Flags: -c/—config, -h/—help, —json, -v/—verbose, -W/—workspace
Use “nb [command] —help” for more information.
nb new
Create a new timestamped note in the current workspace.
USAGE nb new [title] [flags]
FLAGS -g, —global Create note in global workspace -h, —help help for new -n, —name Note name/title —no-edit Don’t open editor after creating —stdin Read content from stdin (auto-detected when piped) -t, —type Note type (a directory in your notes folder, e.g., ‘inbox’, ‘meetings’) (default: inbox)
EXAMPLES nb new # Create note with timestamp only nb new “meeting notes” # Create note with title nb new -t learn “golang” # Create learning note nb new -t docs “API Documentation” # Create documentation note nb new -t issues “bug report” # Create issues note nb new -t architecture “api design” # Create architecture note nb new -t todos “sprint tasks” # Create todos note nb new -g “todo list” # Create global note nb new -g -t daily # Create global daily note
# Custom types (defined in your grove.yml): nb new -t projects/grove “new feature idea”
# From stdin (auto-detected): echo “Quick thought” | nb new cat ideas.txt | nb new “imported ideas”
# Explicit stdin control: echo “content” | nb new —stdin “title” nb new —stdin “manual” < file.txt
nb tui
Launch an interactive Terminal User Interface for browsing and managing notes. This view provides a workspace-centric way to explore your entire notebook.
USAGE nb tui [flags]
FLAGS -h, —help help for tui
nb quick
Create a quick note with timestamp title, no editor.
USAGE nb quick [content] [flags]
FLAGS -h, —help help for quick
EXAMPLES nb quick “Remember to review PR #123” nb quick “Meeting at 3pm with team”
nb list
List notes in the current workspace.
USAGE nb list [type] [flags]
FLAGS —all List all note types —all-branches List notes from all branches in the current repository -g, —global List global notes only -h, —help help for list —json Output in JSON format —tag Filter notes by a specific tag -t, —type Note type to list (default: inbox) -w, —workspaces List notes from all workspaces
EXAMPLES nb list # List current notes nb list llm # List LLM notes nb list learn # List learning notes nb list docs # List documentation notes
nb search
Search for notes matching the query.
USAGE nb search <query> [flags]
FLAGS —all Search all workspaces -h, —help help for search —limit Maximum results (default: 50) -t, —type Filter by note type
EXAMPLES nb search “authentication” # Search in current workspace nb search “todo” —all # Search all workspaces nb search “api” -t llm # Search only LLM notes
nb concept
Create, list, and link project concepts to maintain durable architectural knowledge.
USAGE nb concept [command]
COMMANDS dir Get the concepts directory for the current workspace link Link concepts, plans, and notes list List all concepts new Create a new concept path Get the path to a concept directory search Search concepts across all workspaces
Flags: -h/—help
EXAMPLES # Find concepts related to authentication nb concept search “auth” —ecosystem —files-only —json
# List all concepts in the ecosystem nb concept list —ecosystem —json
# Get the path to a concept and read it nb concept path authentication cat $(nb concept path authentication)/overview.md
# Create a new concept and link it nb concept new “Rate Limiter” —json nb concept link plan rate-limiter myproject:plans/implement-rate-limit nb concept link concept rate-limiter core:workspace-model
Use “nb concept [command] —help” for more information.
nb concept new
Create a new concept with manifest and overview files.
USAGE nb concept new <title> [flags]
FLAGS -g, —global Create in global workspace -h, —help help for new —json Output result as JSON
EXAMPLES nb concept new “Rate Limiter” nb concept new “Authentication System” —json nb concept new “Shared Utils” —global
nb concept list
List all concepts in the current workspace, ecosystem, or across all workspaces.
By default, lists concepts in the current workspace only. Use —ecosystem to list concepts from all projects within the current ecosystem. Use —all-workspaces to list concepts from all discovered workspaces globally.
USAGE nb concept list [flags]
FLAGS —all-workspaces List concepts from all discovered workspaces globally —ecosystem List concepts from all projects within the current ecosystem -h, —help help for list —json Output result as JSON
EXAMPLES nb concept list nb concept list —ecosystem —json nb concept list —all-workspaces —json
nb concept search
Search for a query string within concept files across the entire ecosystem.
USAGE nb concept search <query> [flags]
FLAGS —ecosystem Search only within the current ecosystem —files-only Output only file paths, one per line -h, —help help for search —json Output result as JSON
EXAMPLES nb concept search “auth” nb concept search “session” —ecosystem —json nb concept search “workspace” —ecosystem —files-only —json
nb concept dir
Returns the absolute path to the concepts directory in the notebook linked to the current workspace.
USAGE nb concept dir [flags]
FLAGS -h, —help help for dir
EXAMPLES nb concept dir ls $(nb concept dir)
nb concept link
Link a concept to related concepts, plans, or notes.
USAGE nb concept link [command]
COMMANDS concept Link a concept to another concept note Link a note to a concept plan Link a plan to a concept skill Link a skill to a concept
Flags: -h/—help
EXAMPLES nb concept link plan auth myproject:plans/jwt-refactor nb concept link note auth myproject:inbox/auth-history.md nb concept link concept auth grovetools:session-tracking nb concept link skill auth concept-maintainer
Use “nb concept link [command] —help” for more information.
nb concept link concept
Add a concept-to-concept reference in the source concept’s manifest. Use workspace:concept-id format to link concepts across workspaces.
USAGE nb concept link concept <source-concept-id> <target-concept-id> [flags]
FLAGS -h, —help help for concept —json Output result as JSON
EXAMPLES nb concept link concept auth grovetools:session-tracking nb concept link concept rate-limiter core:workspace-model —json
nb concept link note
Add a note reference to a concept’s manifest using an alias.
USAGE nb concept link note <concept-id> <note-alias> [flags]
FLAGS -h, —help help for note —json Output result as JSON
EXAMPLES nb concept link note authentication myproject:inbox/auth-history.md nb concept link note rate-limiter myproject:inbox/rfc.md —json
nb concept link plan
Add a plan reference to a concept’s manifest using an alias.
USAGE nb concept link plan <concept-id> <plan-alias> [flags]
FLAGS -h, —help help for plan —json Output result as JSON
EXAMPLES nb concept link plan rate-limiter myproject:plans/implement-rate-limit nb concept link plan authentication flow:plans/jwt-refactor —json
nb concept link skill
Add a skill reference to a concept’s manifest. Use ‘grove skills list’ to see available skills.
USAGE nb concept link skill <concept-id> <skill-name> [flags]
FLAGS -h, —help help for skill —json Output result as JSON
EXAMPLES grove skills list # discover available skills nb concept link skill auth concept-maintainer nb concept link skill flow-execution flow-qb —json
nb concept path
Returns the absolute path to a concept’s directory.
USAGE nb concept path <concept-id> [flags]
FLAGS -h, —help help for path —json Output result as JSON
EXAMPLES nb concept path authentication cat $(nb concept path authentication)/overview.md nb concept path auth —json | jq -r .path
nb workspace
Manage workspace registrations and settings. Most of this functionality is now handled by ‘grove ws’.
USAGE nb workspace [command]
COMMANDS current Show current workspace (use ‘nb context’ instead)
Flags: -h/—help
Use “nb workspace [command] —help” for more information.
nb workspace current
This command is deprecated. Please use ‘nb context’ for more detailed information.
USAGE nb workspace current [flags]
FLAGS -h, —help help for current
nb archive
Move notes to the archive directory.
USAGE nb archive [files…] [flags]
FLAGS —dry-run Show what would be archived without doing it —force Skip confirmation prompt -h, —help help for archive —older-than Archive notes older than N days (default: 0)
EXAMPLES nb archive note1.md note2.md # Archive specific files nb archive —older-than 30 # Archive notes older than 30 days nb archive —dry-run # Show what would be archived
nb context
Display information about the current workspace context.
This is useful for integration with other tools like Neovim.
USAGE nb context [flags]
FLAGS -h, —help help for context —json Output as JSON —path Get specific path (current, llm, learn)
nb git
Provides commands for initializing and managing Git repositories directly within notebook storage locations.
USAGE nb git [command]
COMMANDS commit Stage and commit changes in the current notebook’s repository init Initialize a Git repository in the current workspace’s notebook directory
Flags: -h/—help
Use “nb git [command] —help” for more information.
nb git commit
Convenience command to stage and commit changes in the notebook repository. If no files are specified, all changes are staged.
USAGE nb git commit [files…] [flags]
FLAGS -h, —help help for commit -m, —message Commit message (default: “Update notes”)
nb git init
Initializes a Git repository in the notebook workspace directory for the current context.
This command performs three actions:
- Runs ‘git init’ in the target notebook directory.
- Creates a ‘.gitignore’ file with sensible defaults for notebook content.
- Creates a ‘.grove/notebook.yml’ marker file to identify this as a notebook repository.
Target directory options:
- Default: Current workspace’s notebook directory (e.g., workspaces/my-project/)
- —global: The global notebook directory (global/)
- —root: The entire notebook root containing all workspaces
USAGE nb git init [flags]
FLAGS -g, —global Initialize in the global notebook directory -h, —help help for init -r, —root Initialize in the notebook root (all workspaces in one repo)
nb init
Initialize nb in the current directory by registering it as a workspace.
This command will:
- Register the current directory as a workspace
- Create necessary directory structure
USAGE nb init [flags]
FLAGS -h, —help help for init —minimal Only create global workspace
nb migrate
Migrate notes to standardized format with proper frontmatter.
By default, operates on the current workspace context.
USAGE nb migrate [paths…] [flags]
FLAGS —all Apply all fixes —all-workspaces Process all workspaces (requires confirmation) —branch Process specific branch —dry-run Show what would be changed without modifying —ensure-type-in-tags Ensure all notes have their type in the tags array —fix-dates Use file mtime if no date in frontmatter —fix-filenames Standardize filenames to YYYYMMDD-title.md format —fix-ids Generate missing IDs —fix-tags Generate tags from path/repo/branch —fix-titles Extract titles from content if missing —force Overwrite existing frontmatter —global Process global notes instead of current context -h, —help help for migrate —no-backup Don’t create backup files —notebook Specify which notebook to migrate (default: uses default notebook from config) —preserve-timestamps Preserve original file modification times (default: true) —recursive Process directories recursively (default: true) —rename-current-to-inbox Rename ‘current’ note type directories to ‘inbox’ and update notes —report Show migration report (default: true) —source-notebook Source notebook for workspace migration (default: default notebook) —structure Migrate from old repos/{workspace}/{branch} structure to new notebooks structure —target Target directory for migration (default: uses notebook root_dir from config) —target-notebook Target notebook for workspace migration (default: same as source) —type Process only specific note type —verbose Show detailed output —workspace Process specific workspace —workspaces Rename workspaces: ‘old1=new1,old2=new2’ (copies all files, updates frontmatter) -y, —yes Skip confirmation prompts
EXAMPLES nb migrate —dry-run # Preview changes in current context nb migrate —fix-titles # Fix titles in current context nb migrate —global —all # Migrate all global notes nb migrate —workspace myproject —all # Migrate entire workspace
nb move
Move or copy notes to different locations within the note system.
By default, this command moves files (deletes the source after copying). Use —copy to preserve the original file.
You can move notes between:
- Different note types (e.g., from ‘current’ to ‘learn’)
- Different branches (within the same repository)
- Different workspaces/repositories
- From outside the nb system into it
The destination can be specified as:
- A note type: “learn”, “current”, “llm”, etc.
- A full path: “/path/to/destination/”
- Using flags: —workspace, —branch, —type
USAGE nb move [file] [destination] [flags]
FLAGS —branch Target branch (for git repositories) —copy Copy instead of move (preserve original file) —dry-run Preview changes without moving files —force Overwrite existing files at destination -h, —help help for move —migrate Apply nb migrate to standardize the note (default: true) -t, —type Target note type (current, llm, learn, etc.) —workspace Target workspace/repository
EXAMPLES # Move current file to ‘learn’ type in same workspace nb move note.md learn
# Move to different workspace nb move note.md —workspace other-project —type current
# Move from outside nb system into current context nb move /tmp/external-note.md current
# Move with migration (apply formatting/frontmatter fixes) nb move note.md learn —migrate
# Preview what would happen nb move note.md learn —dry-run
# Copy instead of move nb move note.md learn —copy
nb obsidian
Commands for managing nb’s Obsidian plugin integration.
USAGE nb obsidian [command]
COMMANDS install-dev Install the nb Obsidian plugin for development
Flags: -h/—help
Use “nb obsidian [command] —help” for more information.
nb remote
Commands for syncing notes with remote services like GitHub.
USAGE nb remote [command]
COMMANDS sync Sync notes with remote services
Flags: -h/—help
Use “nb remote [command] —help” for more information.
nb remote sync
Syncs notes with configured remote services like GitHub issues and pull requests.
USAGE nb remote sync [flags]
FLAGS -h, —help help for sync —provider Sync only with a specific provider (e.g., github)
nb tmux
Commands for managing nb in dedicated tmux windows.
USAGE nb tmux [command]
COMMANDS tui Open notebook TUI in a dedicated tmux window
Flags: -h/—help
Use “nb tmux [command] —help” for more information.
nb tmux tui
Opens the nb TUI in a dedicated tmux window. If the window already exists, it focuses it without disrupting the session. If not in a tmux session, falls back to running the TUI directly.
USAGE nb tmux tui [flags]
FLAGS -h, —help help for tui —window-name Name of the tmux window (default: notebook)
nb version
Display the version, commit, branch, and build information for grove-notebook
USAGE nb version [flags]
FLAGS -h, —help help for version —json Output version information in JSON format