Deterministic agent harness for Temporal (in Rust)
92
stars
531
commits
Rust
primary language
Sep 9, 2026
updated
Run thousands of agents. Efficient, durable, auditable.
Lightspeed is open-source infrastructure for running long-lived agent fleets as durable workflows.
Agents survive restarts, can run for months, and stay cheap when idle. When they need an operating system, they borrow a real machine for as long as the task requires.
Lightspeed's Rust core runs on Temporal today and stores production data in Postgres with optional S3. The frontend is TypeScript and React. Support for other durable workflow engines is planned.
Lightspeed aims for the capability of Claude Code, Codex, and OpenClaw without requiring one operating system per agent.
Most frontier harnesses live inside a guest OS, which makes them difficult to scale and secure. Hence the emerging pattern to "separate the harness from compute". This is especially useful in enterprises with more stringent supervision and scaling requirements.
So, in Lightspeed, the harness (the agent loop, context, and session state) runs as a lightweight durable workflow. Shells, code execution, and full filesystems run on machines attached only when needed. One worker can therefore manage hundreds of agents.
What you can build with Lightspeed:
You need Rust with edition 2024 support, Node.js 24 or newer, and Docker with Compose. Then start the complete local product:
./dev.sh
You can set the LLM API keys directly in the UI. But you can also set them via environment variable:
cp .env.example .env
# Set OPENAI_API_KEY or ANTHROPIC_API_KEY in .env
# Then restart ./dev.sh
When the readiness checks pass, open
http://localhost:5173/app/ and sign in with the
development account printed by the launcher. The defaults are
admin@lightspeed.dev and lightspeed-dev-password.
The launcher installs dependencies, starts local infrastructure and application processes, applies migrations, and waits until the product is ready.
For other development profiles, service addresses, resets, and live tests, see the local development guide. See Environment variables for environment variables.
Lightspeed covers the table stakes of a modern agent harness. Everything below works today.
Models & providers
Agent capabilities
Bots & channels
Durability & scale
Borrowed compute
lightspeed-envd anywhere with a
registration key and it dials in and registers itself, so NATed VMs,
Kubernetes pods, and benchmark sandboxes need no inbound addressSecurity & auth
Interfaces
In Lightspeed, every agent is driven by an event-sourced, deterministic core. The runtime replays the session log, decides the next step, and emits effect intents that adapters execute against LLM providers and tools. The core itself performs no I/O, which makes it a natural fit for durable workflow engines.
Two more decisions make this practical inside a workflow engine:
Built-in tools are registered by logical identity, such as env.run_process.
The LLM activity selects their names, schemas, and argument adapters for the
turn's model. Those definitions live in runtime code; externally authored tool
definitions and conversation payloads continue to use CAS.
CAS collection runs hourly with a seven-day default grace. Transactional roots retain session and bot content, while scans of up to 100,000 rows per universe, in small pages within a time budget, reclaim abandoned and released blobs. Profiles borrow CAS refs; use inline text or content retained by another durable resource. See context and storage and configuration for retention behavior.
Context entries and run outputs share a content descriptor: the CAS reference and its encoding. Display text and citations are derived from the original payload, preserving native provider data for replay. API message and reasoning views include full visible text; detailed run reads also include the terminal output independently of active context. Tool payloads retain bounded previews and can be expanded through raw blob reads. Optional provenance links an entry to its source audio or prompt assembly report.
The architecture walkthrough introduces the system. Continue with the agent loop and durability, context and storage, and tools and controller workflows for the mechanisms and their limits.
cargo test
npm run check
See Testing and evaluation for focused checks, replay coverage, live-test prerequisites, and model evaluations.
Preview the Starlight manual with npm run dev:docs, or build and validate it
with npm run check:docs. See the documentation site guide
for authoring, styling, and static hosting at /docs/.
Main snapshots and tagged releases include a static documentation archive,
identified by artifacts.docs in the release manifest. Docs CI runs when the
site's content, assets, references, or shared build inputs change.
The site also exports per-page .md files and /docs/llms.txt for agents;
these ship in the same documentation archive.
See CONTRIBUTING.md
Hacker News (1)
Rust
74.3%
TypeScript
24.7%
Deterministic agent harness for Temporal (in Rust)
92
stars
531
commits
Rust
primary language
Sep 9, 2026
updated
Run thousands of agents. Efficient, durable, auditable.
Lightspeed is open-source infrastructure for running long-lived agent fleets as durable workflows.
Agents survive restarts, can run for months, and stay cheap when idle. When they need an operating system, they borrow a real machine for as long as the task requires.
Lightspeed's Rust core runs on Temporal today and stores production data in Postgres with optional S3. The frontend is TypeScript and React. Support for other durable workflow engines is planned.
Lightspeed aims for the capability of Claude Code, Codex, and OpenClaw without requiring one operating system per agent.
Most frontier harnesses live inside a guest OS, which makes them difficult to scale and secure. Hence the emerging pattern to "separate the harness from compute". This is especially useful in enterprises with more stringent supervision and scaling requirements.
So, in Lightspeed, the harness (the agent loop, context, and session state) runs as a lightweight durable workflow. Shells, code execution, and full filesystems run on machines attached only when needed. One worker can therefore manage hundreds of agents.
What you can build with Lightspeed:
You need Rust with edition 2024 support, Node.js 24 or newer, and Docker with Compose. Then start the complete local product:
./dev.sh
You can set the LLM API keys directly in the UI. But you can also set them via environment variable:
cp .env.example .env
# Set OPENAI_API_KEY or ANTHROPIC_API_KEY in .env
# Then restart ./dev.sh
When the readiness checks pass, open
http://localhost:5173/app/ and sign in with the
development account printed by the launcher. The defaults are
admin@lightspeed.dev and lightspeed-dev-password.
The launcher installs dependencies, starts local infrastructure and application processes, applies migrations, and waits until the product is ready.
For other development profiles, service addresses, resets, and live tests, see the local development guide. See Environment variables for environment variables.
Lightspeed covers the table stakes of a modern agent harness. Everything below works today.
Models & providers
Agent capabilities
Bots & channels
Durability & scale
Borrowed compute
lightspeed-envd anywhere with a
registration key and it dials in and registers itself, so NATed VMs,
Kubernetes pods, and benchmark sandboxes need no inbound addressSecurity & auth
Interfaces
In Lightspeed, every agent is driven by an event-sourced, deterministic core. The runtime replays the session log, decides the next step, and emits effect intents that adapters execute against LLM providers and tools. The core itself performs no I/O, which makes it a natural fit for durable workflow engines.
Two more decisions make this practical inside a workflow engine:
Built-in tools are registered by logical identity, such as env.run_process.
The LLM activity selects their names, schemas, and argument adapters for the
turn's model. Those definitions live in runtime code; externally authored tool
definitions and conversation payloads continue to use CAS.
CAS collection runs hourly with a seven-day default grace. Transactional roots retain session and bot content, while scans of up to 100,000 rows per universe, in small pages within a time budget, reclaim abandoned and released blobs. Profiles borrow CAS refs; use inline text or content retained by another durable resource. See context and storage and configuration for retention behavior.
Context entries and run outputs share a content descriptor: the CAS reference and its encoding. Display text and citations are derived from the original payload, preserving native provider data for replay. API message and reasoning views include full visible text; detailed run reads also include the terminal output independently of active context. Tool payloads retain bounded previews and can be expanded through raw blob reads. Optional provenance links an entry to its source audio or prompt assembly report.
The architecture walkthrough introduces the system. Continue with the agent loop and durability, context and storage, and tools and controller workflows for the mechanisms and their limits.
cargo test
npm run check
See Testing and evaluation for focused checks, replay coverage, live-test prerequisites, and model evaluations.
Preview the Starlight manual with npm run dev:docs, or build and validate it
with npm run check:docs. See the documentation site guide
for authoring, styling, and static hosting at /docs/.
Main snapshots and tagged releases include a static documentation archive,
identified by artifacts.docs in the release manifest. Docs CI runs when the
site's content, assets, references, or shared build inputs change.
The site also exports per-page .md files and /docs/llms.txt for agents;
these ship in the same documentation archive.
See CONTRIBUTING.md
Hacker News (1)
Rust
74.3%
TypeScript
24.7%