CLI Reference¶
This document provides a complete reference for the Nexus command-line interface.
Nexus provides a comprehensive command-line interface for all operations. The CLI mirrors the Python API and is ideal for shell scripts, automation, and interactive use.
Installation & Setup¶
# Install Nexus
pip install nexus-ai-fs
# Verify installation
nexus --version
# Get help
nexus --help
nexus <command> --help
Global Options¶
Most commands support these global options:
--config PATH: Path to Nexus config file (nexus.yaml) - All commands--backend [local|gcs]: Backend type (default: local) - Most commands--data-dir PATH: Path to Nexus data directory (can also useNEXUS_DATA_DIRenv var) - All commands--remote-url URL: Remote Nexus server URL (e.g., http://localhost:2026) - File, directory, search, versions, metadata, rebac, mounts, operations commands--remote-api-key KEY: API key for remote authentication - Same as --remote-url--tenant-id TEXT: Zone ID for multi-zone isolation (can also useNEXUS_TENANT_IDenv var)--subject TEXT: Subject in format 'type:id' (e.g., 'user:alice') (can also useNEXUS_SUBJECTenv var)--is-admin: Run operation with admin privileges--admin-capability TEXT: Grant specific admin capability (can specify multiple times)
Remote Mode - Two Ways to Connect:
-
Environment Variables (Recommended - Works for ALL commands):
-
Command-line Flags (Works for most commands):
Note: Memory commands (memory store/query/search/list/get/delete) and workspace commands only support remote mode via NEXUS_URL environment variable, not via --remote-url flag.
File Operations¶
write - Write file content¶
# Basic write
nexus write /workspace/file.txt "Hello World"
# Write from stdin
echo "Hello World" | nexus write /workspace/file.txt --input -
# Write from file
nexus write /workspace/file.txt --input local_file.txt
# Optimistic concurrency control
nexus write /doc.txt "Updated" --if-match abc123
# Create-only mode
nexus write /new.txt "Initial" --if-none-match
# Show metadata
nexus write /doc.txt "Content" --show-metadata
append - Append content to file¶
Append content to an existing file or create a new file. Useful for building log files, JSONL files, and append-only data structures.
# Append to a log file
nexus append /logs/app.log "New log entry\n"
# Append from stdin (useful for piping)
echo "New line" | nexus append /logs/data.txt --input -
# Append from file
nexus append /logs/output.txt --input input.txt
# Build JSONL file incrementally
echo '{"event": "login", "user": "alice"}' | nexus append /logs/events.jsonl --input -
# Optimistic concurrency control
nexus append /doc.txt "New content" --if-match abc123
# Show metadata after appending
nexus append /log.txt "Entry\n" --show-metadata
Options: - --input, -i: Read from file or stdin (use - for stdin) - --if-match: Only append if current ETag matches (prevents conflicts) - --force: Force append without version check (dangerous) - --show-metadata: Display metadata (etag, version, size) after appending
cat - Display file contents¶
# Read file
nexus cat /workspace/file.txt
# Show metadata (etag, version)
nexus cat /workspace/file.txt --metadata
# Time-travel: Read at historical operation point
nexus cat /workspace/file.txt --at-operation op_abc123
rm - Delete file¶
# Delete with confirmation
nexus rm /workspace/file.txt
# Force delete (no confirmation)
nexus rm /workspace/file.txt --force
cp/copy - Copy files¶
# Simple copy
nexus cp /source.txt /dest.txt
# Smart copy with deduplication
nexus copy /source.txt /dest.txt
move - Move files¶
Directory Operations¶
mkdir - Create directory¶
# Create directory
nexus mkdir /workspace/data
# Create with parents
nexus mkdir /workspace/deep/nested/dir --parents
rmdir - Remove directory¶
# Remove empty directory
nexus rmdir /workspace/data
# Remove recursively
nexus rmdir /workspace/data --recursive --force
ls - List files¶
# List directory
nexus ls /workspace
# Recursive listing
nexus ls /workspace --recursive
# Detailed listing
nexus ls /workspace --long
# Time-travel: List at historical point
nexus ls /workspace --at-operation op_abc123
tree - Display directory tree¶
Search Operations¶
glob - Find files by pattern¶
# Find Python files
nexus glob "**/*.py"
# Find in specific path
nexus glob "*.txt" /workspace
# Show details
nexus glob -l "**/*.py"
# Filter by type
nexus glob -t f "**/*" # Only files
nexus glob -t d "/workspace/*" # Only directories
grep - Search file contents¶
# Basic search
nexus grep "TODO"
# With line numbers
nexus grep -n "error" /workspace
# Only filenames
nexus grep -l "TODO" .
# Count matches
nexus grep -c "import" **/*.py
# Context lines
nexus grep -A 3 -B 3 "def main" # 3 lines before/after
nexus grep -C 5 "class" # 5 lines context
# Case insensitive
nexus grep -i "error"
# Invert match
nexus grep -v "test" file.txt
# Search PDFs (parsed text)
nexus grep "revenue" -f "**/*.pdf" --search-mode=parsed
Version Tracking¶
versions history - Show version history¶
# Show all versions
nexus versions history /workspace/file.txt
# Limit results
nexus versions history /workspace/file.txt --limit 10
versions get - Get specific version¶
versions diff - Compare versions¶
# Compare versions 1 and 3
nexus versions diff /workspace/file.txt --v1 1 --v2 3
# Show content diff
nexus versions diff /workspace/file.txt --v1 1 --v2 3 --mode content
versions rollback - Rollback to version¶
Workspace Management¶
workspace register - Register workspace¶
# Register workspace
nexus workspace register /my-workspace --name main --description "My workspace"
# With metadata
nexus workspace register /my-workspace --name main --created-by alice
workspace list - List workspaces¶
workspace info - Show workspace info¶
workspace snapshot - Create snapshot¶
# Create snapshot
nexus workspace snapshot /my-workspace --description "Before refactor"
# With tags
nexus workspace snapshot /my-workspace --description "Stable" --tag stable --tag v1.0
workspace log - Show snapshot history¶
# Show all snapshots
nexus workspace log /my-workspace
# Limit results
nexus workspace log /my-workspace --limit 10
workspace restore - Restore snapshot¶
workspace diff - Compare snapshots¶
workspace unregister - Unregister workspace¶
Memory Management¶
memory register - Register memory¶
# Register memory
nexus memory register /knowledge-base --name kb --description "Knowledge base"
# With metadata
nexus memory register /kb --name kb --created-by alice
memory list-registered - List memories¶
memory info - Show memory info¶
memory unregister - Unregister memory¶
memory store - Store memory¶
memory search - Semantic search memories¶
Semantic Search¶
search init - Initialize semantic search¶
# Initialize with OpenAI
nexus search init --provider openai --model text-embedding-3-small
# Initialize with mock provider (testing)
nexus search init --provider mock
search index - Index documents¶
# Index all documents
nexus search index
# Index specific path
nexus search index /docs
# Index single file
nexus search index /docs/README.md
search query - Search documents¶
# Basic search
nexus search query "How does authentication work?"
# Limit results
nexus search query "database migration" --limit 5
# Search in specific path
nexus search query "API endpoints" --path /docs
search stats - Show statistics¶
LLM Document Reading¶
AI-powered document question answering with citations and cost tracking.
llm read - Ask questions about documents¶
# Basic question answering
nexus llm read /reports/q4.pdf "What were the top 3 challenges?"
# Query multiple documents
nexus llm read "/docs/**/*.md" "How does authentication work?"
# Use different model
nexus llm read /report.pdf "Summarize this" --model gpt-4o
nexus llm read /report.pdf "Question" --model anthropic/claude-sonnet-4.5
# Stream response
nexus llm read /long-report.pdf "Analyze trends" --stream
# Get detailed output with citations
nexus llm read /docs/**/*.md "Explain the API" --detailed
# Disable semantic search (read full document)
nexus llm read /report.txt "Summarize" --no-search
# Use keyword search instead of semantic
nexus llm read /docs/**/*.md "API endpoints" --search-mode keyword
# Use with remote server
export NEXUS_URL=http://localhost:2026
export NEXUS_API_KEY=your-api-key
nexus llm read /doc.pdf "Question"
Options: - --model TEXT: LLM model to use (default: claude-sonnet-4) - --max-tokens INTEGER: Maximum tokens in response (default: 1000) - --api-key TEXT: API key for LLM provider (or set ANTHROPIC_API_KEY/OPENAI_API_KEY/OPENROUTER_API_KEY) - --no-search: Disable semantic search (read entire document) - --search-mode [semantic|keyword|hybrid]: Search mode for context retrieval (default: semantic) - --stream: Stream the response (show output as it's generated) - --detailed: Show detailed output with citations and metadata
Supported Models:
Anthropic Claude (set ANTHROPIC_API_KEY): - claude-sonnet-4 - Balanced performance (recommended) - claude-opus-4 - Most capable - claude-haiku-4 - Fastest and cheapest
OpenAI GPT (set OPENAI_API_KEY): - gpt-4o - Latest GPT-4 - gpt-4o-mini - Faster and cheaper
OpenRouter (set OPENROUTER_API_KEY - 100+ models): - anthropic/claude-sonnet-4.5 - Latest Claude - anthropic/claude-haiku-4.5 - Fast Claude - openrouter/google/gemini-pro-1.5 - Google Gemini - See all: https://openrouter.ai/models
Examples:
# Document Q&A
nexus llm read /manual.pdf "How do I configure SSL?"
# Code documentation
nexus llm read "/src/**/*.py" "What design patterns are used?"
# Research analysis
nexus llm read "/papers/**/*.pdf" "Compare methodologies" --detailed
# Report summarization
nexus llm read "/reports/*.txt" "Summarize key metrics" --stream
# Multi-language
nexus llm read /doc.pdf "่ฏท็จไธญๆๆป็ป" --model claude-sonnet-4
See LLM Document Reading API for Python SDK usage and advanced examples.
Permissions (ReBAC)¶
rebac create - Create relationship¶
# Make alice a member of eng-team
nexus rebac create agent alice member-of group eng-team
# Give alice viewer access to file
nexus rebac create agent alice direct_viewer file file123
# With tenant isolation (via flag)
nexus rebac create agent alice member-of group eng-team --tenant-id org_acme
# With tenant isolation (via environment variable)
export NEXUS_TENANT_ID=org_acme
nexus rebac create agent alice member-of group eng-team
# With expiration
nexus rebac create agent bob direct_viewer file secret --expires 2025-12-31T23:59:59
rebac check - Check permission¶
rebac explain - Explain permission check¶
# Explain why alice has read permission on file
nexus rebac explain agent alice read file file123
# Show detailed path information
nexus rebac explain agent alice read file file123 --verbose
# Explain why permission is denied
nexus rebac explain agent bob write workspace main
Output:
โ GRANTED
Reason: agent:alice has 'read' on file:file123 (expanded to relations: viewer) via parent inheritance
Access granted via:
โข Checking read on file:file123
โ Expanded to relations: viewer
โข Checking viewer on file:file123
โ Union of: direct_viewer, parent_viewer, editor
โข Checking parent_viewer on file:file123
โ Via parent relationship:
Tupleset: parent
Computed userset: viewer
Found parent: workspace:main
rebac expand - Find all subjects with permission¶
rebac delete - Delete relationship¶
rebac namespace-create - Create custom namespace¶
# Create from config file (JSON/YAML)
nexus rebac namespace-create document --config-file document.json
# Create inline
nexus rebac namespace-create project \
--relations owner \
--relations maintainer \
--relations contributor \
--relations viewer:union:maintainer,contributor,owner \
--permission read:viewer \
--permission write:maintainer,owner \
--permission admin:owner
Config file format (JSON):
{
"relations": {
"owner": {},
"editor": {},
"viewer": {"union": ["editor", "owner"]}
},
"permissions": {
"read": ["viewer", "editor", "owner"],
"write": ["editor", "owner"],
"delete": ["owner"]
}
}
rebac namespace-list - List namespaces¶
Output:
ReBAC Namespaces
โโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Object Type โ Relations โ Permissions โ Created โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ file โ owner, editor โ read, write โ 2025-10-25 โ
โ memory โ owner, viewer โ read, write โ 2025-10-25 โ
โ document โ owner, editor โ read, write โ 2025-10-25 โ
โโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
rebac namespace-get - View namespace config¶
# View file namespace (YAML)
nexus rebac namespace-get file
# JSON output
nexus rebac namespace-get memory --format json
Output:
object_type: file
config:
relations:
owner: {}
editor: {}
viewer:
union: [editor, owner]
permissions:
read: [viewer, editor, owner]
write: [editor, owner]
created_at: '2025-10-25T17:14:30+00:00'
rebac namespace-delete - Delete namespace¶
# Delete with confirmation
nexus rebac namespace-delete document
# Skip confirmation
nexus rebac namespace-delete document --yes
Warning: This does not delete existing tuples for this object type.
Backend Mounts¶
mounts list - List mounts¶
mounts add - Add mount¶
# Add GCS mount
nexus mounts add /personal/alice gcs '{"bucket":"alice-bucket"}' --priority 10
# Add local mount
nexus mounts add /shared local '{"path":"/shared-data"}' --priority 5
mounts info - Show mount info¶
mounts remove - Remove mount¶
Server & Mounting¶
serve - Start RPC server¶
# Start server (default: localhost:8765)
nexus serve
# Specify host and port
nexus serve --host 0.0.0.0 --port 2026
# With specific data directory
nexus serve --data-dir /var/lib/nexus
mount - Mount as filesystem¶
# Mount Nexus as FUSE filesystem
nexus mount /mnt/nexus
# Mount with specific data directory
nexus mount /mnt/nexus --data-dir ./nexus-data
unmount - Unmount filesystem¶
Advanced Operations¶
ops log - View operation history¶
# Show recent operations
nexus ops log
# Limit results
nexus ops log --limit 20
# Filter by type
nexus ops log --type write
undo - Undo last operation¶
work - Query work items¶
size - Calculate size¶
find-duplicates - Find duplicate files¶
sync - One-way sync¶
Plugins & Skills¶
plugins list - List plugins¶
skills - Manage AI skills¶
# Discover and list skills
nexus skills list
nexus skills list --tier agent
nexus skills show my-analyzer
# Create and manage skills
nexus skills create my-skill --description "Description"
nexus skills fork code-reviewer my-fork
# Approval workflow (requires database)
nexus skills submit-approval my-analyzer \
--submitted-by alice \
--reviewers bob,charlie \
--comments "Ready for team use"
nexus skills list-approvals --status pending
nexus skills approve <approval-id> --reviewed-by bob
nexus skills reject <approval-id> --reviewed-by bob --comments "Needs work"
# Export and share
nexus skills export my-analyzer --output skill.zip
# Full help
nexus skills --help
workflows - Workflow automation¶
Environment Variables¶
Key environment variables for configuration:
# Remote mode (takes priority over local)
export NEXUS_URL=http://localhost:8765
export NEXUS_API_KEY=your-api-key
# Local mode - Data directory
export NEXUS_DATA_DIR=/path/to/data
# Zone ID
export NEXUS_TENANT_ID=org_acme
# Subject identity
export NEXUS_SUBJECT=user:alice
# Database URL (PostgreSQL) - Required for skills approval workflow
export NEXUS_DATABASE_URL=postgresql://user/pass@localhost/nexus
# GCS configuration
export GCS_PROJECT_ID=my-project
export GCS_BUCKET_NAME=my-bucket
Remote vs Local Priority: - If NEXUS_URL is set, all commands use remote mode (connect to server) - Otherwise, commands use local mode with NEXUS_DATA_DIR
Configuration File¶
Create nexus.yaml for persistent configuration:
# Backend configuration
backend:
type: local
data_dir: ./nexus-data
# Or use GCS
backend:
type: gcs
gcs_bucket: my-bucket
gcs_project: my-project
# Multi-zone
zone_id: org_acme
# Subject identity
subject: user:alice
# Permissions
enforce_permissions: true
# Database (optional)
database_url: postgresql://user/pass@localhost/nexus
Then use it:
CLI vs Python API Comparison¶
| CLI Command | Python API Equivalent |
|---|---|
nexus write /file.txt "data" | nx.write("/file.txt", b"data") |
nexus append /file.txt "data" | nx.append("/file.txt", b"data") |
nexus cat /file.txt | nx.read("/file.txt") |
nexus ls /workspace | nx.list("/workspace") |
nexus glob "*.py" | nx.glob("*.py") |
nexus grep "TODO" | nx.grep("TODO") |
nexus versions history /file.txt | nx.list_versions("/file.txt") |
nexus workspace snapshot /ws | nx.workspace_snapshot("/ws") |
nexus search query "auth" | await nx.semantic_search("auth") |
Common CLI Workflows¶
1. Initialize and use Nexus¶
# Set data directory
export NEXUS_DATA_DIR=./my-nexus
# Write files
nexus write /docs/README.md "# My Project"
nexus write /src/main.py "print('hello')"
# List files
nexus ls / --recursive
# Search
nexus grep "hello" /src
2. Version tracking workflow¶
# Write initial version
nexus write /config.json '{"version": "1.0"}'
# Update file
nexus write /config.json '{"version": "2.0"}'
# View history
nexus versions history /config.json
# Rollback
nexus versions rollback /config.json --version 1
3. Workspace snapshot workflow¶
# Register workspace
nexus workspace register /my-project --name main
# Make changes
nexus write /my-project/file.txt "changes"
# Create snapshot
nexus workspace snapshot /my-project --description "Before refactor"
# Make more changes
nexus write /my-project/file.txt "more changes"
# Restore if needed
nexus workspace restore /my-project --snapshot 1
4. Remote server workflow¶
# Start server (in one terminal)
nexus serve --host 0.0.0.0 --port 8765 --api-key secret123
# Use remote mode via flag (in another terminal)
nexus --remote-url http://localhost:8765 --remote-api-key secret123 ls /
nexus --remote-url http://localhost:8765 --remote-api-key secret123 write /file.txt "data"
# Or set environment variables
export NEXUS_URL=http://localhost:8765
export NEXUS_API_KEY=secret123
# Now all commands use remote mode
nexus write /workspace/file.txt "remote data"
nexus cat /workspace/file.txt
nexus memory store "Important fact" --scope user
nexus workspace snapshot /my-workspace --description "Checkpoint"
5. Multi-backend workflow¶
# Use local backend
nexus --backend local ls /
# Use GCS backend
nexus --backend gcs --gcs-bucket my-bucket ls /
See Also¶
- Getting Started - Installation
- File Operations - Python API equivalent
- RPC API - Remote access
Next Steps¶
- Try common workflows
- Set up environment variables
- Create a config file