Changelog

What we shipped and when. No marketing spin, just the work.

Terraform files, quieter Codex, composer focus

Terraform files now render in the file explorer. Same treatment as .js, .py, .md — just works. If you’re running infra through Printhouse, this was the missing piece.

The command switcher now hands focus back to the composer when you navigate away from it. One less click before you can keep typing.

Connected apps had a class of transient broker read failures that surfaced as visible errors. They retry now, so the hiccups stay invisible.

If you’re using the ChatGPT subscription integration, a few categories of expected Codex events — session expiry, header timeouts, overload turns — were bubbling up as errors unnecessarily. They’re suppressed now.

Terraform files, smarter Codex auth

Terraform files now render in the file explorer with syntax highlighting. If you’re managing infra configs alongside your agent’s work, they’re first-class files now.

A couple of smaller things:

  • Codex token refresh. The ChatGPT integration now refreshes your token proactively before sending, instead of waiting for a send to fail. Fewer mid-conversation auth interruptions.
  • Composer focus after command navigation. After picking a slash command, focus drops back to the composer. One less click.
  • Duplicate error messages in the skills marketplace are gone.

File explorer upgrades, jump-to-bottom, Codex fixes

File explorer organization

The file explorer now has file management built in. Rename files, create folders, delete things — without dropping to the terminal. Action menu on any file or folder.

Targeted uploads

You can now drag files into a specific folder in the file explorer to upload them there. Before this, uploads went to the root. Now they go where you drop them.

Jump to bottom

Scroll up in a long conversation and a jump-to-bottom button appears. Click it, you’re back at the latest message. Obvious feature — took a while to get here.

Other stuff

  • Codex tokens. If you connect your ChatGPT subscription, tokens now refresh proactively before each request instead of after they expire. Should eliminate the mid-conversation auth errors some people were hitting.
  • Pinned resources header. Fixed a responsiveness bug in the pinned resources panel header.

Resizable panels, channel switcher upgrades, a bunch of fixes

Right rail panels are resizable

Drag the left edge of the browser, extension, or terminal panels to resize them. The preference sticks across sessions.

Channel homepages in the command switcher

⌘K now includes channel homepages alongside conversations. Jumping straight to #eng or #strategy without mousing through the sidebar works now.

Keyboard navigation for sidebar conversations

Arrow keys and Enter work in the sidebar conversation list. Keeps your hands on the keyboard.

Other stuff

  • Mermaid diagrams expand inline. Click to expand an SVG and it renders in-context instead of opening a separate viewer.
  • Extension channel pins. Pinned resources in channels now support extensions, not just files and URLs.
  • Keyboard shortcut hints improved. The hints shown in the UI are more accurate and consistent.
  • Terminal contrast. The terminal theme got better contrast — easier to read at a glance.
  • Claude Code OAuth is free. If you connect your ChatGPT subscription via Claude Code OAuth, those API calls no longer count against your Printhouse usage budget.
  • Fullscreen image viewer. Fixed the flickering and vibrating when opening images fullscreen.
  • SVG preview expansion. Fixed a bug where expanding SVG previews didn’t work correctly.
  • Pinned folder links. Fixed broken links when a pinned resource pointed to a folder.

Managed browser, extensions overhaul, Cmd-K

Your agent has a browser now

Printhouse agents can open and control a managed Chromium instance inside your sandbox. Think: logging into services, scraping pages, filling out forms, testing your own sites. The browser panel is scoped per-conversation, so different workflows get their own sessions. Keyboard input and control handoff between you and the agent both work properly.

Extensions (née Agent-Built Apps)

We renamed Agent-Built Apps to Extensions. More importantly, they actually work well now.

  • Native UI kit. Extensions get a set of Printhouse-native styling primitives out of the box. Your agent builds apps that look like they belong here, not like a random React app in an iframe.
  • Auto-reload. When your agent updates an extension, it reloads automatically. No more manual refresh.
  • Live invalidation. The extension template now ships with SSE-based live updates by default. Data changes propagate to the UI without polling.
  • Per-app subdomains. Each extension gets its own subdomain, which means cleaner isolation and no more path-prefix headaches.
  • Loading states. Extension iframes show a proper loading indicator instead of a blank white rectangle.

Cmd-K conversation switcher

Hit ⌘K to fuzzy-search and jump between conversations. Fast.

Other stuff

  • Expandable media previews. Click images and media in chat to expand them.
  • Draggable channel ordering. Drag your channels into whatever order makes sense to you.
  • Mobile tools menu. Right-rail panels (browser, extensions, terminal) are now accessible on mobile via a tools menu.
  • Terminal is opt-in. The terminal panel is hidden by default now. Turn it on in preferences if you want it.
  • Status banner. If something’s wrong with the platform, you’ll see a banner at the top of the app. Supports warning and critical severity levels.

Printhouse is live

The rebrand shipped. Cooked is now Printhouse, and the app lives at app.useprinthouse.com. New domain, new brand mark, new name across the product. Old cooked.bot URLs 301 redirect — nothing breaks.

Channel pins. You can pin files and URLs to any channel. They show up as pills with file-type icons, overflow into a popover when there are too many, and the agent gets them as context on every turn. Think of it as a persistent reading list for your channel.

Edit messages with attachments. You could always edit a sent message. Now you can add, remove, or swap its attachments too.

Skills are copyable. Hit the copy button in skill detail view to grab the full skill definition. Useful for forking or referencing someone else’s skill.

Scheduled task cleanup. Repeated task runs collapse into a single sidebar row instead of flooding your history.

Your agent knows the time. Current timestamp is injected every turn. No more “I don’t have access to the current date” nonsense.

Privacy. Added a real privacy policy. Killed Sentry session replay — screen recording was always a bad default.

Fixes: Stripe subscription cancellations now detected correctly (edge case with cancel_at vs cancel_at_period_end), code block syntax colors fixed, fonts self-hosted to kill the flash of unstyled text on refresh.

Public file sharing, network lockdown, and dollar-based billing

Public file sharing

You can share files from your workspace publicly. Generate a link, send it to someone, they see the file — live-rendered the same way you see it in the file explorer (HTML runs interactively, markdown renders, spreadsheets display as tables). Useful for sharing demos, reports, or anything the agent built that you want to show someone without screenshotting.

”No external access” network mode

Network access controls now have a third option. Previously you could choose between “allow all” (agent reaches any domain) and “connected apps only” (agent can only reach services you’ve explicitly connected). Now there’s “no external access” — the agent can’t reach anything outside the platform. Good for air-gapped workflows or when you want to be absolutely sure nothing leaves the sandbox.

Dollar-based usage

Usage balances now show real dollar amounts. No more abstract credit units — you see what you’ve spent and what’s left in actual currency. Pricing language across the app reflects this: near-API pricing, no credit system.

Connections panel

Connected apps got a dedicated panel in the right rail instead of being buried in settings. OAuth providers show connection counts. Cleaner layout, easier to manage.

File explorer

  • JSONL files render natively
  • Dotfiles are hidden by default (less noise when browsing)
  • More source file types get syntax-highlighted previews

Also shipped

  • Active agent turns recover automatically after a websocket disconnect — no more losing in-flight work when your connection blips
  • Recent task runs show above the prompt in the scheduled task detail panel
  • Mobile: fixed edit-message submission and textarea autogrow
  • Billing section flattened — less visual nesting, easier to scan

DeepSeek and Kimi models, context compaction, pinned files, and billing

New models: DeepSeek V4 Pro and Kimi K2.6

Two new model providers via Fireworks AI. DeepSeek V4 Pro and Kimi K2.6 are available in the model picker alongside Anthropic and OpenAI models. The picker is trimmed to 6 essential options — enough to cover different strengths without decision fatigue.

Context compaction

Long conversations no longer hit a wall. When context gets large, use /compact to summarize and compress it. You can also add custom instructions for what to preserve during compaction. A visible marker in the chat shows where compaction happened and what was kept. The context badge next to the model label shows how full your window is.

Pinned files

Pin important files to a channel’s homebase. They show up as quick-access pills at the top of the channel view. The agent can link you to specific lines in files, specific pages in PDFs, and specific cells in spreadsheets — and those targets highlight when you click through.

Channel homebase

Clicking a channel name now opens a homebase view showing the channel’s instructions, pinned files, and linked conversations. Edit instructions right there with a markdown-optimized editor — word wrap, clean typography, no line numbers getting in the way.

Billing

Printhouse now has a subscription model. $30/month with a 7-day trial. Your ChatGPT subscription offsets costs for OpenAI models. Usage tracking streams in real time, and the paywall is clear about what you get. Credit packs available if you need more.

File links got precise. The agent can point you to:

  • A specific line in a source file — opens in the editor, highlighted
  • A specific page in a PDF
  • A specific cell in a spreadsheet
  • A heading in a rendered markdown file

Click the link, land exactly where you need to be.

Image generation

The agent can generate images using OpenAI’s image models (requires a connected ChatGPT subscription). Results link back to the generated file in your workspace.

Also shipped

  • Optimistic message rendering — your messages appear instantly on send
  • Drop files directly onto conversations to attach them
  • Large pasted text auto-attaches as a file instead of flooding the composer
  • Composer blocks submit while uploads are in progress
  • Copy a file’s path by clicking the filename in the viewer toolbar
  • Delete files from the file explorer toolbar
  • Session links ([[session:id]]) for referencing prior conversations
  • Settings panel redesigned with cleaner layout and grouped connected apps
  • Cooking indicator polish (no more amber glow, smoke animation lingers)
  • Onboarding modal with welcome step and ChatGPT connection walkthrough
  • Connected app metadata notes for richer agent context
  • Exa search added as a platform integration

ChatGPT subscription, conversation search, billing, and model picker

Bring your ChatGPT subscription

Connect your ChatGPT Plus or Pro subscription to Printhouse via a device code flow. Once linked, you can use OpenAI models (GPT-5.5, o3) without burning Printhouse usage credits. The model picker shows which models are available through your subscription versus metered billing.

A post-signup onboarding modal walks you through connecting it.

Cmd+Shift+F opens full-text search across all your conversations. Results show highlighted snippets with channel context. Click a result and it deep-links to the exact message — even if it’s hundreds of messages back, the view progressively loads older messages to get there. Search uses Porter stemming so “running” matches “run.”

There’s also a search trigger button in the channel header if you prefer clicking.

Model picker

The composer now has a model dropdown. Pick from Anthropic (Claude Sonnet 4, Haiku), OpenAI (GPT-5.5, o3), DeepSeek, and Kimi K2. Models are grouped by billing source — your ChatGPT subscription vs. metered usage. If a model isn’t available (missing credentials), it won’t show up.

Model selection persists across conversations.

Skills panel redesign

Skills got a proper list-detail-edit navigation pattern. Browse installed skills, view their contents, edit with a full Monaco editor. The marketplace integrates with skills.sh for community skills — browse, preview, and install with one click.

Object links work for skills now too: [[skill:name]] renders as a clickable pill.

Scheduled tasks panel redesign

Same list-detail-edit pattern as skills. Edit task prompts in a Monaco editor. Tasks can target a new conversation each run or stay pinned to an existing one for accumulated context. Linked-task chips in conversations let you navigate to the associated scheduled task.

Also shipped

  • Object links for channels ([[channel:name]]) and tasks ([[task:name]]) as clickable pills in chat
  • Keyboard shortcuts work in input fields now (previously only fired when nothing was focused)
  • File attachments bumped to 10 files, 20MB each
  • Settings panel moved from a standalone route into the right rail
  • Panel transitions no longer animate when switching between panels
  • Conversation rename — double-click a conversation in the sidebar to rename it
  • Swipe-to-delete conversations on mobile
  • KaTeX math rendering in chat messages and the markdown viewer
  • Inline Mermaid diagrams in chat
  • Inline image rendering in chat
  • HTML preview, audio/video players, and Mermaid diagram viewer in the file explorer

Scheduled tasks, conversations, and diff rendering

Scheduled tasks

Your agent can now do things on a schedule. Cron expressions, intervals, or one-shot timers — all with full access to tools, connected apps, and the filesystem. Set up a daily standup summary, a weekly report, or a one-time reminder that actually does work.

Tasks can be pinned to a conversation so context accumulates across runs. The scheduled tasks panel shows human-readable schedules (“Every weekday at 9am”), last-run times, and collapsible prompts.

Available on mobile too.

Multi-conversation sidebar

Each channel now supports multiple conversations. The sidebar shows previews with relative timestamps (“2m ago”, “yesterday”), and remembers which conversation you last viewed per channel. Start a new conversation with the + button. Delete ones you don’t need.

Drafts persist across navigation — type something, switch channels, come back, it’s still there.

Rich diff rendering

When the agent edits a file, you get a proper inline diff showing exactly what changed — additions, deletions, context lines. Write operations show a file preview. These render right in the chat alongside the agent’s explanation.

Subagent grouping

When the agent spawns sub-agents for parallel work, those tool calls now group under a collapsible parent. Keeps the chat clean. Expand to see the details.

AGENT.md

Your agent’s identity file is now AGENT.md (renamed from SOUL.md). It comes with structured seed content and an onboarding flow that helps you set it up. There’s a dedicated button in the sidebar footer.

Also shipped

  • Markdown files render with rich formatting in the file explorer
  • Copy-to-clipboard button on files in the explorer
  • Scroll-to-bottom fix when sending a message while scrolled up
  • Auto-scroll no longer hijacks your position during streaming
  • Cursor-based message pagination (loads last 50, fetches more on scroll-up)
  • Copy button on assistant messages (hover for previous turns, always visible on the latest)
  • Retry/regenerate button on assistant responses

Channels, mobile support, and keyboard shortcuts

Channels are live

Your workspace is now organized into channels — like Slack, but for working with your AI. Each channel has its own instructions that shape how the agent behaves. An #eng channel that writes code. A #career channel that helps with job stuff. A #strategy channel that thinks bigger. Same agent, different modes.

The agent can create, update, and delete channels on its own. Channel instructions are editable in a Monaco editor right in the file explorer panel.

Mobile

Printhouse works on your phone now.

  • Composer auto-expands for multi-line input. Enter inserts a newline, send via the button.
  • File explorer opens as a fullscreen overlay
  • Long-press messages for a context menu (copy, edit)
  • Sidebar auto-closes on navigation
  • No more iOS Safari auto-zoom in editors

Keyboard shortcuts

  • Cmd+K: command palette
  • Cmd+E: file explorer
  • Cmd+J: terminal
  • Cmd+B: sidebar toggle
  • Cmd+Shift+M: fullscreen tool panel
  • Escape: close shortcuts cheatsheet or any open overlay

The full list shows up in a cheatsheet modal.

Expanded tool call details

Click any tool call to expand it and see the full arguments and output. Edit tool calls now show rich diffs so you can see exactly what the agent changed.

Also shipped

  • GitHub CLI baked into the sandbox image — gh just works
  • Infinite scroll for message history instead of a “Load older” button
  • 73 OAuth providers via Composio (up from 1)
  • /model shows the effective model in the composer, even when using the agent default
  • Favicon and OG metadata
  • Agent identity renamed from SOUL.md to AGENT.md with structured seed content

File explorer, terminal, and persistent containers

Big week. The workspace went from “chat window” to something you can actually live in.

File explorer

A full split-pane file browser that shows you the agent’s filesystem. Browse directories, view files with syntax highlighting, edit them in a Monaco editor. PDFs render inline. Spreadsheets (xlsx, xls, csv) get a proper table view. Global file search across the entire filesystem.

When the agent edits a file, the explorer auto-refreshes. Click a filename in any tool call and it opens right there. Cmd+E toggles the panel.

Terminal

An interactive terminal panel (xterm.js) connected to the same machine the agent runs on. Cmd+J to toggle it. You can also run shell commands directly from the composer with the $ prefix — output shows up inline.

Persistent containers

Each user now gets their own persistent container. Your files, installed packages, and environment survive across conversations and sessions. No more starting from scratch every time.

Connected apps: OAuth support

Connected apps got OAuth via Composio. Instead of pasting API keys, you can authenticate with a click for supported providers. The agent can also trigger OAuth flows itself when it needs access to something.

Other notable stuff

  • Per-channel model switching via /model command
  • File editing with Monaco editor and Cmd+S save
  • Clickable file path pills in agent responses
  • System prompt builder for customizing agent behavior
  • Channels backend with full CRUD, per-channel instructions, and message history

The foundation

Printhouse exists. We went from a blank repo to a working cloud AI workspace in four days. Here’s what shipped.

The core loop. You type a message, your AI agent responds, and it has a full computer to work with. File system, shell access, package installs — the agent runs on its own machine in the cloud, not yours. Conversations stream in real time over WebSocket.

Chat that actually works. Markdown rendering, syntax-highlighted code blocks with copy buttons, file attachments (drag-and-drop or paste), and a thinking indicator so you know when the agent is working. You can edit any prior message and fork the conversation from that point.

Structured agent questions. The agent can pause and ask you things with multi-choice forms or freeform input — not just “type yes or no” in chat.

Skills. Reusable instruction sets you attach to messages via a / picker in the composer. Think of them as modes you can drop the agent into for specific tasks.

Tool call visibility. Every tool the agent runs shows up as a lightweight activity feed with friendly descriptions and per-tool icons. You can see exactly what it’s doing.

Connected apps. Encrypted credential storage with a proxy that swaps in real API keys at request time. Your agent never touches your actual credentials. Network access controls let you lock the agent down to only the services you’ve explicitly connected.

Steering. You can send messages while the agent is still working. They queue up and get delivered when the agent is ready. No more waiting for it to finish before you can course-correct.

Auth. Clerk-based authentication with per-user isolated containers. Your workspace is yours alone.