Volt:从终端到手机的编码智能体,iOS 端可续接同一会话
volt-hq/Volt
Volt 是一款编码智能体,在电脑上运行智能体及其工具,终端会话由后台 daemon 承载,iOS 配套应用可通过加密 Iroh 连接接入同一实时对话,凭据与工具执行均留在本机。
A coding agent from terminal to phone.
Volt runs the agent and its tools on your computer. Use it in the terminal, then continue the same live conversation from the Volt iOS companion app when you step away. Bring your preferred model and keep your existing development environment.
Website · Documentation · Quickstart · Releases · Roadmap
What Volt includes
- Terminal and phone sessions: interactive conversations run in a background daemon, which connects the iOS app to registered workspaces over encrypted Iroh connections, so the terminal and the phone share one live conversation.
- Planning and code review: native Plan mode for research and approved execution, plus snapshot-based reviews with independent verification.
- Subagents and background jobs: delegate bounded tasks to isolated agents and inspect or cancel session-owned work.
- Code intelligence and tools: file editing, shell execution, web search, LSP navigation/refactoring, and native MCP integration.
- Persistent conversations: resume sessions, branch from earlier turns, and compact long histories.
- Customization and integration: TypeScript extensions, skills, prompt templates, themes, installable packages, an SDK, and JSON/RPC modes.
Install and start
Requires Node.js 22.19 or newer.
npm install -g --ignore-scripts @hansjm10/volt-coding-agent
cd /path/to/project
voltRun /login to configure a supported subscription or API-key provider, then /model to choose a model. You can also configure provider credentials through environment variables. See Providers for setup and provider-specific billing details.
--ignore-scripts disables dependency lifecycle scripts; Volt does not need them for normal npm installs. Keep optional dependencies enabled for phone transport.
Standalone executables are available on the releases page, but provide local CLI/TUI only: their daemon runs your terminal's conversations but cannot connect the iOS app. Use the npm installation for phone access. Intel macOS also lacks the native phone-transport binding. See Standalone Binary Capabilities.
Volt 0.2.1 fixing a failing test in a sample project. See Using Volt for the interface and Sessions for branching with /tree.
Continue from your iPhone
With the Volt companion app installed, start the host and register a project:
volt daemon start volt remote workspace add /path/to/project --name my-project volt remote pair --workspace my-project
Scan the one-time pairing QR in the app. You can also manage pairing, registered workspaces, and device revocation through /remote in the terminal.
- The app connects to the host runtime; it does not run the coding agent on the phone. Provider credentials and tool execution stay on your computer. Conversation content is transmitted to the app, and model requests go to your selected provider.
- Reconnect to the saved computer without scanning another QR. Terminal conversations run in the daemon, so the phone can join a conversation that is open in the terminal.
- Disconnecting or backgrounding the app does not cancel active work. Your computer must remain running and reachable; shutting down the host stops in-memory work.
- Direct and self-hosted connections are separate from Volt Pro's managed relay and completion-notification services. See the privacy policy and terms for service details.
One conversation in the Volt iOS app and in the terminal (Volt 0.2.1). The prompt came from the phone and ran on the computer; [phone 1] in the terminal footer shows the attached phone.
See the phone quickstart, daemon guide, and remote security model for requirements and troubleshooting.
Safety
Volt runs with the permissions of the account that launches it. Project trust, tool allowlists, Plan mode, and remote grants control specific capabilities; they are not an operating-system sandbox. Local tools and trusted extensions can modify files, run processes, and access credentials available to that account.
Pair only devices you control. A phone driving a conversation opened in the terminal uses that conversation's local tool set. Use a container or VM when you need filesystem, process, or network isolation.
See Security and Containerization. Report vulnerabilities privately using SECURITY.md.
Repository layout
This repository contains the open-source CLI, host daemon, shared libraries, website, and service code. The native iOS companion app is maintained separately; its source is not included here.
| Package | Description |
|---|---|
| @hansjm10/volt-coding-agent | Coding agent CLI, host daemon, SDK, and RPC integration |
| @hansjm10/volt-agent-core | Agent runtime with tool calling and state management |
| @hansjm10/volt-protocol | Conversation log, wire frame, and UiNode schemas, and the protocol contract artifact |
| @hansjm10/volt-ai | Unified multi-provider LLM API |
| @hansjm10/volt-tui | Terminal UI library with differential rendering |
Development
npm install -g npm@11.17.0 --ignore-scripts npm install --ignore-scripts # Install dependencies without lifecycle scripts npm run check # Lint, format, and type check ./volt-test.sh # Run Volt from source
Run only affected tests for local changes; docs-only updates need relevant link, example, and metadata checks. See CONTRIBUTING.md for focused test commands and AGENTS.md for project-specific rules.
On Windows, use ./volt-test.ps1 or volt-test.bat. See Development for setup details.
Supply chain
We treat npm dependency changes as reviewed code changes.
- Direct external dependencies are pinned to exact versions. Internal workspace packages remain version-ranged.
- Development, CI, and release dependency resolution use exact npm 11.17.0 (
packageManagerplus erroringdevEngines). .npmrcsetssave-exact=trueandmin-release-age=2. Only Volt's self-packaged@hansjm10/volt-iroh*family bypasses that age quarantine; third-party releases do not.package-lock.jsonis the dependency ground truth. Pre-commit blocks accidental lockfile commits unlessVOLT_ALLOW_LOCKFILE_CHANGE=1is set.npm run checkverifies pinned direct deps, native TypeScript import compatibility, and the generated coding-agent shrinkwrap.- The published CLI package includes
packages/coding-agent/npm-shrinkwrap.json, generated from the root lockfile, to pin transitive deps for npm users. The exact@hansjm10/volt-irohwrapper is required; its selected native platform binding remains optional. Installing with--omit=optionalleaves phone transport unavailable. - Local release installs, documented npm installs, and
volt update --selfuse--ignore-scriptswhere supported.
Origins and license
Volt is maintained and distributed by Jordan Hans. It is derived from Mario Zechner's Pi project under the MIT License. Why I Forked Pi to Build Volt explains the project's origins and terminal-to-phone direction.
Volt preserves the copyright and license notices for Pi and other incorporated open-source software. See LICENSE and THIRD-PARTY-NOTICES.md.
Volt's Git history restarts at the beginning of its architecture rewrite. The full earlier history, including the Pi history Volt was built from, remains available at the legacy/main tag.
来源:GitHub · github.com


![The same conversation open in the Volt terminal UI on the computer, showing the same prompt and reply. The footer shows the branch, session name, gpt-6-luna, and [phone 1], meaning one phone is attached.](/api/img-proxy?u=https%3A%2F%2Fgithub.com%2Fvolt-hq%2FVolt%2Fraw%2Fmain%2Fpackages%2Fcoding-agent%2Fdocs%2Fimages%2Fshared-session-terminal.png&mode=full&exp=1792540800&sig=12383b0ec0f76ec8)