One contract for decisions.
A route you can explain.
Sys1 gives an agent or application one typed request for yes/no, choice, and score decisions. Start local, enable hosted Jev explicitly, embed the router in Bun, or connect a compatible HTTP service.
Getting started
Pick the route that matches where your decision should run. Local Qwen is experimental; hosted Jev is opt-in and stays hosted-only when enabled.
Local, with Qwen
Install and select the experimental Qwen3 1.7B quality tier. The choice is persisted and is never silently replaced by a smaller installed model.
sys1 setup --tier quality
sys1 up
sys1 status
Hosted, with Jev
Set the credential in your environment, then enable Jev. Sys1 stores the activation flag, not the key, and a provider failure does not fall back to local inference.
export TYPESAFE_API_KEY=…
sys1 jev enable
sys1 up
Install the pinned release
Use the immutable GitHub Release artifact when you want the CLI without building from source. The native runtime is granted only for the named optional dependency.
npm install --global --allow-scripts=node-llama-cpp \
https://github.com/hraness/sys1/releases/download/v0.9.0/hraness-sys1-0.9.0.tgz
sys1 doctor
Use sys1 setup --dry-run --json to inspect the local recommendation before downloading weights. Use sys1 doctor to inspect runtime, model store, routing, and daemon state.
Integration modes
The request and response contract stays the same while the lifecycle belongs to the mode you choose.
Portable client
Use the dependency-light @hraness/sys1/client entry from Node 24 or Bun. It validates requests, bounds response bodies, propagates cancellation, and makes one explicit HTTP attempt.
npm install --omit=optional \
https://github.com/hraness/sys1/releases/download/v0.9.0/hraness-sys1-0.9.0.tgzClient guide Embedded Bun router
Use createRouter when your Bun application owns routing and local model lifecycle. It opens no port and exposes evaluate, fetch, and dispose.
Loopback HTTP
Run sys1 up for a local daemon. The endpoint is POST /v1/systemone; discovery is GET /v1/models; liveness is GET /healthz.
{
"state": "The build failed after a dependency update.",
"questions": {
"action": {
"type": "choice",
"criteria": { "repair": "Fix it", "continue": "Keep going" }
}
}
}
Backends & models
Wire compatibility is a boundary, not a quality claim. Keep the model identity and routing policy visible in your application.
- Hosted Jev 1.13.0
- Provider-backed route for a hosted pilot. Enabling Jev selects
hosted-only; the credential remains environment-only. Network-inclusive timing and provider capacity are outside local measurements. - Local Qwen3 1.7B
- Selected by the quality setup tier and run through the pinned llama.cpp adapter. Local probability readout is experimental and must be evaluated on your own representative cases.
- Local Qwen3 0.6B
- Explicit compact diagnostic tier. It is not a memory-driven fallback and cannot silently replace the configured local model.
- Compatible HTTP service
- Register a service that implements
POST /v1/systemoneandGET /v1/models. Select it explicitly; adding a backend does not alter default routing.
Sys1 adapters return validated Jev-compatible answer shapes. They do not make generic local weights interchangeable with Jev, OpenJev, or another provider's calibration.
Evidence & research
Evaluations are dated studies under this evergreen guide. They preserve raw reports, workloads, runtime boundaries, and caveats so a new release does not turn one result into a promise.
The evaluation pages are evidence, not a default-selection guide. Read the current release behavior above, then inspect the fixture and raw report before making a quality or cost decision.
Start with one typed decision, then measure the route your application can own.
Get Sys1