Why skein-js
Use skein-js when you have LangGraph.js agents and want to run them on infrastructure you control, with conversations, streaming, background execution, persistence, and a console available together. Your application continues to choose its models, tools, prompts, and access policy.
For a support workflow, that might mean keeping a ticket's conversation, looking up its order, waiting for a refund approval, and continuing tomorrow without losing the request. Start with the parts your application needs; you do not have to use every capability.
Is it a fit?
| You need | What skein-js provides |
|---|---|
| A server for existing TypeScript graphs | Load your langgraph.json or embed compiled graphs in your backend |
| Conversations and human approval | Threads, checkpoints, interrupt/resume, and history |
| Work after an HTTP request ends | Background runs, schedules, and completion delivery |
| A way to test before building a frontend | A local console for inputs, output, state, and failures |
| Durable shared services | Postgres storage, with Redis for cross-instance queues and streaming |
| Agents inside a desktop app, CLI, or daemon | SQLite embedding with one Node process owning the file |
Keep TypeScript graphs and application code together when that fits your team. If a tool or model requires another language, your graph can call that service; skein-js does not require you to rewrite it.
Choose how much to adopt
You can run a LangGraph graph directly when you only need graph execution. Add skein-js when your application needs a hosted protocol, shared state, background work, or an inspection UI. You can also use a plain graph endpoint when threads and runs are unnecessary.
Choose an adoption path:
- Existing
langgraph.json: replacelanggraph devwithskein dev; follow Getting started. - Existing backend: embed your graph alongside your own application routes.
- New project: create your first agent and test it without a model key.
- Local application: embed with SQLite and let your host own process lifetime.
What you operate
You deploy and maintain the server or local application, storage, credentials, backups, and application access policy. The default development server needs no database; choose durable storage for deployment. SQLite suits a single local Node owner; Postgres and Redis suit shared services. See deployment choices.
skein-js is Apache-2.0 licensed. It requires no skein-js account or license key. You still pay for the infrastructure and model services you choose. If you prefer a provider to operate your deployment, compare managed offerings against your hosting, security, and support requirements using their current terms.
Keep your existing clients
Your graphs remain LangGraph.js graphs, and clients use the standard LangChain SDKs. Test an existing client against skein-js before migration; check the compatibility reference for verified versions, supported behavior, and intentional differences. Skein-specific options such as durable delivery need consideration when moving to another host.
When to choose something else
If you only need to invoke a graph inside one request, direct LangGraph execution may be enough. If you want a managed control plane, billing system, model gateway, or evaluation service, those remain separate choices. A frozen serverless function cannot continue background work after its request ends; use a long-lived backend for that deployment pattern.
Try it with your project
Follow Getting started, run a known input in the console, and add a repeatable project test. Verify the behavior your application relies on before choosing a deployment.