devstack · Guide › What's next: roadmap & current gaps
This page is an honest map of what devstack does today versus what's on the
roadmap or still a genuine gap. It's grounded in ROADMAP.md and
the specs under docs/specs/ — where something doesn't exist yet,
this page says so plainly.
Now designed (proposed M10 "Interactive-DX" lane). The three gaps below — a projects/env TUI, the monorepo task-runner, and framework templates — now have written RFCs: spec 30 (active context, shell integration, project + env/secrets TUIs, console header, logo) and spec 31 (JS/monorepo templates + hot reload +
devstack runtask graph), with ADRs D18/D19. Still design-stage, not shipped.
The core is real and in daily use:
- Shared services + workspace lifecycle — one warm Postgres/Redis/MinIO (and
Kafka/NATS/RabbitMQ/LocalStack) on the
devstack_sharednetwork, ref-counted, reclaimed withshared gc. See shared-services.md. - The deterministic generation pipeline — config + templates → compose,
byte-identical output,
generate --checkin CI. - A full data plane —
db,s3,queue/topic/stream, the declarativeresources:block, snapshots/restore. See resources.md. - Multi-repo git (
ws), secrets (secret://+ providers), local HTTPS/DNS (trust,dns), tunnels (tunnel), self-update, the global store, and aliases. - Interactive TUIs for a handful of authoring flows (below).
devstack ships on the 0.x beta line (currently ~v0.18.0); 1.0 is a deliberate, later owner call, not something automation reaches.
All are Bubble Tea v2 behind internal/prompt, each with a non-TTY / --json /
--no-input fallback so CI never drives an interactive UI:
| TUI | Command | Spec |
|---|---|---|
| Workspace init wizard | init |
spec 22 |
| Template authoring | template new |
spec 23 |
.env ingestion |
secrets ingest |
spec 24 |
| Live monitoring cockpit | dashboard |
spec 16 |
devstack project list / project new scaffold and register projects (writing
devstack.yaml + a comment-preserving merge into workspace.yaml).
devstack env list / env set KEY=VALUE / env unset edit a service's local
env vars without reflowing your file — the AST rewrite preserves comments and
key order. devstack use (bare, on a TTY) opens a fuzzy project picker.
A richer full-screen create/edit TUI remains a possible extension of the
internal/prompt stack.
Now built-in. A tasks: block in devstack.yaml declares non-container
commands with deps: edges; devstack run <task> plans the dependency graph and
runs it — independent tasks in parallel, output streamed and prefixed per task.
run: host runs on your host toolchain; run: exec runs inside a service
container via compose exec. Monorepo/Turborepo pipelines are covered two ways:
the turborepo template runs turbo run inside its container, or you map each
package's scripts into tasks: so devstack run owns the graph.
# devstack.yaml
tasks:
build: { run: host, command: ["pnpm", "build"] }
test: { run: host, command: ["pnpm", "test"], deps: [build] }
lint: { run: host, command: ["pnpm", "lint"] }devstack run test # runs build → test
devstack run test lint # build+lint in parallel, then test
devstack run test --dry-runNow built-in. node.express, node.nestjs, node.next, react.vite,
bun.app, and turborepo ship as templates with dev-mode hot reload — they
bind-mount the project source (..:/app), keep an anonymous node_modules
volume, run install + the dev server, and set the framework's file-watch polling
env for WSL2. See templates.md. You can still author your own
variant with template new; a minimal node.next-style template:
devstack template new node.next --kind appA minimal template that runs next dev with hot reload:
# ~/.devstack/templates/node.next/template.yaml
schemaVersion: 1
description: "Next.js dev server (next dev) with hot reload."
params:
nodeVersion: { type: string, default: "20" }
service:
build: { context: build, dockerfile: Dockerfile, args: { NODE_VERSION: "[[ .params.nodeVersion ]]" } }
command: ["npm", "run", "dev"] # package.json: "dev": "next dev"
environment:
NODE_ENV: development
volumes:
- "./:/app" # bind-mount source for hot reloadA node.nest template is the same shape with command: ["npm", "run", "start:dev"] (i.e. nest start --watch). See templates.md for
the authoring workflow, delimiters, and extends. First-class,
built-in framework templates aren't in the box yet — but nothing blocks you
shipping them today.
logs and dashboard are real, wired commands (read-only Engine SDK) — not
stubs. What's still in flight is the fuller cockpit (spec 16):
richer multiplexed views, more filtering, and deeper stats. Treat today's logs
and dashboard as solid-but-growing.
At a glance (ROADMAP.md has the detail):
- M8 (beta DX) — release automation, the
init/template new/secrets ingestTUIs. Landed. - M9 (local-cloud platform) — the resource layer, cloud-emulation engines,
and imperative
db/s3/messaging verbs. Shipped (v0.5.0–v0.9.0). - Beyond — the observability cockpit (spec 16), and the two big conceptual additions above (a projects TUI; a task/monorepo runner) if and when they're prioritized.
- ROADMAP.md — milestones, effort, and sequencing.
- Templates — author
node.next/node.nesttoday. - Lifecycle —
logs,dashboard, and theupsaga. - Guide index — the full guide.