sophon-cli
2.0.0
dotnet tool install --global sophon-cli --version 2.0.0
dotnet new tool-manifest
dotnet tool install --local sophon-cli --version 2.0.0
#tool dotnet:?package=sophon-cli&version=2.0.0
nuke :add-package sophon-cli --version 2.0.0
sophon — the Sophon command-line interface
Sophon is an enterprise-grade AI personal assistant — "an intelligent operating system for your digital life." This package is its cross-platform CLI, distributed as a .NET global tool.
Install
dotnet tool install -g sophon-cli
To upgrade:
dotnet tool update -g sophon-cli
Requires the .NET 10 SDK on your machine.
Quick start
# First-run setup wizard (guides you through your first model provider + channel)
sophon onboard
# Start the local Sophon Gateway (or point at a remote one)
sophon start
# Open the interactive chat REPL — streaming tokens, inline approvals, tool progress
sophon
If you run sophon with no arguments, you drop straight into a terminal chat that feels like Claude Code or GitHub CLI: token-by-token streaming, plan trees that update in place, tool-progress lines, inline approval cards, and Ctrl+C to cancel (once to cancel the task, twice to exit).
Full-screen chat (default)
On capable terminals sophon opens a full-screen chat (alternate buffer, like Claude Code or opencode): an app-managed scrollback you scroll with the wheel/PgUp/PgDn, a live subagent status band, bottom-stack approval and question cards with live countdowns, /theme with live full-frame preview, a native session picker behind argumentless /resume, and a /plan overlay. Non-capable terminals (redirected stdio, the Dashboard's embedded terminal, screen readers, tiny windows) automatically fall back to the previous pinned/classic surfaces — nothing to configure. The one loud case: a terminal that passes every probe but where VT modes can't actually be enabled gets an explicit error with the opt-out, instead of a silent fallback (see the fallback chain in docs/CLI.md).
Opt out with SOPHON_CLI_FULLSCREEN=0 (env) or "fullScreen": false in ~/.sophon/config/cli.json; the v2 pinned-input surface is unchanged underneath. If a crash ever leaves your terminal in a broken state, sophon doctor --reset-terminal restores it.
Key bindings in chat
| Key | Action |
|---|---|
↩ |
Send (with a picker open: select) |
⌥↩ |
Insert newline — full-screen only; in the pinned/classic fallback use ⇧↩ |
↑ / ↓ |
Walk input history; with a picker open: move the selection |
Wheel / PgUp / PgDn |
Scroll the transcript (full-screen) |
Home / End |
Jump the transcript to top/bottom when the draft is empty; otherwise cursor movement |
o |
Expand/collapse the newest folded tool-output card (empty draft) |
⌃W / ⌃U |
Delete previous word / clear current line |
⌃C |
Clear draft, or cancel the running task; twice in quick succession exits |
⌃T |
Attach an image |
Tab |
Accept slash menu / mention completion; with an approval card up: focus it |
A / R / E / S |
Approve / Reject / Edit / Skip a pending approval card (empty draft) |
Discovery
- Type
/at column 0 → slash menu opens with fuzzy filter, ordered bySlashCommandCatalog.DisplayOrder(not registration order) so the most-used commands lead /theme,/selectand/tokensare full-screen intrinsics: offered in the menu and/helponly while that surface owns the terminal, since the pinned and classic loops do not implement them- Type
@anywhere → file-mention popover with type-to-filter (@agent:/@session:categories are on the roadmap) - Multi-line paste auto-detected via bracketed paste
Themes
/theme opens a live-preview picker (Enter persists, Esc reverts). SOPHON_THEME=indigo-core|deep-void|graphite|daylight overrides everything; NO_COLOR=1 strips all color.
Opting out
Every surface layer has its own escape hatch, env always winning over cli.json: SOPHON_CLI_FULLSCREEN=0 / "fullScreen": false (back to pinned input), SOPHON_CLI_PINNED=0 / "pinnedInput": false (back to the classic prompt), SOPHON_CLI_V2=0 / "v2": false (legacy CLI).
Terminal title: the chat REPL names the terminal tab with a state glyph — ✦ Sophon when idle, an animated braille spinner while working, and ✦ <session title> - Sophon once the session is titled (default-on; suppressed when output is redirected / TERM=dumb / embedded terminal). Opt out with SOPHON_CLI_TERMINAL_TITLE=0 or "terminalTitle": false in cli.json.
For the full reference (slash commands, fallback chain, scripting, embedded-terminal degradation, troubleshooting, roadmap), see docs/CLI.md.
What you can do from the CLI
Every surface the Sophon Dashboard exposes is available as a sophon subcommand.
| Area | Command |
|---|---|
| Chat | sophon (REPL), sophon chat |
| Sessions | sophon sessions list\|get\|rename\|archive\|delete |
| Agents | sophon agents list\|get\|create\|soul |
| Models & providers | sophon models list\|add\|test\|remove, sophon models github-copilot login |
| Approvals (HITL) | sophon approvals pending\|decide\|edit\|history\|watch |
| Tasks / runs / plans | sophon tasks active\|recent\|cancel\|watch, sophon runs active\|get\|cancel\|wait, sophon plans cancel |
| Channels | sophon channels list\|add\|test\|enable\|disable\|remove |
| Connections (OAuth + keys) | sophon connect list\|service\|test\|revoke |
| Skills & marketplace | sophon skills list\|install\|uninstall\|generate\|marketplace |
| Workflows | sophon workflows list\|create\|execute\|versions\|rollback\|test-node\|check-credentials |
| Cron | sophon cron list\|add\|pause\|resume\|trigger\|history\|delete |
| Documents & memory | sophon docs upload\|ask\|summarize\|search, sophon memory list\|add\|search\|daily-logs |
| Voice | sophon voice providers list\|add, sophon voice transcribe, sophon voice runtime start\|stop |
| Nodes (remote desktop) | sophon nodes pair\|approve\|permissions\|command\|wait |
| MCP | sophon mcp list\|add\|reconnect\|tools\|bundles |
| Webhooks | sophon webhooks list\|create\|toggle\|history\|test |
| Insights & home | sophon insights show, sophon home |
| Push notifications | sophon push register\|preferences\|test |
| Canvas / ClaudeCode / PTY | sophon canvas follow, sophon claude-code stream, sophon pty open |
| Ops (admin) | sophon ops status\|logs\|doctor\|action |
| CLI config | sophon config get\|set\|list\|path\|validate\|reset |
Run sophon --help for the full tree, or sophon <command> --help for any subcommand.
Inside the chat REPL
The chat REPL accepts normal messages and slash commands:
sophon (default) > /plan # show the current execution plan
sophon (default) > /tasks # list active background tasks
sophon (default) > /approvals # list pending approval gates
sophon (default) > /cancel # cancel the running task or plan
sophon (default) > /attach ./a.pdf # upload + send a file in your next message
sophon (default) > /save 1 # download the Nth attachment from the last batch
sophon (default) > /new # start a fresh session
sophon (default) > /resume <id> # resume an existing session
sophon (default) > /help # full slash-command list
Press Ctrl+C once to cancel the currently running task or plan without leaving the REPL; press it again within two seconds to exit.
Configuration
The CLI stores its own settings at ~/.sophon/config/cli.json. Inspect or change them with:
sophon config list
sophon config set gatewayUrl https://sophon.example.com
sophon config path
Environment overrides (take precedence over the config file):
| Variable | Purpose |
|---|---|
SOPHON_GATEWAY_URL |
Gateway base URL |
SOPHON_AUTH_TOKEN |
Bearer token used by the CLI |
SOPHON_FORMAT |
Default output format (table, json, yaml, csv) |
The CLI and the Sophon Gateway/Dashboard share ~/.sophon/ as a user-owned data directory — see the Sophon data directory reference.
Links
- Product: https://sophon.buildersoft.io
- Documentation: https://sophon.buildersoft.io/docs
- Terms / EULA: https://sophon.buildersoft.io/terms
- Issues: https://github.com/buildersoftio/sophon/issues
License
Proprietary — Copyright (c) Buildersoft LLC. Use of this software is governed by the Sophon EULA. See LICENSE.txt.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.0.0 | 127 | 9/19/2026 |
| 1.15.0 | 235 | 7/29/2026 |
| 1.14.0 | 145 | 7/14/2026 |
| 1.13.5 | 147 | 7/9/2026 |
| 1.13.0 | 135 | 7/5/2026 |
| 1.12.0 | 145 | 6/23/2026 |
| 1.11.0 | 156 | 6/12/2026 |
| 1.10.0 | 148 | 6/4/2026 |
| 1.9.1 | 141 | 5/22/2026 |
| 1.9.0 | 133 | 5/22/2026 |
| 1.8.0 | 157 | 5/14/2026 |
| 1.7.0 | 137 | 5/14/2026 |
| 1.6.0 | 142 | 5/10/2026 |
| 1.5.0 | 143 | 5/10/2026 |
| 1.4.0 | 140 | 5/10/2026 |
| 1.3.0 | 147 | 4/25/2026 |
| 1.2.0 | 131 | 4/21/2026 |
| 1.1.0 | 135 | 4/17/2026 |
| 1.0.0 | 142 | 4/17/2026 |