Skip to main content

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:

RuntimeURLWhat you get
Cloudworkspace.sigmashake.comBrowse-only. See every project + its Cloudflare footprint. Run/Inspect/Edit are gated.
Local webhttp://127.0.0.1:<ssg-port>/workspaceFull read/write. Served by the SSG daemon when you ssg serve.
DesktopSigmaShake DesktopFull 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:

TypeTechDetected by
Website or web appCloudflare Workerwrangler.toml
Script or local appBun / TypeScriptpackage.json
Always-on serviceElixir / Phoenixmix.exs
Native binaryRustCargo.toml

Project detail tabs

Click a project and you get five tabs:

  1. 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.
  2. 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.
  3. 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 (SIGTERM the job).
  4. 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.
  5. Edit — settings surface. A plain form for name, description, and the project's "About" blurb that writes back to package.json and CLAUDE.md. Power users can expand Show raw config files for direct CodeMirror editing of package.json, wrangler.toml, and CLAUDE.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:

EndpointCloudLocal / Desktop
GET /api/workspace/projectsStatic registry baked in at build timeLive scan of your filesystem
GET /api/workspace/health501 local_onlyReal git + build state
POST /api/workspace/run501 local_onlySpawns bun run <proj>:<script>
POST /api/workspace/edit501 local_onlyWrites 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):

MethodPathNotes
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/streamSSE — data: {line, done, exitCode?}
POST/api/json/workspace/run/:jobId/cancelSIGTERMs 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/distributionCross-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.md so 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 editorpackage.json + wrangler.toml + CLAUDE.md today. Next: a project-scoped secrets editor that round-trips through wrangler 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