SigmaShake Workspace
Workspace is a visual home for everything in your monorepo. One screen lists every app and service, what each one does, and how to run, inspect, edit, and ship it. The exact same React app ships three ways:
| Runtime | URL | What you get |
|---|---|---|
| Cloud | workspace.sigmashake.com | Browse-only. See every project + its Cloudflare footprint. Run/Inspect/Edit are gated. |
| Local web | http://127.0.0.1:<ssg-port>/workspace | Full read/write. Served by the SSG daemon when you ssg serve. |
| Desktop | SigmaShake Desktop | Full read/write, native folder picker, runs offline. |
Cloud is for browsing your code on a phone or a teammate's laptop. The local-web and desktop runtimes can actually reach your files — they spawn scripts, stream logs, and edit configs through the SSG daemon.
Open it
# Local web — open the SSG daemon, then visit /workspace
pnpm add -g @sigmashake/ssg
ssg serve
# → http://127.0.0.1:5599/workspace
# Desktop — bundled with SigmaShake Desktop
# Download: https://download.sigmashake.com/desktop/latest/
# Cloud — no install
open https://workspace.sigmashake.com
The first thing Workspace asks for is a Root — the absolute path to your monorepo (e.g. /home/you/code/sigmashake-mono). The desktop runtime ships a native folder picker; local-web reuses the daemon's working directory by default. The path is persisted to localStorage so subsequent loads jump straight in.
What's in the UI
Project rail
The left rail lists every project in the monorepo with a kebab-cased slug and a one-line description scraped from each project's package.json, mix.exs, or Cargo.toml. Filter the list with the search box, click a slug to open its detail panel, or use the New app button (desktop + local only) to scaffold a starter project.
Workspace recognises four project shapes:
| Type | Tech | Detected by |
|---|---|---|
| Website or web app | Cloudflare Worker | wrangler.toml |
| Script or local app | Bun / TypeScript | package.json |
| Always-on service | Elixir / Phoenix | mix.exs |
| Native binary | Rust | Cargo.toml |
Project detail tabs
Click a project and you get five tabs:
- Simple — the friendly landing view. Plain-English description, live URL, big "Preview on this computer" and "Publish to the internet" buttons. Hides any action whose script isn't declared in the project's
package.json, so non-technical operators never see broken buttons. - Service map — an infrastructure graph laid out as a 3×3 grid with the worker in the center and its Cloudflare resources (secrets, domains, D1 databases, R2 buckets, Durable Objects, queues, service bindings, analytics datasets) clustered around it. SVG connection lines, mouse-over hints, plain English everywhere.
- Run — script runner. Pick any script from the project's
package.json, hit Run, watch stdout/stderr stream in over Server-Sent Events. Cancel any time (SIGTERMthe job). - Inspect — health summary. Git status (clean / ahead / dirty), deploy gate (commit-pushed yet?), last build mtime, last test mtime — everything you'd otherwise check across four terminal panes.
- Edit — settings surface. A plain form for
name,description, and the project's "About" blurb that writes back topackage.jsonandCLAUDE.md. Power users can expand Show raw config files for direct CodeMirror editing ofpackage.json,wrangler.toml, andCLAUDE.md(the three-file whitelist is enforced server-side with path-traversal guarding).
Distribution view
The rail has a dedicated Distribution entry above the project list. It's a read-only cross-channel release dashboard for the SigmaShake distribution itself — SSG CLI + SigmaShake Desktop as they flow from monorepo source, through the per-platform build pipeline, out to npm and the download CDN, and onto the public download page. Four columns — Source → Build → Publish → Live — light up green when versions align and red when channels drift. Auto-refreshes every 15 seconds, so a stuck Windows builder shows up without a page reload. A one-click Run release button (desktop + local only) kicks off all three platform builds in parallel.
Feature ideas card
Each project's Simple tab has a Feature ideas card. Dictate (or type) an idea; on save it appends to a <!-- workspace:features --> block inside that project's CLAUDE.md. Next time an AI assistant reads the file, your idea is in its context — no separate backlog, no Notion doc.
Voice dock
A floating mic dock sits in the bottom-right corner. Talk to Workspace using the browser's built-in SpeechRecognition:
- "Go to distribution" → opens the release dashboard.
- "Open chat elixir" / "Open chat" → jumps to that project (slug-prefix tolerant —
sigmashake-is auto-stripped). - "New app" → opens the create-project modal.
- "Filter to navi" / "Clear filter" → drives the rail filter.
- "Refresh" → re-fetches the project list.
Every dispatched intent morphs the page through the same code path a click would take — there's no special-cased "voice mode" anywhere else in the app, so it stays in sync with whatever you'd see on screen.
Create a new app
The New app modal scaffolds a starter project in one click. Pick:
- Website or web app (most common) — Cloudflare Worker, deploys with
bun run deploy. - Script or local app — Bun / TypeScript, runs on your computer.
- Always-on service (advanced) — Elixir / Phoenix, supervised by OTP.
- Native binary (advanced) — Rust, compiles to a standalone executable.
Enter a friendly name, Workspace derives a kebab-case slug (validated against ^[a-z][a-z0-9-]{1,63}$), writes the starter files into the workspace root, and selects the new project automatically.
Cloud degradation rule
A Cloudflare Worker cannot spawn processes or write your filesystem, so the cloud runtime is intentionally limited:
| Endpoint | Cloud | Local / Desktop |
|---|---|---|
GET /api/workspace/projects | Static registry baked in at build time | Live scan of your filesystem |
GET /api/workspace/health | 501 local_only | Real git + build state |
POST /api/workspace/run | 501 local_only | Spawns bun run <proj>:<script> |
POST /api/workspace/edit | 501 local_only | Writes the three-file whitelist |
In the cloud, Run / Inspect / Edit tabs show a CloudGate interstitial with a one-click "Open in SigmaShake Desktop" CTA. The Browse, Simple, and Service-map views still work everywhere.
SSG daemon endpoints
When Workspace runs locally or in the desktop app, every action goes through the SSG daemon. The relevant endpoints (consumed by the bundled local + electrobun API clients):
| Method | Path | Notes |
|---|---|---|
GET | /api/json/workspace/projects?root=<abs path> | Returns {root, projects: ProjectCard[]} |
GET | /api/json/workspace/health?projects=<csv> | Per-slug git status, deploy gate, build/test mtime |
POST | /api/json/workspace/run | {project, script} — spawns bun run <proj>:<script>. Returns {jobId}. |
GET | /api/json/workspace/run/:jobId/stream | SSE — data: {line, done, exitCode?} |
POST | /api/json/workspace/run/:jobId/cancel | SIGTERMs the job |
GET | /api/json/workspace/edit?project=<>&file=<> | Returns {content} |
POST | /api/json/workspace/edit | {project, file, content} — path-traversal guarded, three-file whitelist |
POST | /api/json/workspace/create | {name, type, description} — scaffolds a starter project |
GET | /api/json/workspace/distribution | Cross-channel release status |
All non-GET requests carry the dashboard's X-SigmaShake-Token header, so cross-origin browsers and other agents on your machine can't drive your build pipeline by accident.
What's incoming
Active work in Workspace right now:
- Talk-to-Workspace v0 — the floating voice dock (shipped). Next: per-project commands ("run dev on chat", "deploy support").
- Feature-ideas → AI loop — dictation into a project's
CLAUDE.mdso Claude Code sees the idea on its next read. Shipped on the Simple tab. - Service map — Cloudflare resource graph for every worker (shipped). Next: cross-worker edges (service bindings light up the target worker too) and Elixir/Bun project variants.
- Distribution dashboard — Source → Build → Publish → Live for SSG + SigmaShake Desktop (shipped). Next: per-channel diffs ("npm says 0.29.21, download CDN says 0.29.18") and one-click rollback.
- New-app scaffolds — four project types today. Next: stronger templates (auth, D1, R2, Durable Object starters) and a "Clone an existing project" mode.
- Inline editor —
package.json+wrangler.toml+CLAUDE.mdtoday. Next: a project-scoped secrets editor that round-trips throughwrangler secret put.
The roadmap is tracked inline in each project's CLAUDE.md via the <!-- workspace:features --> block — open Workspace, pick a project, scroll to Feature ideas.
See also
- Dashboard — the real-time governance UI Workspace embeds alongside.
- VS Code Extension — the editor-side surface for the same daemon.
- SigmaShake Desktop — the cross-platform native bundle Workspace ships inside.
- CLI Reference —
ssg serveis the daemon Workspace talks to.