Overview
nogic [COMMAND] [OPTIONS]
Global Options:
--version, -V — Show version
--help — Show help
login
Authenticate with your Nogic API key.
You’ll be prompted to enter your API key. Get one from your Dashboard.
Options:
--api-key, -k — Pass the API key directly instead of being prompted (also reads from NOGIC_API_KEY env var)
Example:
> Get your API key from the Nogic dashboard.
Opened https://www.nogic.dev/dashboard
Paste your API key:
> Logged in as user_01a...
API key saved. You're ready to go.
init
Initialize a Nogic project in a directory.
Arguments:
DIRECTORY — Path to initialize (default: current directory)
Options:
--name, -n — Set the project name
--link — Re-link to an existing project instead of creating a new one
--project-id, -p — Use a specific project ID
--yes, -y — Accept defaults and skip all prompts
If a project already exists for the directory, Nogic will prompt you to reuse it or wipe the graph data and start fresh.
Example:
> Created project 'my-project'
────────────────────────────────── nogic init ──────────────────────────────────
Directory: /path/to/my-project
Project: my-project
Project ID: a1b2c3d4-5678-90ab-cdef-1234567890ab
Ready to sync: nogic watch
watch
Watch a directory for file changes and sync automatically.
Performs an initial full scan, then watches for file changes and syncs them in real-time. Press Ctrl+C to stop.
Arguments:
DIRECTORY — Path to watch (default: current directory)
Options:
--ignore — Patterns to ignore (can be used multiple times)
--format — Output format: text (default) or json (NDJSON events)
Example:
────────────────────────────────── nogic watch ─────────────────────────────────
/path/to/my-project
Project: a1b2c3d4...
Scanning files ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:00
Found 42 supported files (50 total)
Phase 1: Uploading 42 files in 3 batches...
Uploading batches ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3/3 0:00:02
Uploaded 42 files (42 staged, 0 unchanged)
Phase 2: Processing...
Resolving imports ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:00
Creating symbol nodes ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120/120 0:00:00
Building call graph ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:01
Linking relationships ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:00
Generating embeddings ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:01
Saving to database ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:00
Indexed 42 files, 120 nodes, 85 edges
> Initial sync complete. Watching for changes... (Ctrl+C to stop)
When --format json is used, output is emitted as newline-delimited JSON events, useful for integrations like the VS Code extension:
{"event": "initial_scan_complete", "timestamp": 1706900000, "files_indexed": 42}
{"event": "ready", "timestamp": 1706900001, "message": "Watching for changes..."}
{"event": "synced", "timestamp": 1706900010, "path": "src/utils.py"}
Run nogic watch in a separate terminal while you code. Changes are synced within seconds.
sync
One-time sync of all files to the backend.
Arguments:
DIRECTORY — Path to sync (default: current directory)
Options:
--ignore — Patterns to ignore (can be used multiple times)
--format — Output format: text (default) or json
Example:
────────────────────────────────── nogic sync ──────────────────────────────────
/path/to/my-project
Project: a1b2c3d4...
Scanning files ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:00
Found 42 supported files (50 total)
Phase 1: Uploading 42 files in 3 batches...
Uploading batches ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3/3 0:00:02
Uploaded 42 files (42 staged, 0 unchanged)
Phase 2: Processing...
Resolving imports ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:00
Creating symbol nodes ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120/120 0:00:00
Building call graph ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:01
Linking relationships ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:00
Generating embeddings ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:01
Saving to database ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:00
Indexed 42 files, 120 nodes, 85 edges
> Done.
reindex
Wipe all graph data and re-index the entire project from scratch.
nogic reindex [DIRECTORY]
Arguments:
DIRECTORY — Path to reindex (default: current directory)
Options:
--yes, -y — Skip the confirmation prompt
--ignore — Patterns to ignore (can be used multiple times)
--format — Output format: text (default) or json
Example:
> Deleted 120 nodes
Scanning files ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:00
Found 42 supported files (50 total)
Phase 1: Uploading 42 files in 3 batches...
Uploading batches ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3/3 0:00:02
Uploaded 42 files (42 staged, 0 unchanged)
Phase 2: Processing...
Resolving imports ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:00
Creating symbol nodes ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120/120 0:00:00
Building call graph ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:01
Linking relationships ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:00
Generating embeddings ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:01
Saving to database ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42/42 0:00:00
Indexed 42 files, 120 nodes, 85 edges
> Reindex complete!
Old nodes deleted: 120
Run 'nogic watch' to continue monitoring for changes.
This deletes all existing graph data for the project. Use when the index seems out of date or after major refactoring.
status
Show project configuration and sync state.
Options:
--format — Output format: text (default) or json
Example:
───────────────────────────────── nogic status ─────────────────────────────────
Local Configuration
Directory: /path/to/my-project
Project ID: a1b2c3d4-5678-90ab-cdef-1234567890ab
Project Name: my-project
Directory Hash: 35dec96987335217...
Logged in: Yes
Backend Status
Project found: my-project
Project ID: a1b2c3d4-5678-90ab-cdef-1234567890ab
Created: 2026-02-05 07:01:20
When --format json is used, output is a single JSON object:
{
"project_name": "my-project",
"project_id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"directory": "/path/to/my-project",
"logged_in": true,
"backend": {
"status": "connected",
"project_name": "my-project",
"project_id": "a1b2c3d4-5678-90ab-cdef-1234567890ab"
}
}
projects
Manage your Nogic projects.
projects list
Options:
--verbose, -v — Show detailed info including directory hash and timestamps
Example:
──────────────────────────────── nogic projects ────────────────────────────────
3 project(s)
my-project (a1b2c3d4...) *
backend (a1b2c3d4...)
frontend (e5f6g7h8...)
* = current project
projects create
nogic projects create NAME
Options:
--use — Set as current project after creating
--link — Link to the current directory after creating
Example:
> Created project: my-new-project
Project ID: f9e8d7c6-...
projects use
Switch the current project for a directory.
nogic projects use PROJECT_ID
Supports prefix matching — you don’t need the full ID.
Example:
> Now using project: my-project
telemetry
Manage anonymous usage telemetry.
telemetry status
Example:
> Telemetry is enabled
Run `nogic telemetry disable` to opt out
Telemetry helps us improve Nogic. All data is anonymized.
telemetry enable
telemetry disable
You can also disable telemetry via environment variable:
NOGIC_TELEMETRY_DISABLED=1
Supported Languages
Nogic indexes these file types:
| Language | Extensions |
|---|
| Python | .py |
| JavaScript | .js, .jsx |
| TypeScript | .ts, .tsx |
More languages coming soon.
Default Ignore Patterns
These paths are always ignored during sync, watch, and reindex:
Directories: .git/, __pycache__/, .venv/, venv/, env/, node_modules/, .nogic/, dist/, build/, out/, .next/, .nuxt/, .output/, coverage/, htmlcov/, .idea/, .vscode/
Files: .DS_Store, *.pyc, *.swp, *.swo, *.tmp.*, *~, *.min.js, *.min.css, *.bundle.js, *.chunk.js, *.lock, package-lock.json, yarn.lock, pnpm-lock.yaml, *.map, .coverage
Nogic also respects your project’s .gitignore file. Any patterns defined there are applied automatically.
Add custom patterns with the --ignore flag on sync, watch, or reindex.