Glossary¶
The load-bearing terminology. Match these terms verbatim — don't introduce parallel vocabulary (CLAUDE.md §7). Each term links to its canonical home.
Identity & tenancy¶
Tenant key — project_id + environment + service_id. Every customer metric and log line is
attributed to this tuple. workspace_id rides along as the billing-boundary label, not part of
the key. There is no customer_id (removed in v1.9) and no customers table.
→ §24.1
Entity hierarchy — workspace → project (carries a default region; placement is per
service-per-environment, FR-077 — nothing is pinned at the project level) → environment
(customer-named, validated RFC 1123 ≤30 chars — no fixed dev/staging/prod enum; flags
is_protected, is_ephemeral) → service (web / worker / cron — cron is post-MVP, §39.3 #48) · database · bucket ·
var_group. → §15, FR-070
Placement & cross-region rule — each (service, environment) and database chooses its
region/cluster (default: the project's region). No private networking across regions
(FR-078): cross-region service calls use public hostnames; databases are region-local.
Cross-environment networking is opt-in (allow_cross_env_networking, FR-079).
→ §20.1
Ephemeral / preview environment — identified by the structural is_ephemeral flag, not by
name-matching. Keys the per-route preview-metric retention treatment (previews are metriced like any env; short-retention post-MVP). → FR-067
The 9 load-bearing labels¶
A Shuttle-created resource missing a required one is a bug (full catalog §24):
starform.io/managed-by (=shuttle, primary Informer filter) · workspace-id · project-id ·
environment · service-id · service-name · cluster-id · var-group-id (on Secrets) ·
database-id (on database resources). (tier is operational, not load-bearing — §24.2.)
→ §24.1
Components (the star metaphor)¶
| Term | Meaning | Home |
|---|---|---|
| Starform | The product — the developer PaaS | Overview |
| Starbase | Control plane — Go monolith, two binaries (API + Worker); decides what should run | Starbase |
| Shuttle | Per-cluster Go agent; applies workloads to each cluster | Shuttle |
| Shipyard | Per-region agent; applies machine lifecycle (provision/upgrade/repair the Talos fleet); post-MVP | Shipyard |
| Starforge | Build pipeline (a BuildService port inside Starbase Worker; Depot + Railpack) |
Starforge |
| Stardeck | Next.js customer dashboard | Stardeck |
| Mission Control | Bird's-eye observability view inside Stardeck | Stardeck |
| Mininova → Ultranova | Customer-facing pod instance sizes (Nova tiers) | §1 |
Naming conventions¶
- Namespace:
proj-<project_uuid>— UUID hyphen-stripped to 32 hex, identical on every cluster; readability via thestarform.io/project-sluglabel → §20.1 - Var Group Secret:
vg-<var_group_id>→ §38 - HTTPRoute:
<project_uuid><service_uuid>-<environment>— each UUID hyphen-stripped to 32 hex chars; positional parsechars[0:32]=project,[32:64]=service, post-hyphen=environment. Load-bearing for metrics attribution. → §20.2
Managed data tiers¶
DB tier ladder — every database/cache is provisioned at a customer-chosen Nova-named tier; the tier alone decides the engine, plans never gate it: Mininova = containerized throwaway · Micronova → Ultranova = dedicated DO Managed (single-node at MVP). → Managed Databases, FR-074
Throwaway database — a Mininova-tier in-cluster DB/cache pod: instant, ~free, "not for
production" — no backup/PITR/upgrade promises; forced for is_ephemeral environments; deleted
with its entity. → Managed Databases
Enumerations¶
The 7 customer metrics — latency, RPS, throughput, error rate, CPU, memory, network. → v2 Read & query
Build states — pending → building → built → deploying → deployed (terminal: failed,
cancelled). → §16.12
Status tags (→ custom admonitions) — [MVP] (!!! mvp) · [Post-MVP] (!!! post-mvp) ·
pre-launch-blocking (!!! pre-launch) · out of scope (!!! out-of-scope) · Decision pending
(!!! decision-pending).
Kubernetes runtime¶
Kubernetes runtime — Starform's own platform (Starbase, Stardeck) runs on managed DOKS; customer workload clusters run on self-managed Talos Linux + gVisor on DO droplets; managed DBs stay DO. → Kubernetes Runtime
gVisor / RuntimeClass — user-space kernel sandbox; customer web/worker pods run runtimeClassName: gvisor,
containing container escapes (FR-082). → Security & Isolation
Vendors / adapters (MVP)¶
Cloud = DigitalOcean (Managed Postgres, Managed Valkey, Container Registry, Load Balancer, VPC peering, Droplets; DOKS for the Starform platform, self-managed Talos for customer workloads) · builds = Depot + Railpack · customer object storage = Tigris (post-MVP; platform storage = DO Spaces) · DNS/CDN/WAF = Cloudflare · payments = Stripe · customer telemetry = ClickHouse (logs + metrics, per-plan TTL) · collection = OTel Collector (per-node agent + regional gateway) + Grafana Alloy (platform) · platform monitoring = Grafana Cloud (MVP-only). → Tech Stack