npm.io
3.2.5 • Published 2h agoCLI

trellis

Licence
AGPL-3.0-or-later
Version
3.2.5
Deps
7
Size
5.7 MB
Vulns
0
Weekly
0
Trellis

Trellis

The Agentic Framework — a local-first, event-sourced graph engine for code, agents, and decisions.

Docs · Studio · GitHub


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.

Install

npm install -g trellis

Quick start

mkdir my-project && cd my-project
trellis init      # guided or one-shot setup
trellis ui        # live graph explorer
trellis code      # start an agent coding session

Track 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"'

Build a realtime app

Scaffold a typed, live-graph app — React, Vue, or Svelte — backed by Trellis:

npm create trellis@latest
import { 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.

API surface

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

Documentation

Develop

bun install   # requires Bun ≥ 1.0
bun test
bun run build

Global trellis is the published npm package. To opt into this checkout without replacing it:

just alias-cli install   # adds `trellis-dev` to ~/.zshrc
just build
trellis-dev test --review -p /path/to/repo
# or: just trellis-dev …

Source without rebuild: just trellis …. Systemwide local (replaces global): just link-cli / just unlink-cli.

License

AGPL-3.0-or-later Turtle Labs LLC

Keywords