Roadmap
What works today, what's coming, and what deliberately isn't. For when something landed, see the changelog; hit a gap, or one not listed here? File an issue — compatibility reports are the most useful feedback we get.
What's supported
Measured against the LangGraph CLI and LangGraph Platform, since skein-js is a drop-in for the first and an open alternative to the second.
CLI and runtimes
| Capability | Status | Notes |
|---|---|---|
dev / up / build / dockerfile | ✅ | Drop-in, plus skein-only start and import-langgraph. Details |
| Project scaffolding | ✅ | npm create skein-js@latest — no LangGraph Platform equivalent. Details |
| Node 24 production runtime | ✅ | Default production image and fallback |
| Bun / Deno production runtimes | ⚠️ preview | Fetch launchers and images ship; clean-artifact matrices must graduate each |
| Express · Fastify · NestJS · Next.js · Fetch | ✅ | Standalone or embedded in an app you already run. Details |
| Embed a graph in code, no CLI | ✅ | Details |
| A graph as a plain endpoint | ✅ | POST /invoke/:graph_id. Details |
Protocol surface
| Capability | Status | Notes |
|---|---|---|
| Assistants / threads / runs / store | ✅ | Routes and request bodies, guarded against SDK drift |
| Assistants CRUD + versioning | ✅ | Version history and rollback; graph/subgraph introspection |
Streaming, incl. true events mode | ✅ | Real streamEvents v2. Details |
| Human-in-the-loop (interrupt / resume) | ✅ | Via LangGraph checkpointers |
| Time travel — fork from a checkpoint | ✅ | Read, update and run from any prior checkpoint |
| Multitask / double-texting | ✅ | All four strategies, correct across instances |
| Stateless + batch runs, thread count/prune | ✅ | POST /runs, /runs/batch, /runs/cancel |
| Auth + authorization | ✅ | LangGraph Auth parity, ownership filters in the driver query. Details |
| Run-completion webhooks | ✅ | Best-effort. Details |
http.disable_* flags · GET /info | ✅ | /ok stays outside the table, so no flag can break the probe |
| Idempotent run creation | ✅ | No LangGraph Platform equivalent. Details |
MCP endpoint (/mcp) | 🗺️ | LangGraph exposes graphs as MCP tools; not yet built |
Generative UI (/ui/{agent}) | 🗺️ | Needs a ui config block, a bundler and asset serving |
/docs OpenAPI page | 🗺️ | LangGraph serves one; skein dev links the published docs instead |
Storage, scale and operations
| Capability | Status | Notes |
|---|---|---|
| In-memory (dev) · Postgres + pgvector | ✅ | Details |
Bring your own store (store.adapter) | ✅ | Details |
| Store TTL · filter · namespace traversal | ✅ | Details |
| Thread TTL | ✅ | Past LangGraph OSS, which drops ttl on the floor |
| Multi-instance | ✅ | Atomic create guard, cross-instance cancel, per-thread execution claim. Details |
| Cron / scheduled runs | ✅ | Full Crons resource + scheduler, every driver. Details |
| Observability | ✅ | LangSmith, PostHog, OpenTelemetry. Details |
| Console / Studio equivalent | ✅ | Self-hosted at /console — no account, no tunnel. Details |
Planned
- 🗺️ Inbound events — agents behind WhatsApp, Slack and anything else. The big one: a pipeline plus an
EventSourceplugin interface, so putting an agent behind a provider is one small file instead of six pieces of plumbing everyone re-solves. Generic over events, so a GitHub webhook fits the same interface. Design. - 🗺️ Durable outbound delivery. Completion webhooks are fire-once today: a receiver redeploying for ten seconds loses the notification permanently and the run still reports
success. Planned: a delivery outbox committed with the run's terminal status, retries, signing, replay. Design. - 🗺️ MCP endpoint, generative UI,
/docsOpenAPI page — the LangGraph parity backlog above, in priority order. - 🗺️ Per-thread partitioned dispatch. A run waiting on a busy thread's execution claim still holds a worker slot. Purely about utilization — the claim already makes ordering safe.
- 🗺️
POST /runs/search— cross-thread run search; today runs list per thread.
Non-goals
- ❌ WebSocket transport. SSE covers the client UX and doesn't affect the React SDK.
- ❌
skein deployto a hosted platform. Self-hosted by design; there's no managed target. - ❌ Sub-minute cron schedules. A 5-field expression can't express them, and accepting a 6-field one would run a schedule at a different time than its author's crontab says.
- ❌ Backfilling missed cron occurrences. A cron due during an outage fires once on return and resyncs rather than replaying the backlog. Details.