Most agent frameworks pour everything into the reasoning engine and treat state as an afterthought. Trellis inverts that. It is the system of record for decisions: a persistent, queryable, auditable memory where every thought, tool call, and file change is an immutable operation in a causal graph. It runs fully offline — servers may relay, accelerate, or back up, but never own your state.
- Durable memory — every op is content-addressed and never rewritten or deleted.
- Explainable by default — decision traces record not just what happened, but why.
- Safe to explore — branch state to try multiple paths, then merge or discard.
- Realtime — one write updates current state, durable history, and every live subscriber.
npm install -g trellismkdir my-project && cd my-project
trellis init # guided or one-shot setup
trellis ui # live graph explorer
trellis code # start an agent coding sessionTrack work as graph-native entities instead of text commits:
trellis issue create -t "Bootstrap viz"
trellis issue start TRL-1 # branch + lane; worktree when lanes.worktreeBind
trellis protocol send --parent TRL-1 --from executor --to reviewer \
--re TRL-1 --status HANDOFF # graph-backed handoff (3.2.3+)
trellis whereami # re-entry orientation
trellis milestone create -m "Initial release"
trellis garden # discover & revive abandoned work
trellis query 'find ?e where type = "Task"'Scaffold a typed, live-graph app — React, Vue, or Svelte — backed by Trellis:
npm create trellis@latestimport { defineType } from "trellis/schema";
import { z } from "zod";
export const Task = defineType("Task", {
title: z.string(),
done: z.boolean(),
});<script>
import { entitiesStore, mutations } from 'trellis/svelte/typed';
const tasks = entitiesStore(client, Task); // re-renders live, across every client
const task = mutations(client, Task);
</script>A single mutation produces current state, durable history, and a realtime push to every subscriber — the same write path.
The trellis package exposes focused subpaths:
| Import | Purpose |
|---|---|
trellis/client |
Local + remote client SDK |
trellis/schema |
defineType, typed entities, EQL-S queries |
trellis/{react,vue,svelte}/typed |
Live, schema-typed reads + mutations |
trellis/realtime |
Presence, chat, CRDT text |
trellis/cms |
Read content collections over HTTP |
trellis/server |
HTTP + WebSocket DB server |
Actively maintained. Issues are triaged and PRs reviewed; see What's Open, What's Sold for how the ecosystem is positioned.
- trellis.computer — full documentation
- What's Open, What's Sold — the open-/closed-source line
- The Story — why Trellis exists
- Architecture · Design spec · Roadmap
bun install # requires Bun ≥ 1.0
bun test
bun run buildIn this checkout, prefer just trellis … over bare trellis. Global npm
may lag (format skew: array-era CLI + JSONL journal can wipe ops.json via
trellis repair). Agents are blocked from bare trellis here by the Cursor
shell guard; escape hatch: TRELLIS_ALLOW_GLOBAL_CLI=1.
just trellis status # source CLI (bun src/cli) — default
just trellis-dev status # dist CLI after just build
just alias-cli install # adds `trellis-dev` alias; keeps global intact
just link-cli # make global `trellis` → this checkout
just unlink-cli # restore published trellis@latestAGPL-3.0-or-later © Turtle Labs LLC