Workspace Studio
Workspace Studio is Core's browser surface for builders. It provides per-user branch-based editing, merge requests, and release controls. Organization-level configuration (agent profiles, channels, billing, integrations) lives in a separate Org Settings route.
@norbital-ai/pod. It is a Core-only plugin — the
browser source editor, release UI, and merge request flow all live on Core.Entry points
/_host/app/workspace-studio— edit workspace source, review changes, merge to live/_host/app/org-settings— agent profiles, channels, MCP servers, billing, integrations, security
Branch-based authoring
Each builder gets an isolated git worktree at orgs/{orgId}/users/{userId}/workspace.
Edits commit to the user's working branch. The branch picker in the top bar switches between
preview branches and the live environment.
When a builder selects a preview branch, Workspace Studio:
- Provisions an ephemeral Neon DB branch (forked from the preview branch, 7-day TTL)
- Checks out the branch in the user's worktree
- Loads the workspace source for that branch
If the DB branch has expired (TTL hit), it is automatically re-provisioned on the next checkout. The branch picker shows DB status badges: DB (active), DB expired, or nothing (not provisioned).
Tenant shell sidebar
In the live tenant workspace (outside Studio), the left sidebar groups navigation under two section labels — uppercase muted text, not clickable nav rows:
- Platform — host plugins shipped with Core
- Applications — tenant apps authored in workspace source
Labels are plain text only (no icon box on the label itself). Only the rows beneath them are clickable links.
Platform items use feature-colored icon wrappers from FEATURE_COLOR_STYLES:
- Agent —
agents(brand) - Workspace Studio —
workspaceStudio(sky) - Org Settings —
accessControl(blue)
Applications are tenant Svelte apps registered in workspace.ts. Each
app row uses the customApps (slate) icon treatment.
Manifest view
Workspace Studio's Manifest browser summarizes the workspace contract without opening individual source files. Sections:
- Collections — data model modules
- Apps — registered tenant applications
- Automations — scheduled or manual jobs from
automation/*.ts(cron schedules, agent tasks). See Automations. - Handlers — custom remote functions from
remote/*.handler.ts, registered viainvoke:inworkspace.api.tsand called asapi.invoke.<name>(…). Icon:function-square(custom function). See Handlers / remote functions. - Environment — runtime configuration surfaced to the workspace
Use Manifest for orientation and quick counts; switch to the Editor tab to change source.
Release flow
Builders use the toolbar for release operations:
- Commit — persist open edits to the working branch, then run sync preview in one step: rebase onto
main, runnorbital build, commit the built tree, apply DDL to the branch's preview DB, and open or update a merge request. (Unsaved buffer edits must be committed before preview rebuilds.) - Sync preview — the build-and-apply step above; triggered by Commit when source has changed. Rebuilds the preview workspace and Neon branch DB from the latest branch commit.
- Merge to live — fast-forward
mainto the branch commit, run PITR + DDL apply on the live DB, mark the merge request as merged. Available from the Review tab or toolbar. - Rollback — restore a prior production checkpoint (from the Review sidebar)
On a successful merge, Core closes the preview branch (git ref + Neon dev DB), switches Studio back to Live, and production serves the merged checkpoint.
Review tab
The Review tab shows:
- Merge requests — open MRs with branch name, author, build status
- Diff viewer — side-by-side CodeMirror diff between working/preview/live/checkpoint sources
- DB migration preview — DDL that would be applied on merge-to-live
- Merge button — disabled if the branch is not mergeable (main has diverged)
- Checkpoints — release history with rollback action
Org Settings route
Organization-level configuration is separated from workspace source editing. The Org Settings
route (/_host/app/org-settings) is not affected by branch switching. It contains:
- Agent — profiles (model, system prompt, tools, skills, default-for-web), channels (Telegram/WhatsApp), MCP servers
- General — organization settings
- Billing — subscription and usage
- Integrations — SSO and connectors
- Security — access control and audit
Release concurrency
Only one release operation runs per organization at a time. The merge-to-live button is disabled
if main has diverged from the branch (the branch must be rebased first). Reload Studio
if another builder synced or merged while you were editing.
Source edits vs org settings
Structural workspace changes — collections, apps, hooks, handlers, automations, seed policies — belong in workspace source (Workspace Studio). Organization-level configuration — agent personas, channel credentials, billing — belongs in Org Settings.