withvibe
Working in withvibe

The env panel

The env panel is the single screen the whole team works in. Every tab is scoped to one env — the same chat, the same containers, the same branch. This page walks through what's behind each tab.

Layout

Two columns: the chat on the left (shared agent session, persistent across viewers) and the workbench on the right with tabbed tools. Tabs are:

  • Preview — live URL of the running app
  • Logs — streaming container output
  • Terminal — interactive shell into any container
  • Database — Adminer pinned to the env's detected DBs
  • Git — branch, status, push/PR controls
  • Compose — view / edit the rendered compose file
  • Agents — runs of the agent gate against this env
  • Export — open the env on your local machine via the CLI

Preview

Shows the user-facing URL of the running stack. In subdomain mode, the URL is https://<service>.env-<short>.<baseDomain> as rewritten by the materializer. In port mode, it's http://$${PUBLIC_HOST}:<port> using the host port the orchestrator allocated.

When more than one service is exposed, the panel auto-selects the most user-facing one (preferring service names web, frontend, admin, ui, app) and lists the rest below. Each link opens in a new tab.

Refreshing the preview
The preview iframe is keyed on the container restart count. After compose up finishes, the iframe refreshes automatically; you don't need to reload the page.

Logs

Streams stdout/stderr from every service in the compose project, multiplexed and timestamped. The stream is bounded — the UI keeps the last 200,000 charactersper env in memory and discards older chunks (full history is still available via the API).

Useful patterns:

  • Pause — freeze the scroll while you read.
  • Filter by service — narrows to one container's output.
  • Download — saves the current buffer as a .log file.

Terminal

An xterm.js terminal backed by a WebSocket that runs docker exec -it against the selected container. Anyone with developer-or-above role on the workspace can open a shell; the terminal is shared in real time with everyone watching the env.

  1. Pick a container from the dropdown (lists the env's compose services + the runner if present).
  2. The connection state badge shows connecting → open → closed.
  3. Resize is forwarded as a SIGWINCH so top, vim, etc. render correctly.
Audit trail
Every keystroke sent over the terminal is attributed to the user that opened the WebSocket. Treat it like SSH — don't paste secrets into envs that are shared with people who shouldn't see them.

Database

On startup, the orchestrator scans the rendered compose file for known database images (Postgres, MySQL, MongoDB, Redis) and records them on the env. Click Open viewer to launch a per-env Adminer container, pre-configured to connect to the detected database, published on a random localhost port.

  • The viewer is reused across opens — it stays warm until you stop the env.
  • If the env restarts and the viewer container is gone, withvibe wipes its state and starts a fresh one.
  • The viewer port is bound to the loopback interface, not 0.0.0.0.

Git

The git tab shows the env's branch state per repo. Common actions:

  • Branch — every env gets an auto-generated branch like env/<title-slug>-<short> off the configured base branch.
  • Status — staged, unstaged, untracked counts. Click to expand the diff.
  • Commit — edits the env makes are committed automatically by the agent; manual commits work too.
  • Suggest with AI — one click summarizes the current working-tree changes into a conventional-commit message (a fast Haiku call) and drops it into the message box for you to edit. Needs an Anthropic key and uncommitted changes.
  • Push — pushes the env branch to the configured Git remote.
  • Open PR — drafts a PR via the workspace's Git provider integration.

Compose

Read-only viewer for the rendered compose file (after variable substitution and any Traefik rewrites). Use it to:

  • Diff the rendered file against the source template (toggle “show source”).
  • Copy a snippet to share or paste into another env.
  • Trigger Recompose after you've edited the compose source — the env restarts with the new file.

Agents

Surfaces the agent gate runs for this env. Each run lists the agents that ran (security, review, tests, policy, custom), their verdict (Pass / Notes / Block), and the diff they looked at. Click an agent to open its full report. See The agent gate for the full model.

Export

Generates a withvibe env <envId>command. Run it on your machine and the CLI clones the env's repos, allocates free local ports, starts docker compose up, and opens the worktree in VS Code. See Local export for the full flow and what state moves with you.