Developer CLI
v2.6.2Manage your entire business from the terminal
npm i -g @solidnumber/cliWhat's new in v2.6.2
Published 2026-05-13 to npm. npm i -g @solidnumber/cli to upgrade.
--help example. Examples now use <id> placeholders with a pointer to solid auth companies for finding yours. No behavior change.Email capture on solid demo create
Highest-intent moment in the funnel — when a user is about to receive a real phone number, the CLI asks where to send it. Silent when SOLID_DISABLE_TELEMETRY=1, non-TTY, or an email is already on file. Backed by the same captureEmail() helper the auth + feedback verbs use.
Backend: Layer 2 outreach + funnel console
Companion backend ship. Celery beat scans cli_telemetry_events every 5 min, Sarah drafts contextual emails, dedup ledger via cli_outreach_sent. Token-gated operator dashboard at /api/v1/cli/funnel.html + per-machine timeline.
Q-Chain auditor verbs (v2.6.0)
solid qchain export / verify / audit-key — external auditors (insurance, SOC 2) validate the tamper-evident agent-action chain offline against /.well-known/qchain.json. Recompute every SHA-256, verify every Ed25519 signature, no Solid# access required.
Tenant gate + predict verbs
solid tenant gate-debug <cid> returns the compute-budget gate's full decision with a machine-readable reason code. solid predict commands (deal-close / no-show / payment-late / targets) surface AI predictions for the operator.
Quick Start
Four commands to go from zero to managing your business in the terminal.
One command. Detects your OS, installs Node if missing, installs the CLI, opens the browser to log you in, wires Claude Code + shell completion. ~60 seconds.
curl -fsSL https://solidnumber.com/install.sh | shiwr -useb https://solidnumber.com/install.ps1 | iexAlready have brew? Skip the curl pipe and install through the package manager you already trust. Pulls in Node automatically as a dependency, gives you brew upgrade for free.
brew install solidnumber/tap/cliPair with solid setup --install-token ist_xxx from the dashboard for zero-browser auth — same magic-link flow as the curl path.
Already have scoop on Windows? Add our bucket and install in two commands. Pulls Node automatically as a dependency, gives you scoop update solid for free.
scoop bucket add solidnumber https://github.com/Solidnumber/scoop-bucket
scoop install solidnumber/solidwinget support is in the backlog — needs a self-contained Windows binary first. Scoop covers the Windows package-manager use case today.
Already logged in to the dashboard? The install-command page mints you a single-use ist_* token (5-min TTL), embeds it in your install command, and the CLI exchanges it for real auth in one paste. No browser-back, no second login. Token rotates on every refresh.
curl -fsSL https://solidnumber.com/install.sh | SOLID_INSTALL_TOKEN=ist_xxx sh$env:SOLID_INSTALL_TOKEN = 'ist_xxx'; iwr -useb https://solidnumber.com/install.ps1 | iexAlready have the CLI installed? solid setup --install-token ist_xxx --yes redeems a fresh token from the dashboard without reinstalling.
npm i -g @solidnumber/clisolid auth login
# Email: you@company.com
# Password: ********
# Logged in to Acme Corp (ID: 42)solid pull
# Pulling pages... 12 files
# Pulling KB entries... 48 files
# Pulling services... 8 files
# Saved to ./my-business/# Edit files in VS Code, Cursor, Vim, or any editor
solid push
# Changes: 2 pages updated, 1 KB entry created
# Push to Acme Corp? (y/n) y
# Pushed successfullyv2.0 — Agent-Ready by Default
BreakingStructured JSON error envelopes — opt-in since 1.10 via SOLID_JSON_V2=1 — are now on by default. Every --json error response ships code, status, hint, docs_url, request_id, and tier/feature/upgrade context. AI agents (Claude Code, Cursor, Codex) work out of the box; humans see the same prose they always did.
$ solid kb get 99 --json
{
"error": {
"code": "NOT_FOUND",
"status": 404,
"message": "KB entry 99 not found",
"hint": "Run \"solid kb list\" to see valid IDs",
"docs_url": "https://solidnumber.com/docs/cli#kb",
"request_id": "req_8f2a3c"
}
}$ SOLID_LEGACY_ERRORS=1 solid kb get 99 --json
Error: KB entry 99 not found
Hint: Run "solid kb list" to see valid IDs
# 1.x scripts that pattern-match prose still work.Migration in 30 seconds
- • You wrote scripts that parse JSON errors: already on the new shape if you set
SOLID_JSON_V2=1— nothing changes. - • You wrote scripts that grep prose error text: set
SOLID_LEGACY_ERRORS=1in your shell or CI to restore the 1.x shape, then migrate when you have time. - • You drive the CLI from an AI agent: do nothing. The new shape is what you wanted all along.
Tenant Graph + Offline Mutations
Shipping in 2.0Your tenant's entire surface — companies, services, products, agents, KB, chains, webhooks — ships as a typed JSON-LD graph. Walk it, query it with SPARQL, diff snapshots, dump it into any RDF store, and write to it from a plane.
Offline BGP runs in-process against the bundled .claude/solid-context.jsonld. Add --server for full SPARQL 1.1 (OPTIONAL, FILTER, property paths, UNION, GROUP BY).
solid graph --query \
"SELECT ?s WHERE { ?s a schema:Service }"
solid graph --query "..." --server # full SPARQL 1.1Lose wifi mid-mutation, the CLI auto-queues. Regain wifi, the next call auto-replays the queue. No flag, no ceremony. Or arm it explicitly with --queue for plane mode.
solid push --queue # arm offline mode
solid push --flush # replay queued mutations
# or just lose connectivity — it auto-queues + auto-replaysStructural diff between a baseline snapshot and the current graph. Exit code is the signal — gate CI on tenant stability.
solid graph --diff baseline.jsonld --offline \
|| echo "tenant drifted"Pipe the tenant graph into Apache Jena Fuseki, Neo4j, Blazegraph, GraphDB, or Neptune. N-Quads is the canonical lossless format every RDF store accepts.
solid graph --dump nquads --offline \
| tdbloader2 --loc /var/jena/db -AI-Driven CLI
StableThe CLI isn't just for humans anymore. Claude Code, Cursor, and Codex can drive every command on your behalf — with four safety layers so a hallucinating AI can't issue refunds or delete customer data.
Auto-detects Claude Code / Cursor / Codex, refreshes company context, launches your AI with everything it needs to reason about your business.
solid auth login
solid ai # launches detected AI for your current company
solid ai --as cursor # force Cursor
solid ai --no-context # skip the context refresh
solid ai --sandbox # safe-preview mode — every mutation intercepted
# Switching company (rare — agencies + multi-tenant operators):
solid auth me # shows your active company_id
solid auth companies # lists every company your account belongs to
solid ai --company <id> # override for this sessionWires a Claude Code SessionStart hook so claude auto-refreshes.claude/CLAUDE.md every session. Idempotent. Undo with --uninstall.
solid install
solid auth login
claude # context already freshFour layers of safety
| Layer | What it does | Where |
|---|---|---|
| Mode cap | Refuses out-of-scope verbs before they parse | CLI (client-side) |
| Destructive gate | refund / delete / cancel / revoke require --yes | CLI (client-side) |
| Sandbox | Every mutation intercepted; AI sees what would happen | CLI dry-run |
| Backend enforcer | Server-side mirror so scripted HTTP can’t bypass | Backend middleware |
--modeScope what the AI can touch. Client and server both enforce, so a compromised HTTP client can't bypass.
solid ai --mode customer
solid ai --mode developer --sandbox--sandboxEvery mutation the AI attempts is intercepted and mocked. The AI's reasoning still works because it sees a “would have worked” shape; nothing lands in real state.
solid ai --sandbox
# → "Sandbox: ON — every mutation intercepted."
# Agent runs freely. Re-run without --sandbox to apply.Every AI-driven request carries X-Solid-Agent,X-Solid-Agent-Mode, andX-Solid-Human-Initiator headers. The backend logs them so you always know what an AI did, in which mode, on behalf of whom.
solid agent activity # 24h summary card
solid agent activity --range 7d # weekly
solid agent activity --events # raw feed
solid agent activity --json # programmaticGlobal Flags
v2.6.2Every command inherits these flags. Set via CLI or environment variable — whichever is more convenient for your shell, script, or CI pipeline.
| Flag | Purpose | Env Var |
|---|---|---|
--dry-run | Preview every mutation, no server writes | SOLID_DRY_RUN=1 |
--json | JSON output (cascades to every subcommand) | SOLID_JSON=1 |
--format json|csv|tsv | List output format for scripting | — |
--sort-by <field> | Sort list output by any field | — |
--order asc|desc | Sort direction | — |
--output <file> | Write output to file (creates parent dirs) | — |
--token <token> | One-shot auth token (never persisted) | SOLID_API_KEY |
--timeout <seconds> | Per-request HTTP timeout (default 30s) | SOLID_TIMEOUT_MS |
--debug | Append method/URL/body context to every error | SOLID_DEBUG=1 |
--no-color | Disable ANSI colors (standard Unix convention) | NO_COLOR=1 |
--raw | Pipeline-clean output — no spinner, no decoration | — |
--no-spinner | Disable progress spinner | — |
-V, --version | Print CLI version | — |
--dry-run intercepts every write. Audit the plan before touching production.
--json, --format csv, and --raw make every command pipe-ready for jq, awk, or xargs.
SOLID_API_KEY env var or --token for headless auth. Never persisted to disk.
solid orders list --all --format csv --sort-by amount --order desc --output orders.csv
# Fetched 1,247 orders across 13 pages
# Saved to orders.csvCommand Reference
Graph (JSON-LD)
solid graphSummary — counts per @type (Company / Service / Product / Agent / KnowledgeBaseEntry / Chain / Webhook / ...)solid graph --list-typesEvery @type present in this tenant's JSON-LD graphsolid graph --type ServiceList every node of a given @type (bare "Service" or prefixed "schema:Service" / "solid:Agent")solid graph kb/42Subgraph centred on KB entry #42 — node + 1-hop neighbourssolid graph kb/42 --hops 2N-hop BFS from any short-form IRI (kb/<id>, service/<id>, tier/builder, shelf/400, ...)solid graph kb/42 --outDirected — only outbound edgessolid graph kb/42 --jsonMachine-readable JSON-LD subgraph (preserves @context)solid graph --offlineWalk .claude/solid-context.jsonld — no network, no auth requiredsolid graph --remoteForce API fetch, ignore any local .jsonldsolid graph --validateAssert every edge target resolves in @graph + per-@type required fields present; exit 1 on errorssolid graph --dump nquadsExport the graph as N-Quads — pipe into Fuseki, Neo4j, Blazegraph, GraphDB, Neptune. Works offline.solid graph --dump turtleExport the graph as Turtle (currently online-only; offline turtle is a future patch)solid graph --diff baseline.jsonldStructural diff between a baseline snapshot and current graph — exits 1 on any change for CI gatessolid graph --query "SELECT ?s WHERE { ?s a schema:Service }"Offline SPARQL BGP — joins, projections, prefixed names, list-valued predicates. No backend required.solid graph --query "..." --serverFull SPARQL 1.1 — OPTIONAL, FILTER, property paths, UNION, GROUP BY, ORDER BY, LIMIT. Routed to the backend.Pull / Push Workflow
Work on your business using any editor. Pull downloads JSON and Markdown files, you edit them locally, then push deploys the changes. A manifest tracks file-to-ID mappings so the CLI knows what to create vs. update.
CMS pages with layout, meta, and content blocks
Knowledge base with YAML frontmatter + content
Company info, website config, module flags
my-business/
├── pages/ # CMS pages
│ ├── home.json
│ ├── about.json
│ └── services.json
├── kb/ # Knowledge base (Markdown)
│ ├── welcome.md
│ ├── services-overview.md
│ └── faq.md
├── services/ # Service catalog (read-only)
│ └── consultation.json
├── solid.config.json # Company info + website settings
└── .solid/
└── manifest.json # Sync metadata (DO NOT EDIT)Push only creates and updates — it never deletes data remotely. Company isolation is enforced: the manifest locks to your company_id. Use --dry-run to preview before pushing.
AI Training
Train your AI agents directly from the terminal. Import docs, test conversations, and audit KB coverage.
Bulk import from Markdown files
solid train import ./company-docs/
# Scanning directory... 24 .md files found
# Importing FAQ entries... 24/24
# Done. 24 KB entries created.Chat with your agents to test training
solid train chat marcus
# Connected to Marcus (Marketing Director)
# Type your message (Ctrl+C to exit)
> What campaigns are running?
Marcus: You have 3 active campaigns:
1. Holiday Sale (email, 2,400 recipients)
2. New Year Promo (SMS, 800 recipients)
3. Referral Push (social, ongoing)Coverage dashboard
solid train status
# KB Coverage Dashboard
# ─────────────────────
# company_identity ████████████ 12 entries
# services ████████░░░░ 8 entries
# faq ██████████░░ 10 entries
# pricing ████░░░░░░░░ 4 entries ⚠ Low
# policies ██████░░░░░░ 6 entries
#
# Gap: pricing needs more entries for AI accuracyAgent Management
Your AI agents learn and improve over time. Inspect their soul (identity + config + learned patterns), review performance scores, track what they've learned, and coordinate multi-agent missions where ADA delegates tasks across your team.
Each agent's identity, configuration, learned patterns, and expertise — built from every interaction
5-criteria scoring after every interaction — tracks accuracy, helpfulness, and tool usage over time
Real-time tokens, latency, cost, revenue attribution, and ROI tracking per agent
View an agent's soul
solid agent soul sarah
#
# Sarah — Agent Soul
#
# ── Identity ────────────────
# Name Sarah
# Type customer_service
# Autonomy Level 4 / 5
#
# ── Performance ─────────────
# Accuracy ████████████░░░ 89%
# Helpfulness █████████████░░ 92%
# Tool Usage ██████████░░░░░ 78%
# Resolution ████████████░░░ 85%
#
# ── Learned Patterns ────────
# customer empathy, refund handling, scheduling
#
# ── 30d Stats ───────────────
# Conversations: 1,420 | Avg Score: 87/100Launch a multi-agent mission
solid agent mission "Create a Valentine's campaign for VIP customers" --execute
# ADA is planning the mission...
# Mission planned: m_8f2a3c
#
# ── Mission Steps ───────────
# ○ Step 1: Marcus — Query CRM for VIP segment, draft strategy
# ○ Step 2: Maya — Design template, write copy, schedule sends
#
# Executing mission...
# ✓ Mission complete — 2 steps executedAgent dashboard
solid agent dashboard
#
# Agent Dashboard
#
# ╭─ Overview ─────────────────────╮
# │ Total Agents: 48 │
# │ Active Tasks: 3 │
# │ 30d Tasks: 1,250 │
# │ Success Rate: 98.8% │
# │ Avg Response: 2.4s │
# ╰───────────────────────────────╯
#
# ── Telemetry ───────────────────
# Tokens: 1,245,000
# Est. Cost: $12.45
# Revenue: $8,420.00
# ROI: 676.5xMulti-Company & Agency Mode
Agencies and developers with access to multiple companies can switch between them instantly. The CLI adapts: single-company users get a simple login, multi-company users get a picker.
Business owner managing their own company. Single login.
Freelancer/employee building for 1–2 clients. Invited to companies.
Manages many companies. Creates new clients, switches between them.
# Create a new client company from a template
solid company create "Mike's Plumbing" --template plumber
# Company created (ID: 47) with plumber template (500+ KB entries)
# Send registration to the client — they get a branded referral email
solid company send-registration mike@mikesplumbing.com --name "Mike"
# Email sent with referral link. Mike onboards + pays on his own time.
# You get referral attribution automatically.
# Keep building while Mike sorts out payment
solid switch "Mike's Plumbing"
solid pull && code .
# Open in VS Code, edit pages/kb, then push
solid switch "Sarah's Salon"
# Switched to Sarah's Salon (ID: 22)solid doctor
Read-onlyRun before filing any bug. solid doctor hits 9 live backend endpoints against your authenticated company and reports status, HTTP code, and response time. Zero writes. Safe on production, safe in CI.
Solid# CLI Doctor
────────────────────────────────────────
● PASS auth 200 489ms /api/v1/auth/me
● PASS kb 200 487ms /api/v1/kb/company
● PASS pages 200 497ms /api/v1/cms/pages
● PASS sites 200 490ms /api/v1/sites
● PASS services 200 106ms /api/v1/services/catalog
● PASS orders 200 107ms /api/v1/orders/
● PASS crm contacts 200 111ms /api/v1/crm/contacts
● PASS leads 200 108ms /api/v1/crm/leads/stats
● PASS billing 200 67ms /api/v1/billing/overview
✓ 9 passed 2462ms total- \u2022 Before filing a support ticket (paste the output)
- \u2022 After switching companies
- \u2022 In CI as a smoke test (
exit 1on any failure) - \u2022 When "the CLI feels slow" — see exact per-endpoint latency
- \u2022
0\u2014 all probes passed - \u2022
1\u2014 one or more probes failed - \u2022
2\u2014 not authenticated (runsolid auth login)
Smart Typo Suggestions
StableWhen you mistype a command, the CLI ranks the nearest matches by prefix, substring, then Levenshtein distance — same UX as gh, cargo, and git.
✗ Unknown command: psh
Did you mean solid push? ✗ Unknown command: dcotor
Did you mean solid doctor? ✗ Unknown command: comapny
Did you mean one of these?
solid company
solid domains ✗ Unknown command: frobnicate
Run solid --help to see all commands.Shell Completion
Tab-completion scripts reflect the live command tree — every new command you build as a developer shows up automatically. No stale static scripts.
bash
solid completion bash > \
/etc/bash_completion.d/solidzsh
solid completion zsh > \
"${fpath[1]}/_solid"fish
solid completion fish > \
~/.config/fish/completions/solid.fishDon't know your shell path? Run solid completion install — it detects your shell, finds the right directory, and wires it up.
API Keys for CI/CD
Create scoped API keys for CI/CD pipelines, LLM agents, and automation scripts. Keys use the sk_solid_ prefix, are stored as SHA-256 hashes, and support fine-grained scopes.
solid auth token create \
-n "GitHub Actions" \
-s kb:read,pages:write \
-e 90
# Key: sk_solid_abc123...
# (Shown once — save immediately.)# 1. Env var (recommended)
export SOLID_API_KEY=sk_solid_abc123
solid push --yes
# 2. One-shot flag (never persisted)
solid push --yes --token sk_solid_abc123
# 3. Pipe (for secret managers)
cat /run/secrets/solid | solid auth login --stdinname: Deploy site to Solid#
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: npm i -g @solidnumber/cli
- name: Smoke-test backend
run: solid doctor
- name: Push changes (dry-run on PR, real on main)
run: solid push --yes
env:
SOLID_API_KEY: ${{ secrets.SOLID_API_KEY }}Available Scopes
kb:readRead knowledge base entrieskb:writeCreate/update/delete KB entriespages:readRead CMS pagespages:writeCreate/update/publish pagesvibe:executeExecute vibe modificationstrain:readRead training datatrain:writeImport/modify training datacompany:readList linked companiescompany:switchSwitch active companycms:blog:readRead blog postscms:blog:writeCreate/update blog postscms:pages:readRead CMS page contentcms:pages:writeCreate/update CMS pagescontent:review:readRead content review pipelinecontent:review:writeApprove/reject content reviewsrag:retrieveRAG context retrievalagents:readList agents, view configs, get resumesagents:writeUpdate custom instructions, personality, settingsagents:dataView reflection history and performanceagents:converseStart/continue agent conversations (full context chain)flows:readList flows, get details, metricsflows:writeCreate, update, activate, pause, archive flowsbrand:readGet brand, CSS variables, voice context, auditbrand:writeCreate and update brand identitywidgets:readList widgets, get embed codes, metricswidgets:writeCreate, update, activate, pause widgetsTelemetry & Privacy
The CLI sends anonymous usage events so we know which commands people actually use. No business data, no KB content, no customer info. Opt out any time.
What we collect
- Command name (
pull,push, etc.) - CLI version + Node version + platform
- Anonymous machine ID (hash, not reversible)
- Success / failure + error class (no stack traces)
What we NEVER collect
- \u2717 KB entries, pages, or any business data
- \u2717 Customer info, contacts, orders
- \u2717 Auth tokens, API keys, passwords
- \u2717 File paths, directory contents, env vars
# One-off (this shell)
export SOLID_NO_TELEMETRY=1
# Permanent (add to ~/.zshrc or ~/.bashrc)
echo 'export SOLID_NO_TELEMETRY=1' >> ~/.zshrcConfiguration
Credentials and preferences live in ~/.solid/. You can override any setting via environment variable — env vars take precedence over the config file.
~/.solid/
├── config.json # active company, base URL, token
├── identity.json # anonymous machine ID for telemetry
└── cli_history.json # recent commands (for solid feedback context)SOLID_API_URL — backend base URLSOLID_API_KEY — auth tokenSOLID_TIMEOUT_MS — HTTP timeoutSOLID_NO_TELEMETRY — opt outSOLID_SKIP_WELCOME — suppress first-run banner- 1. CLI flag (
--token) - 2. Environment variable (
SOLID_API_KEY) - 3. Config file (
~/.solid/config.json) - 4. Interactive prompt (if TTY)
52 Industry Templates
Clone a pre-built template to bootstrap a new company with 500+ KB entries, services, FAQs, and industry-specific AI training.
solid company create "Mike's Plumbing" --template plumber
# Creating company... done
# Applying plumber template:
# ✓ 500+ KB entries (services, FAQ, pricing, policies)
# ✓ Service catalog (leak repair, water heater, drain...)
# ✓ AI agent training (plumbing terminology, pricing rules)
# Company ready at ID: 47MCP Editor Integration
The Solid# MCP Server gives AI editors (Claude Code, Cursor, VS Code Copilot) direct access to 608 tools across 14 servers. Your AI assistant can query customers, update inventory, send emails, and manage your business — all from your editor.
stdio (local development)
npx solid-mcp --stdioHTTP (cloud / production)
https://api.solidnumber.com/mcp/v1With MCP connected, ask your AI: “Show customers who spent over $1000 this month”, “Create a calendar event for tomorrow at 10am”, “Search the knowledge base for return policies”, or “Check Google Workspace connection status”. The AI uses MCP tools to execute real actions on your business.
Integrations
Full lifecycle management for third-party integrations: browse the catalog, create, validate, test, deploy, and rollback — all from the CLI.
solid integrations catalog # Browse available integrations
solid integrations generate # Scaffold a new integration
solid integrations test <id> # Run integration tests
solid integrations deploy <id> # Deploy to production
solid integrations health # Check all integration health
solid integrations logs <id> # View integration logsOpen-Core Model
Free & Open
- CLI binary & all commands
- Pull / Push file workflow
- SDK libraries (JS, Python, Ruby, PHP, Java, Go, .NET)
- Public REST API
- MCP Server (stdio & HTTP)
- Industry templates (52)
Platform (Subscription)
- SmartRouter (multi-model AI routing)
- CognitiveLimiter (AI cost control)
- AI agents (24/7 autonomous)
- 608 MCP tools across 14 servers
- Vibe modifications (natural language)
- Multi-tenant orchestration
- Agent soul, performance scoring, and persistent memory
- Multi-agent missions (ADA coordinates)
Start Building
v2.6.2 on npm · brew + scoop + magic-link installInstall the CLI, pull your business data, and start shipping from the terminal.