CanvasTTY README

The project's README from github.com/howdeploy/CanvasTTY. As one markdown file: README.md.

https://github.com/user-attachments/assets/444612f7-cda1-4fd6-8514-2f4fac9cc520

English · Русский · 简体中文

Your terminals are places, not tabs.
CanvasTTY is an Electron spatial desktop for real local PTYs and AI-agent CLI sessions. Keep a fixed Home zone, arrange live terminals on an infinite canvas, and see provider limits backed by real data sources.

Stack

Desktop Interface Terminal Providers
Electron
electron-vite
React
TypeScript
xterm.js
node-pty
Codex
Claude · Kimi · OpenCode · Hermes · Grok Build

The application interface currently supports English and Russian. This documentation is also available in Simplified Chinese.

One canvas, real sessions

Launch a shell or agent in a project directory, move and resize its live terminal, zoom out to navigate semantically, and return to Home for sessions, limits, media, and launch shortcuts. CanvasTTY keeps PTY state in the trusted main process and exposes only typed, allow-listed capabilities to the renderer.

Agents, orchestration and protection

Agents start in Auto by default: the CLI's own auto mode (Claude Code, Codex, Grok), CanvasTTY's per-run rules for OpenCode, or, for a CLI without one, its approval bypass only inside agent isolation. Manual, Accept edits, Plan and Bypass are offered only where the CLI has them; Bypass is acknowledged once per CLI and never handed to a subagent. Around every mode sit layers the person controls in Settings → Agents: base protection (hooks that refuse elevation, curl | sh, disk commands and writes outside the project before the tool call runs), delegation rules (a subagent never gets more than its orchestrator and stays in its project; 2 levels and 8 live subagents by default), and an OS isolation layer (macOS sandbox-exec, Linux bubblewrap; none on Windows yet, where subagents run in Manual). When an isolated session ends, CanvasTTY checks the repositories it touched for git settings that would run programs outside isolation and offers to neutralize them.

An Orchestrator session gets the canvastty_agents tools: list_providers (installed agents, sign-in state, models, efforts, profiles), spawn_agent with optional model, effort and profile, wait_for_agent (up to 600 s) and get_agent_result, which returns a Codex or OpenCode subagent's final reply as answer (up to 4,096 characters, masked). See agent orchestration and isolation and protection layers.

Windows shells and provider CLIs

On Windows, the Terminal launcher uses the built-in Windows PowerShell with a clean -NoLogo -NoProfile session, then falls back to pwsh or cmd.exe. Codex, Claude, Qwen Code, Kimi, OpenCode, Hermes, and Grok Build are resolved to a concrete .exe, .com, .cmd, or .bat launcher from the user's PATH or standard per-user CLI directories before they are passed to node-pty/ConPTY.

CanvasTTY does not install provider CLIs. Missing agents remain in Agents settings with an official installation link. After installation, use Check again to refresh the available launchers and limit rows. The launch diagnostic lists checked paths if a CLI is still unavailable.

Install

Download the latest release from GitHub Releases: AppImage/deb for Linux x86_64, installer/portable app for Windows x64, and dmg/zip for Apple Silicon macOS. macOS bundles are ad-hoc signed and verified but do not have a Developer ID signature or Apple notarization; Windows packages remain unsigned. Intel Mac builds are not included yet. Read installing and local-data security.

Or run from source:

npm install
npm run dev

npm run build and packaging also build the native agent helper (canvastty-helper, Go ≥ 1.21, npm run build:helpers) that runs the MCP servers and hooks on macOS and Linux; without Go the app keeps its JavaScript helpers, which Windows uses by default.

Docs

Start here Build on CanvasTTY
Documentation hub Widget authoring
Getting started Metrics and telemetry
Built-in browser and audit log Bundled agent browser skill
Agent orchestration and isolation Bundled orchestration skill
Install, releases, and local data Security policy
Architecture UI contract
Runtime plugin authoring Typed plugin SDK
Changelog MIT license

Even G2 companion

The opt-in Settings → Controls → Even G2 integration adapts CanvasTTY's terminal and AI-agent workflows to Even G2 glasses. Pair with six digits on the same local network, approve access on the computer, then read responses on the glasses HUD, dictate through local Nemotron speech recognition, and create, rename or close shared sessions. The companion includes a More agents picker and supports the desktop's provider list. Its source lives in integrations/even-g2 and builds with the desktop. See setup, distribution status and acceptance limits; a compatible public installer and Even Hub approval are still pending.

Web companion

The opt-in Web companion shares selected sessions with Android, iOS, and desktop browsers through Tailscale Serve HTTPS, not Funnel. CanvasTTY binds its companion endpoint to 127.0.0.1:3481 in this mode; pair with a short-lived code and approve each browser on the desktop. Open Settings → Controls → Web companion for setup, grants, and revocation. End-to-end Tailscale Serve deployment on Windows, Linux, and macOS remains unverified.

Runtime plugins

CanvasTTY includes a permissioned runtime for ready-to-run static GitHub packages: HOME widgets, canvas apps, and separate sandboxed windows. The host SDK now supports persistent user-selected music-library grants, seekable local audio streams, and bounded playlist import/export for full player plugins. See the authoring and security guide, manifest schema, and TypeScript SDK declarations.

Plugin examples:

Built-in agent browser

CanvasTTY includes a core browser rather than a plugin capability: trusted React chrome backed by sandboxed Electron WebContentsView tabs in one persistent Chromium profile. It is available from HOME, restores safe HTTP(S) tabs, keeps website credentials inside Chromium, manages downloads/uploads, and exposes typed browser actions to Claude Code, Codex, Kimi, OpenCode, and Hermes sessions launched by CanvasTTY.

The browser card participates in the same canvas selection, hover-focus, drag, resize, and semantic-zoom model as terminals. Settings controls agent access, tab restore, recent downloads/activity, and browser-data clearing. Agent access uses an authenticated local socket or named pipe and a bundled stdio MCP helper (native on macOS and Linux); it does not open a TCP or remote-debugging port and never exports cookies, passwords, auth headers, local storage, arbitrary JavaScript, or raw CDP.

Every browser command produces a redacted local activity record. Persistent JSONL audit files form a hash chain below Electron userData/browser/audit, rotate at 100 MB, and prune rotated files older than 30 days during store initialization or rotation. Typed/page text, screenshots, credentials, URL queries/fragments, headers, cookies, and tokens are not stored. See the browser and audit-log guide and Architecture.

Quick checks

npm test
npm run test:even
npm run typecheck
npm run build

Contributor acknowledgements

Thanks to @kootik for PR #51: integrating the open pull requests, resolving conflicts, addressing review findings, and improving agent orchestration. The original commits are preserved in the repository history; .mailmap associates their s079891 author identity with kootik.

License

CanvasTTY is released under the MIT License.

CanvasTTY (howdeploy/CanvasTTY)

Searching Database…

这是什么?CanvasTTY 是一个基于 Electron 的空间化桌面,让你把真实的本地终端和 AI 代理 CLI 会话(Claude Code、Codex、Grok、Kimi、OpenCode、Hermes)以卡片形式排列在可无限缩放的画布上,而不是平铺的标签页。
这是桌面应用还是 CLI 工具?它是一个带 React/TypeScript 界面的独立 Electron 桌面应用,不是要引入其他项目的库或 CLI。
怎么安装和运行它?从 GitHub Releases 下载预构建版本(Linux x86_64 用 AppImage/deb,Windows x64 用 installer/portable,Apple Silicon macOS 用 dmg/zip),或者用 'npm run build' 从源码构建(如果想要基于 Go 的原生辅助程序,还需运行 'npm run build:helpers')。
构建它需要安装 Go 吗?只有当你想要那个在 macOS 和 Linux 上运行 MCP 服务器和钩子的原生 'canvastty-helper' 时才需要 Go 1.21+;没有 Go 时,应用会退回到 JavaScript 辅助程序,这也是 Windows 上的默认行为。
下载的构建版本是否经过完整签名并在所有 Mac 上受支持?macOS 构建采用 ad-hoc 签名,但没有 Developer ID 签名或 Apple 公证,Windows 安装包未签名,尚未提供 Intel Mac 构建,而且 Windows 上的子代理没有操作系统级的沙箱隔离(它们改为在 Manual 模式下运行)。
它支持哪些桌面平台?CanvasTTY 提供 Linux(x86_64)、Windows(x64)和 Apple Silicon macOS 的原生构建。
我的终端和浏览器数据会怎样?PTY 状态保留在受信任的主进程中,内置浏览器绝不会导出 cookie、密码、本地存储或原始页面内容,命令活动只以脱敏后的本地 JSONL 审计文件记录,文件达到 100MB 时轮转,30 天后清除。
代理编排和安全机制是怎么运作的?Orchestrator 会话可以使用 spawnagent、waitforagent 和 getagentresult 等工具来运行 Codex 或 OpenCode 子代理;钩子会阻止提权操作、curl-pipe-sh、磁盘命令以及项目外的写入;操作系统隔离层(macOS 的 sandbox-exec、Linux 的 bubblewrap)进一步把子代理限制在默认最多 2 层嵌套和 8 个并发实例之内。
它自带供代理使用的内置浏览器吗?有,CanvasTTY 内置一个基于 Chromium 核心的浏览器卡片,Claude Code 和 Codex 等代理可以通过本地套接字以输入动作的方式控制它,全程不暴露远程调试端口、原始 CDP 或存储的凭据。
可以用插件扩展 CanvasTTY 吗?它有一套带权限控制的运行时插件系统,用于即装即用的 GitHub 软件包,包括 HOME 小组件、画布应用和沙箱化窗口,并配有 TypeScript SDK 和清单(manifest)模式;社区示例包括 Hermes HUD 小组件和一个音乐库播放器。
Even G2 伴侣功能是什么?这是一项可选集成,让你通过局域网配对 Even G2 智能眼镜,在 HUD 上查看代理响应、通过本地语音识别进行口述,并从眼镜端管理共享会话。
Creator
howdeploy
Size
142.1 MB
Stars
110
Age
2mo
Commits · 90 Days