neemee-cli
Command-line client for the Neemee notes API.
Install
npm install -g neemee-cliRequires Node.js 18+.
Setup
Generate an API key at neemee.app/settings → API Keys (select read and/or write scopes). The CLI looks for a key in this order:
NEEMEE_API_KEYenvironment variable (recommended for shells/scripts/CI)~/.config/neemee/config.json(set vianeemee config set-key)
Option 1 — environment variable (add to ~/.zshrc or ~/.bashrc):
export NEEMEE_API_KEY="your-api-key-here"
# Optional: override base URL (default: https://neemee.app)
# export NEEMEE_BASE_URL="http://localhost:3100"Option 2 — config file:
neemee config set-key <your-api-key>Then verify:
neemee config whoamiCommands
Notes
neemee notes list [--search <q>] [--notebook <id>] [--limit 20] [--page 1]
neemee notes get <id>
neemee notes create --content "My note content" [--title "Title"] [--url <url>] [--notebook <id>]
neemee notes update <id> --content "Updated content" [--title "..."] [--url <...>] [--notebook <id|none>]
neemee notes delete <id>Note:
notes updaterequires--content— the REST API treatscontentas mandatory on PUT even for a title-only edit.
Notebooks
neemee notebooks list [--search <q>] [--limit 20] [--page 1]
neemee notebooks get <id>
neemee notebooks create --name "My notebook" [--description "..."]
neemee notebooks update <id> [--name "..."] [--description "..."]
neemee notebooks delete <id>Project management
Manage projects, tasks, people, and organizations — and link notes/notebooks to any of them. Read operations need a read scope; create/update/delete need write.
Projects
neemee projects list [--search <q>] [--status ACTIVE|ON_HOLD|COMPLETED|ARCHIVED] [--parent <id>] [--limit 20] [--page 1]
neemee projects get <id>
neemee projects create --name "Q3 Launch" [--description "..."] [--status ON_HOLD] [--parent <projectId>]
neemee projects update <id> [--name "..."] [--description "..."] [--status COMPLETED] [--parent <id>]
neemee projects delete <id> # subprojects and tasks are detached, not deletedTasks
neemee tasks list [--search <q>] [--status TODO|IN_PROGRESS|BLOCKED|DONE|CANCELLED|ARCHIVED] [--project <id>] [--assignee <id>]
neemee tasks get <id>
neemee tasks create --title "Draft spec" [--description "..."] [--status IN_PROGRESS] [--due 2026-07-01] [--project <id>] [--assignee <personId>]
neemee tasks update <id> [--title "..."] [--status DONE] [--due <date>] [--project <id>] [--assignee <id>]
neemee tasks delete <id>People
neemee people list [--search <q>] [--organization <id>]
neemee people get <id>
neemee people create --name "Ada Lovelace" [--email ada@example.com] [--phone "..."] [--role "Advisor"] [--org <orgId>] [--org "<orgId2>:CTO"]
neemee people update <id> [--name "..."] [--email <...>] [--role "..."] [--org <orgId>:Title] [--clear-orgs]
neemee people delete <id>
--org <orgId[:title]>is repeatable and sets organization affiliations (with an optional per-org title). Onupdate, passing--orgreplaces all affiliations; use--clear-orgsto remove them all.
Organizations (alias: orgs)
neemee orgs list [--search <q>]
neemee orgs get <id>
neemee orgs create --name "Acme Co" [--description "..."] [--website https://acme.example]
neemee orgs update <id> [--name "..."] [--description "..."] [--website <url>]
neemee orgs delete <id>Links — attach a note or notebook to a project, task, person, or organization:
neemee links create --target-type PROJECT|TASK|PERSON|ORGANIZATION --target-id <id> (--note <noteId> | --notebook <notebookId>)
neemee links list (--target-type <type> --target-id <id> | --note <noteId> | --notebook <notebookId>)
neemee links delete <linkId>For
updatecommands, only the flags you pass are changed; pass an empty string (e.g.--website "") to clear an optional field.
Search
Shortcut for notes list --search:
neemee search "<query>"Searches across content, note title, URL, source domain, notebook name, and frontmatter values. To search notebooks instead, use neemee notebooks list --search "<query>".
Frontmatter format guide
neemee frontmatter-guide [--type basic|research|task|article]Prints a reference guide with examples for the YAML frontmatter format Neemee uses on notes.
Configuration
neemee config set-key <key> # Store your API key
neemee config set-url <url> # Override base URL (default: https://neemee.app)
neemee config show # Show current config (key masked)
neemee config whoami # Verify key and show user infoConfig is stored at ~/.config/neemee/config.json.
Scopes
API keys have one or more scopes that control access:
| Scope | Access |
|---|---|
read |
GET endpoints only |
write |
POST, PUT, DELETE + all read operations |
admin |
All operations (future use) |
Development
npm install
npm run build
node dist/index.js --helpFor local development against a Neemee instance running on a non-default port:
neemee config set-url http://localhost:3100API Reference
Full REST API documentation: neemee-frontend/docs/api/REST_API.md
License
MIT