跳到正文
GitHub·· 8 天前AI 评分50

Volt:从终端到手机的编码智能体,iOS 端可续接同一会话

volt-hq/Volt

AI 导读

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
volt

Run /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 terminal session in a sample project. Below the startup header, the user asks Volt to make a failing slugify test pass. Volt reads src/slugify.js, runs npm test and sees the failure, edits the file with an inline diff, reruns npm test successfully, and summarizes the fix. The editor and footer show the project path, git branch, session name, model, and context usage.

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.

Volt iOS app showing the conversation Discuss a Small Todo App in the volt workspace on branch fix/511-stale-default-models. The prompt Tell me about a small todo app, sent from the phone, is followed by the model's reply. The composer shows Build mode and the gpt-6-luna model. 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.

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 (packageManager plus erroring devEngines).
  • .npmrc sets save-exact=true and min-release-age=2. Only Volt's self-packaged @hansjm10/volt-iroh* family bypasses that age quarantine; third-party releases do not.
  • package-lock.json is the dependency ground truth. Pre-commit blocks accidental lockfile commits unless VOLT_ALLOW_LOCKFILE_CHANGE=1 is set.
  • npm run check verifies 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-iroh wrapper is required; its selected native platform binding remains optional. Installing with --omit=optional leaves phone transport unavailable.
  • Local release installs, documented npm installs, and volt update --self use --ignore-scripts where 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