Open-source AI coding assistant.
Otto Canvas
Your entire dev workflow.
One native surface.
Canvas is a native desktop app that gives you a persistent, tiled workspace for AI-powered development. Terminals, browsers, AI agents, and coding tools — all in composable blocks.
Block types
Native GPU-rendered terminal powered by libghostty.
Inline web preview for localhost or any URL via native WKWebView.
AI chat with full tool access scoped to your project.
Launch Claude Code in a native Ghostty surface.
Launch OpenAI Codex inside a Ghostty-backed surface.
Run any shell command in a terminal block.
Core capabilities
Multi-workspace
Each workspace is linked to a project path. Canvas auto-starts an otto serve runtime per workspace.
Splits & tabs
Horizontal and vertical splits within canvas tabs. Open any block type as a standalone tab.
Keyboard-first
⌘N add block · ⌘T new tab · ⌘D split right · ⌘⇧D split down · ⌘1-9 switch tabs · Ctrl+HJKL vim navigation.
Workspace file
Export your layout, tabs, and automation as otto.yaml. Share identical surfaces with your team.
Native performance
Ghostty terminals with GPU rendering. WKWebView browser blocks. No Electron overhead.
macOS vibrancy
Transparent blur-backed window chrome via NSVisualEffectMaterial. Feels like part of the OS.
Interfaces
One tool.
Every surface.
Terminal-native
One-shot prompts or interactive sessions. Compiles to a single self-contained binary.
otto ask "fix the auth bug"Interactive terminal UI
OpenTUI + React client for otto with keyboard-first workflows powered by @ottocode/api.
bun run --filter @ottocode/tui devHTTP API + Web UI
Local Hono server with SSE streaming. React web interface with session management.
otto serve --port 3000Native app
Tauri v2 app that embeds the CLI binary and web UI. macOS, Linux, Windows.
ottoRemote web client
Run only the Web UI and point it at an existing otto API server URL.
otto web --api <url>Embed anywhere
Use @ottocode/server in your own apps. Provider-agnostic. Tree-shakable.
import { createEmbeddedApp }Embedding
Embed in minutes
Full SDK with provider switching, tool execution, and streaming.
const app = createEmbeddedApp({
provider: "anthropic",
model: "claude-sonnet-4",
apiKey: process.env.ANTHROPIC_API_KEY,
agent: "build",
});
Agents
Purpose-built agents
Code generation, bug fixes, features. Full filesystem + shell access.
Architecture planning and analysis. Read-only — cannot modify files.
General-purpose assistant. Balanced toolset for everyday work.
Deep research across sessions and the web. Queries past context.
Providers
Every frontier model
Claude 4.5 Sonnet, Opus
GPT-4o, o1, Codex Mini
Gemini 2.5 Pro, Flash
100+ models
Anthropic & OpenAI models
GitHub Copilot models
USDC pay-per-use proxy
Zai frontier models
Kimi models
MiniMax M2.5, M2.1
Tools
15+ built-in tools + MCP
Architecture
Clean layers
Bun workspace monorepo. 6 apps, 7 packages. SST infrastructure.
Stack
Built with
Desktop App
Native experience
Full-featured desktop app built with Tauri v2. Native performance, system tray, global shortcuts. Available for macOS and Linux.
macOS
v0.1.22
Launcher
Team development environments
One-click setup for shared dev environments. Create teams, manage deploy keys, clone repos, and spin up containerized workspaces with Docker.
Team management
Create teams with shared deploy keys and git identities. Import teammates by sharing .otto config files.
Docker containers
Isolated containerized workspaces per project. Auto-installs dependencies, configures SSH, and starts otto inside the container.
Automated 6-step setup
Add a project, enter the repo URL, and watch the automated pipeline. System packages, SSH, git, clone, deps, and otto — all handled.
Cross-platform
Native Tauri v2 app for macOS, Windows, and Linux. Manage multiple projects with start, stop, restart, and update controls.
macOS
v0.1.0
Windows
v0.1.0
One command. Open source. MIT license.
or