Local Solana runtime

A local Solana runtime with real guard rails.

TrenchClaw is a Bun + TypeScript runtime for Solana operator workflows with validated actions, managed wallets, local state, and a GUI that talks to the runtime instead of replacing it.

The important difference from thinner OpenClaw-style wrappers is the execution model: tool-gated execution, settings-aware policy checks, instance-scoped state under `.runtime-state`, and a repo-tracked `.runtime` contract that is not treated as live mutable state.

Bun + TS
Compiled runtime, typed actions, local services, and a local web app
Instance-scoped
Vaults, wallets, logs, settings, and workspace state stay grouped per instance
Policy-backed
Tool exposure, dangerous actions, and write scope are constrained by runtime rules
runtime shell

$ trenchclaw

booting runtime...

readonly app loaded from ~/.local/share/trenchclaw/current

state root: ~/.trenchclaw

scheduler online

web gui: http://127.0.0.1:4173

docs: /docs/getting-started

ready for actions and routines

Install Release installer

macOS

copy + run
curl --proto '=https' --tlsv1.2 -sSfL https://trenchclaw.vercel.app/install/macos-bootstrap.sh | bash

Linux

copy + run
curl --proto '=https' --tlsv1.2 -sSfL https://trenchclaw.vercel.app/install/linux-bootstrap.sh | bash

Fetches the installer, which resolves a GitHub Release tarball and verifies its checksum before install.

Guard rails

Why TrenchClaw is not just a wrapper.

The runtime decides what exists, what is enabled, and where state is allowed to live. That makes the operator surface narrower, more inspectable, and easier to reason about than broad shell-first agent setups.

01

Tool-gated execution

The model only gets the action and workspace tools that are present in the runtime tool snapshot for the current run.

02

Policy checks before side effects

Unsupported or disabled actions are blocked before execution, and dangerous actions can require explicit user confirmation.

03

Instance-scoped state

Vaults, wallets, settings, logs, caches, and workspace files live under one active instance instead of a loose shared folder.

04

Runtime-owned source of truth

The GUI is a client for runtime APIs. The canonical state lives in the runtime layer and on disk, not in frontend-only state.

Stack

What actually ships.

Runtime
Bun + TypeScript core runtime with action dispatch, policy evaluation, and local service boot.
Frontend
SvelteKit local GUI that talks to runtime transport APIs instead of owning durable state.
Solana
@solana/kit plus provider-agnostic RPC wiring, wallet management, and Jupiter Ultra integration surfaces.
State
SQLite, JSONL logs, wallet sidecars, and instance-scoped filesystem storage under the runtime state root.

Runtime state model

The folders that matter.

BoundaryWhat it isWhy it matters
.runtimeRepo-tracked runtime contract and template areaNot the live mutable state root
.runtime-statePer-instance mutable state for settings, vaults, wallets, logs, and SQLiteThis is the source of truth at runtime
WorkspaceInstance-scoped operator files, notes, configs, routines, and outputKeeps automation and manual work attached to one instance

Local GUI

The GUI sits on top of the runtime.

The frontend is there to inspect and operate the runtime cleanly. The runtime remains the storage and execution authority underneath it.

dashboard
TrenchClaw runtime dashboard