Introduction
Trellis Studio is the canonical workspace for the trellis graph — code, agents, decisions, history, and live queries on one screen.
Trellis Studio
For demos and a product overview, see Trellis Studio.
Trellis Studio is the canonical workspace for the trellis graph. Your files, history, agents, decisions, and live queries — all on one screen, all backed by the same causal substrate.
npx trellis studio
Opens Trellis Studio in your browser. Requires Node 18+ and git. No account, no cloud, no signup.
One command, the whole substrate
Most tools split your context across a half-dozen surfaces: your editor, your terminal, your VCS, your issue tracker, your agent chat, your wiki. Trellis Studio collapses them.
The Studio is a single workspace where everything runs against the same graph. The code you edit is the same data the agents read. The decisions agents make are the same records your team reviews. The history is queryable, not buried in commit messages.
One command. No signup. No cloud.
What's inside
Graph-native editor
Files, entities, and relationships side-by-side. Wiki-links and references resolve across code, decisions, and issues.
The file browser lists your project workspace correctly even when you open Studio through a symlinked path (for example the ecosystem desk root). Symlinked folders resolve to directories or files in the tree. The GET /file API scopes listings to the open project; the legacy ~/.turtlecode home listing applies only when you browse that home directory, not when the SDK sends a normal project directory query param.
Go to file works like VS Code: press ⌘P (Mac) or Ctrl+P (Windows/Linux), or click the search bar in the session header. The picker shows recently opened files, then fuzzy-matches filenames and paths as you type (200ms debounce, stale requests cancelled). Use spaces to match path segments (for example session header finds session-header.tsx). The file index is warmed when the workspace opens so the first search is not blocked on a cold scan.
- Git worktrees: ripgrep-backed indexing can follow symlinks when
.gitignore/.ignoreallow (typical monorepos). - Desk-style roots (orchestration folder with symlink spokes, no git at the desk root): indexing stays on the desk tree; symlink names appear in the tree but contents inside
studio/,kernel/, and similar spokes are not scanned. Open the spoke path as the project (for exampleTRELLIS/studio) to search inside that repo.
Trellis runtime data under .trellis/ is excluded from indexing and text search.
The command palette (⌘⇧P / Ctrl+Shift+P) is separate: run commands, switch sessions, and search files in one list. Customize shortcuts under Settings → Keyboard.
Appearance: new installs default to the Cursor palette (light/dark follow your color scheme). Legacy oc-1 theme ids migrate to Cursor on load. Change theme or cycle light/dark under Settings → General, or use command palette entries under Theme. Your choice is stored in localStorage (opencode-theme-id).
Embedded agents
Run agents inside the workspace. Every tool call is captured as a durable op, not a chat log. Agents read and write the same graph you do.
Agent sessions (tabs in the session header) are separate chats: each has its own transcript, composer draft, and model selection. The editor pane is shared for the whole project: open file tabs, the left icon rail (Graph, Plan, Code, Database, Assets, Design, Review, Preview, Logs), scroll positions, and review panel state stay as you left them when you switch sessions or start a new one. Only the chat column changes.
In Code view, the Explorer (file tree) and the editor sit in one row: tree on the left, open files and the code surface on the right, like a conventional IDE. Toggle the tree from the editor tab bar or fileTree.toggle in the command palette.
Specialized editors open for some extensions: spreadsheets (.xlsx), 3D models, and .whiteboard files (embedded Excalidraw canvas with JSON on disk). Agents use the whiteboard tool and corpus templates (template.*, figure.*) to build diagrams without editing raw JSON; the open board in Code or the Whiteboards projection attaches to the composer automatically. See Projections and whiteboards.
The core rail is ordered top to bottom: Graph, Plan, Code, Database (?view=cms), Assets, Design, Review, Preview (?view=browser; ?view=preview is an alias), Logs. Below those icons, the projection zone pins domain lenses such as Notes (store-backed capture), Whiteboards (open .whiteboard files fullscreen in the panel with a back button to the card grid), and optionally Calendar (monthly grid of issues, work units, milestones, and manual events you add in the UI; agents use the calendar tool to create and edit the same events). Route: ?view=projection&lens=<id>. Use + to pin or unpin lenses (up to five); hover a pinned icon (or focus it with the keyboard) to reveal × and remove it from the rail. Default pins follow your workspace template; override in opencode.jsonc under projections.pinned.
MiniMax M2.5 Free is the temporary default hosted model on studio.trellis.computer while the metered trellis-cloud → broker → Vercel AI Gateway path is being patched. Studio prefers OpenCode Zen so chat works without waiting for the gateway fix. No API key is required for the default model. When trellis-cloud is enabled as the default again, cloud agent calls route through the Trellis broker and Vercel AI Gateway (trellis-cloud provider) and the status bar shows your daily token budget.
If the hosted default model is unavailable, Studio falls back to Nemotron 3 Super Free (OpenCode Zen). Big Pickle and other Zen models stay in the model picker if you want to switch. See Cloud AI proxy for architecture and broker endpoints. For sandbox provisioning, workspace VMs, and errors like Provisioning failed, see Cloud hosting.
Studio normalizes tool JSON schemas for OpenAI-compatible models so first messages succeed. If you still see Invalid schema for function … got 'type: null' on Big Pickle or another model, switch to the default Gemini model or Codex in the composer, or update to the latest Studio build.
To use ChatGPT Pro/Plus (Codex) models with your subscription, connect OpenAI in Settings → Providers. On studio.trellis.computer and other remote workspaces, choose ChatGPT Pro/Plus (device code). Browser sign-in only works for local Studio because OpenAI redirects to http://localhost:1455/auth/callback on the machine running the agent server.
After sign-in, Studio switches the composer to the best available Codex model (prefers GPT-5.3 Codex, then other Codex tiers) and keeps MiniMax M2.5 Free available if you change models. ChatGPT OAuth exposes subscription Codex models plus GPT-5.2, GPT-5.4, and GPT-5.4 Mini. Studio auto-selects Codex after connect and skips Codex Spark variants (*-codex-spark) because ChatGPT OAuth does not support them. Codex Spark and other Zen/API-only variants stay on OpenCode Zen, not on the ChatGPT connection. If a prompt fails with gpt-5.3-codex-spark is not supported when using Codex with a ChatGPT account, reconnect OpenAI or pick GPT-5.3 Codex in the model menu and start a new session.
New sessions show a Connect ChatGPT prompt until OpenAI is linked. MiniMax M2.5 Free stays the default on cloud when you have not connected OpenAI.
The session composer and the rest of the IDE stay interactive after each agent turn, including when a turn ends with a provider error. Studio clears “working” UI state for errored assistant messages, restores document.body pointer events when a modal is not open (including on your next click), and keeps the todo dock inert while it animates closed so it cannot capture clicks meant for the prompt.
On studio.trellis.computer, assistant text streams in as the model generates (SSE deltas), rather than appearing as one block at the end of a turn. Studio also reconciles session “working” state from the message timeline when live updates are missed (common in cloud iframes). The send/stop control, sidebar session spinners, and the timeline thinking indicator hide as soon as the latest assistant turn completes, even if the session_status idle event was dropped. While a turn is active, a background poll refreshes status every few seconds; a full message reload runs only when busy status is stale, so routine polling does not interrupt streaming.
Publish to the web (cloud)
Cloud workspaces can ship a static snapshot of your app to https://<slug>.studio.trellis.computer. Use Publish in the preview or browser panel to pick a slug, review inferred build settings, choose public or unlisted visibility, and go live; Republish from the Live menu uploads a new version under the same URL. The build runs in your sandbox; artifacts upload to durable storage so the public URL stays up when the VM sleeps. This is not the same as Share session (transcript link in the session menu). See Publish to the web for the flow, APIs, and slug rules.
Live graph view
Graph is the default session view: select it first in the left icon rail (or open a session with no view query param). The separate Home dashboard is no longer on the rail; bookmarks with ?view=home redirect to Graph.
Visualize the causal stream as it grows. Filter by entity type, time range, or branch. Click an op to see the change it produced.
Selecting a file or directory node opens the graph entity sidebar with Preview, Details, and Activity tabs. For markdown, Preview shows the rendered note (same editor surface as Code view, without the narrow Properties column). Edit YAML frontmatter on Details: a full-width Properties block sits below the file metadata card. Code view still offers the collapsible Properties rail beside the editor when you need both panes at once.
The graph loads from GET /trellis/graph on the local OpenCode server. In the desktop app (Tauri), that server runs as an embedded sidecar with HTTP Basic auth. Studio routes every Trellis API call (graph, store, issues, garden, and similar) through the authenticated client fetch so the graph canvas is not empty with a silent 401 in the network panel.
Desktop app (Tauri)
Trellis Studio also ships as a native desktop build (Tauri). It starts the same OpenCode sidecar as browser Studio, with credentials injected at launch. Use Settings → Server if you point at a remote server instead of the bundled sidecar.
From the turtlecode repo:
cd studio
bun run dev:desktop
Graph view, issues, and other Trellis panels require the authenticated sidecar connection. If graph data fails to load, confirm the workspace directory exists on disk and that the sidecar health check passed at startup (see the desktop log stream).
Decision traces
Capture the why behind every change — human or agent. Search precedent across past runs. Decisions are first-class records, not buried in commit messages or Slack.
Issues and milestones
Trellis-native task tracking. Issues, criteria, and branches live in the same graph as the code they ship with. Milestones replace commits as the unit of narrative.
Idea Garden
Abandoned branches and exploration become searchable, revivable clusters instead of lost work.
For agents, for humans, for both
Agents need durable memory and a causal record of their own actions. Humans need the same record, presented as a workspace they can read, edit, and steer.
Trellis Studio is the same surface for both. An agent's edit and your edit produce the same kind of op. An agent's decision and your decision sit in the same trace. The Studio is the place where that becomes obvious.
How it relates to Trellis
Trellis is the engine — the local-first, AI-native causal graph that stores entities, ops, decisions, and references. Trellis Studio is the engine's canonical surface: the workspace where you can see and steer everything the engine holds.
The engine works without the Studio. The CLI, the SDKs, and the server can all be used directly. But the Studio is where Trellis becomes tangible — and where the parts that usually live in five tools come together.
Try it now
npx trellis studio
The Studio opens in your browser automatically. Your project, your machine, your data.
Ecosystem desk
If you open the Trellis stack from a local TRELLIS workspace (symlinks to kernel/, studio/, cloud/, docs/), use just trellis -r studio for CLI access to this graph and see the Ecosystem desk guide.