Skip to content

Features ​

What skein-js can do, in one page. Find the row that matches what you're trying to build, then follow the link. ✅ ships today · ⚠️ preview · 🧪 experimental (works, may change in a minor release) · 🗺️ planned.

Comparing against LangGraph Platform specifically? roadmap.md has the same ground organised by parity instead.

Run agents ​

CapabilityStatusWhat it gets you
Background jobs✅Fire-and-forget work: hand skein a job, get an id back, hear the result by webhook
Background runs✅Return immediately, let the graph keep working, join the stream later
Wait / stream runs✅Hold the connection for the answer, or stream tokens as they're produced
Stateless & batch runs✅One-shot calls with no conversation to keep; up to 100 runs per request
Multitask / double-texting✅Decide what a second message does to the run already going — all four strategies
Cancel & rollback✅Stop a run, keeping its writes or discarding them
Run timeouts✅Bound a graph that hangs, instead of losing a worker slot
Idempotent run creation✅A retrying caller can't start the same run twice. No LangGraph Platform equivalent
Cron schedules✅Fire a graph on a schedule, exactly once across instances, no leader election
A graph as a plain endpoint✅POST /invoke/:graph_id — body in, final state out, no threads or runs
Deep Agents🧪 experimentalServe a LangChain createDeepAgent graph — files, per-user memory, approval, and subagents streamed live or run in the background

Hold a conversation ​

CapabilityStatusWhat it gets you
State, context & persistence✅What the agent knows, what's only for this run, and what survives a restart
Threads✅Conversations that persist, addressable by your own key (a ticket id, a phone number)
Streaming (SSE)✅Tokens, tool calls and reasoning as they happen — including a true events mode
Reconnect & join✅Resume a dropped stream, or tail the same run from a second client
Subgraph streaming✅stream_subgraphs streams nested graphs and subagents under mode|<namespace> names
Human-in-the-loop✅Pause for approval and resume hours later, from anywhere
Time travel✅Fork from any past checkpoint and run forward — "edit and resubmit"
Thread state & history✅Read, patch, page, copy or prune a conversation's state
Thread TTL✅Expire conversations automatically. LangGraph OSS ignores ttl; skein doesn't
Assistants & versioning✅Ship a prompt change without redeploying, and roll it back in one call
useStream and friends✅The LangChain client ecosystem works unchanged — React, Vue, Svelte, Angular

Remember things ​

CapabilityStatusWhat it gets you
The store, via getStore()✅Memory that outlives a conversation, reachable from inside a graph node
Semantic search✅pgvector-backed recall, with optional HNSW indexing
Filters & namespace traversal✅Query memory by value, and walk namespaces with wildcards
Store TTL✅Expire memories, optionally refreshing on read
Bring your own store✅Point skein at a LangGraph BaseStore or your own implementation
Memory patterns✅Profile vs collection shapes, the dedup trap, recall, background writes

Build workflows across your systems ​

LangGraph owns workflow orchestration; it doesn't own provider integrations. Skein channels supply the authenticated sources and durable destinations around the graph.

CapabilityStatusWhat it gets you
Workflows & channels✅Turn provider events into real processes with durable outcomes
Run-completion webhooks✅Be told a run finished — durably, so a receiver's redeploy doesn't lose the news
Signed callbacks✅Receivers can prove a callback is yours and reject replays. The verifier ships too
Deliveries & replay✅See every attempt, and re-send one by hand when it never landed
Custom auth✅LangGraph's Auth model, drop-in, with ownership filters pushed into the query
Telemetry sinks✅LangSmith, PostHog, OpenTelemetry — or your own TelemetrySink
MCP endpoint✅Expose authorized Assistants as tools over Streamable HTTP

Operate it ​

CapabilityStatusWhat it gets you
The console✅Test graphs and track channel wiring, interrupts and deliveries at /console
Postgres + pgvector✅Durable server storage with semantic search and automatic migrations
Local apps with SQLite✅Desktop, CLI, and daemon embedding with persistent resources, queue, and checkpoints
Redis queue & pub/sub✅Durable run queue and cross-instance streaming
Multi-instance✅Run independent conversations across replicas, with cross-instance cancellation
Errors & logging✅What a failed run reports, and where — wire, log, and callback
Deploy anywhere✅One image; guides for Cloud Run, Fly, Railway, Render, AWS, Kubernetes, a VPS
Performance tuning✅Every knob in one table, plus symptom → knob triage
Bun / Deno runtimes⚠️ previewPreview deployment targets; use Node for the default production path

Build on it ​

CapabilityStatusWhat it gets you
Framework adapters✅Express, Fastify, NestJS, Next.js, native Fetch — standalone or embedded
Embed a graph in code✅No langgraph.json, no CLI — bring a compiled graph and mount it
Drop-in LangGraph CLI✅skein dev for langgraph dev, with your langgraph.json unchanged
Scaffolding✅npm create skein-js@latest — a working project, no API key needed
Your own adapter✅Put the handler table on any HTTP framework
Your own agent runtime✅Serve the Agent Protocol from something that isn't LangGraph

Deliberately not ​

  • WebSocket transport — SSE covers the client UX and doesn't affect the React SDK.
  • skein deploy to a hosted platform — self-hosted by design; there's no managed target.
  • Sub-minute cron schedules, and backfilling missed occurrences — see crons.md.
  • Exactly-once webhook delivery — delivery is durable and retried, but at-least-once, so every attempt carries a stable dedup key. See webhooks.md.

Something missing? File an issue — compatibility reports are the most useful feedback we get.