Get started
Built on OTP — supervision, hot reload, process isolation

Agent runs you can supervise, sandbox and replay.

Every other harness watches the agent loop from outside — hooks, logs, a dashboard tailing output. Helix makes replay a property of the execution model: a run is a supervised process tree, every tool call passes an ordered gate pipeline, and the event log is the session.

Free for one person No credit card required Open kernel and agent loop
run_8f21 fix flaky auth suite
planner

This is what using it looks like

Sixteen real sessions, four per domain pack, playing one after another. You see what the operator asked, what the harness did about it, and what came back — rendered as components, not walls of text.

RA

Status states, tool calls and rendered components are all events in the session log. The component the agent chose is recorded too, so a rendering can be audited the same way a tool call can.

Watch a run, step by step

Four real objectives from four domain packs. Press play, or click any step to jump. Everything below is the same event vocabulary the product writes to its log.

· · ·
events

Every row above is a persisted, versioned event. In the product these are what replay reads, what branching forks from, and what the audit log keeps.

Four things every harness gets wrong

Not opinions. These are the recurring failure modes across Claude Code, Codex CLI, Cursor's research harness, DeepSeek's dsh, Kiro Crew and OpenClaw — and what the BEAM lets us do differently.

The restart tax

A plugin change means restarting the host. Of the top 100 VSCode extensions, 87 contain executable code and cannot be unloaded at all — the deactivate hook is a shutdown courtesy, not an unload path. In-memory state, open connections and in-flight work all die with it.

In Helix

Native BEAM hot code reload, plus coeffect-aware dependency cycling. An in-tree plugin change swaps the module and re-activates only the components that actually depended on it. Nothing restarts, nothing in flight is lost.

Extension points instead of extension architecture

Most plugin systems expose a fixed menu of hooks rather than a dependency graph. In that same VSCode sample, only 7 of the top 100 extensions declare a dependency on another — and the one that does gets an untyped any back. Ecosystems stay shallow: many leaf plugins, almost nothing that composes.

In Helix

Reactive coeffects as a first-class primitive. A component declares inject: [:llm, :vector_store] and the runtime holds it inactive until both are provided, then cycles it automatically when either is swapped. Contracts are Elixir behaviours, checked at load time across independently compiled packages.

Traceability bolted on afterwards

Hooks, logs and monitor dashboards all watch the loop from outside. None of them make replay, forking or deterministic reconstruction a property of the execution model — so when a run goes wrong you reconstruct it from fragments rather than reproducing it.

In Helix

The event-sourced session log is the source of truth; hooks become views over it. Sessions replay from event 0, fork copy-on-write at any turn boundary, and committed log generations are immutable with an explicit migration chain.

Multi-agent coordination re-derived per team

Cursor published what failed: shared-file locking, rigid planner/executor/judge pipelines that bottleneck on the slowest worker, and a central integrator that becomes one gate all work must pass through. The pattern that worked is not a reusable primitive in any shipped harness.

In Helix

Recursive ownership shipped as the default: a planner owns scope and delegates without knowing who picks work up, siblings never talk, handoffs are structured reports rather than shared state. A crashed worker is ordinary OTP restart, not orchestrator special-casing.

What only runs here

Some of these exist because we chose to build them. Most exist because the BEAM hands them over and a TypeScript harness has to construct them by hand.

H8

Replay and branch as execution, not export

A session forks copy-on-write at any turn boundary. Try a different approach from turn 6, compare the branches, keep one. No session-copy hacks, no re-running from the top.

T1

Crash recovery that needs no orchestrator code

A fiber is a supervised process. A worker that crashes restarts in milliseconds with clean state and its objective intact, because that is what OTP supervision already does. There is no error-handling branch to get wrong.

H7

Plugins that can depend on each other

Capability keys are package-namespaced and every seam declares a behaviour as its contract, checked at plugin load — closing the interface-drift and key-collision gap the Cordis paper leaves open.

T1

Revertible effects with a stated boundary

Process death already reclaims mailbox, memory and ETS ownership. For effects that cross outside — a file write, an email, a payment — the acquisition/emission split says explicitly whether Helix withholds or compensates.

H9

A governance ceiling nothing can exceed

The workspace owner sets a maximum capability. Sessions and automations request less, never more, and the ceiling is enforced at the same gate on every call. An org ceiling can sit above every workspace.

H4.12

Canvas and chat edit one definition

Build a workflow by dragging nodes or by describing it in a session. Both compile to the same underlying DAG, so neither is a lossy view of the other.

H14

Generative UI with a traceable component

Structured output renders as a real component — a table, a diff, an options card — and the component choice is itself an event in the log. Plugin authors extend the library, not the generation mechanism.

H3

Worlds that survive an idle week

A Firecracker microVM checkpoints on pause and restores in milliseconds with its filesystem, memory and fibers intact. Long-running automations stop being a container that dies the first quiet hour.

Trellis kernel · T1–T4

The hard parts were already in the runtime

Helix is the product; Trellis is the kernel underneath it. The two hardest problems in the research this design draws on — revertible effects and a fiber lifecycle state machine — are things a TypeScript harness has to build as a library and the BEAM simply provides.

That is the whole reason this is written in Elixir. The engineering effort goes into the parts the runtime genuinely does not cover: reactive coeffects, structural contracts across independently versioned plugins, and an event-sourced session log with replay and branching.

Browse the capability seams
A harness normally buildsOTP already gives us
A tracked-effect primitive so every mutation carries an inverse Process death is the boundary: mailbox, memory and ETS ownership are reclaimed by the VM
A fiber lifecycle state machine around async transitions Supervisor restart strategies and child specs express most of it declaratively
Hot module replacement from scratch Native hot code reload does the swap; we only decide which components need cycling
A mechanism to scope one key to different bindings per subtree Process isolation plus explicit message passing, free at the process boundary

What OTP does not give us: reactive coeffects, a formal boundary for what counts as revertible when an effect leaves the system, and structural typing across independently compiled packages. Those we build.

H11 · H4 · H5

Every primitive is scoped to a person and a team

Claude Code, Codex, Cursor's harness, dsh and Kiro Crew all model one person working alone against one codebase or machine. Even the most complete of them binds memory, artifacts and automations to a single account — no team ever shares any of it.

In Helix, memory, artifacts, automations and policy are dual-scoped from day one. A team automation is owned by the workspace, not by whoever created it, so it does not leave when they do. A shared artifact is something the team iterates on together, not something trapped in one person's session.

See workspace surfaces
PrimitivePersonalWorkspace
Memory layersYours Shared, permission-aware
ArtifactsYours Iterated on together
AutomationsYou own it The workspace owns it
Knowledge library Private Curated per workspace
ApprovalsYou decide Whoever is authorised
Audit trailYour runs Everything in the workspace

Start with a personal workspace on the free plan and invite teammates whenever you are ready — nothing to migrate, and everything you already built comes with you.

H12 · 7 Built-In Domain Packs

Not an engineering tool with a wider audience bolted on

Every harness studied treats "the object of work is a codebase" as an unstated assumption baked into the product. A domain pack makes it a configuration choice: the pack owns artifact renderers, deploy targets and actionable skills, and never touches the agent loop, the memory model or the gate pipeline.

EN
Engineering
Repo, AST, CI and review

Test triage, Sourceror AST refactors, git worktrees and compiler checks. Artifacts are diffs and reports; the deploy target is a pull request.

SA
Sales
CRM, ICP and pipeline

Pipeline hygiene, lead enrichment, ICP scoring and proposal drafting. Artifacts are account briefs; the deploy target is your CRM.

MK
Marketing
Campaigns and brand voice

Content calendars, SEO telemetry and creative variants inside brand rules you state once. Artifacts are briefs and multi-channel assets.

SC
Science
Literature, ChEMBL and BLAST

Systematic review across PubMed/arXiv, UniProt protein search and dataset provenance where every transformation is a replayable event.

HC
Healthcare
HIPAA Safe Harbor and FHIR R4

18-identifier PHI scrubbing, MEWS clinical acuity scoring and FHIR R4 bundle validation with zero-egress audit trails.

FN
Finance
SOX/FINRA and EDGAR 10-K

Double-entry integer-cent reconciliation, SEC EDGAR 10-K/10-Q extraction and immutable SOX Section 404 evidence logs.

LG
Legal
Privilege walls and redlines

Attorney-client privilege enforcement, contract clause risk matrices and multi-framework compliance mapping (EU AI Act, GDPR, SOC 2).

Creating a workspace asks what kind of work it is for and installs the matching pack, rather than assuming a connected git repository. Regulated-industry packs (Healthcare, Finance, Legal) enforce stricter defaults: human approval gates on sensitive actions, long-term audit retention, and residency-aware storage.

The part that reasons is the open part

Ecosystems fracture at exactly the seam that matters most to a plugin author. One well-known harness open-sources its workspace and scheduling layer while keeping the agent harness — the thing that plans, reasons and executes — proprietary. Another gives you a portable tool protocol with a non-portable UI binding.

Helix takes the opposite position: the Trellis OTP kernel, the supervised agent loop, Dynamic Cognitive Tiering across 19 AI providers, the DASP 1.0 protocol with official Elixir/TypeScript/Python SDKs, and the cross-platform CLI & 14-module Local Cockpit are open — with no privileged core to patch around.

Run your first supervised session today

Free for one person with local and Docker sandboxes, the full event log, replay and branching. Add a teammate when you need shared approvals and audit.

Setup takes about a minute: name it, pick a pack, choose your isolation, set the ceiling.