Agents you can
read, fork, and ship.

A streaming ReAct runtime with typed tools, progressive skills, and multi-agent teams. Web and desktop, one codebase.

JZ
HZ
ZZ
Open source & growing

Core Capabilities

Four entry points, one runtime

On top of a streaming, resumable ReAct runtime, Zapvol exposes a broad surface of typed, documented primitives. Four worth starting with: a typed tool system with pluggable sandboxes, progressive skills following the agentskills.io spec, persistent memory with 3-tier compaction, and multi-agent orchestration. Pick one to dive in.

load_skill · market-research
1 / 17 loaded
SKILL · agentskills.io v1.0 · 1,284 tokens
market-research
Systematic market analysis with competitive intelligence and trend synthesis.
allowed-tools: tavily_search, exa_company_search, filesystem · min-tier: lite
AVAILABLE
code-review — Structured review with security + performance checks
AVAILABLE
data-analysis — Statistical analysis and visualization workflows
17 indexed · ~24 tokens / entry on-demand ↓
// Agent invokes when task matches a skill
await load_skill({
  skill_name: 'market-research',
})

// Full SKILL.md returned — only activated
// skills occupy context window space
// L3 Tool Instructions — auto-injected at startup
### Skills: `load_skill`

Available Skills:
- market-research: Systematic market analysis...
- code-review: Structured code review...
- data-analysis: Statistical analysis...

// ~24 tokens each · 50 skills < 1,500 tokens
# skills/market-research/SKILL.md
---
name: market-research
description: Systematic market analysis...
compatibility: ">=1.0"
allowed-tools: tavily_search exa_company_search
min_tier: lite
---

# instructions loaded on demand
ask_user_question · Clarify report requirements
HITL ✓ typed
RADIO · default: pdf · 4 options
Preferred output format?
PDF document
Excel spreadsheet
Markdown file
Other…
CHECKBOX
Which sections to include? — summary ✓ · tables · charts · recommendations ✓
2 fields · Zod-validated awaiting user ↓
// HITL tool — halts the agent, awaits structured answer
const answer = await ask_user_question({
  title: 'Clarify report requirements',
  fields: [
    { id: 'format',   type: 'radio',    options: [...] },
    { id: 'sections', type: 'checkbox', options: [...] },
  ],
})

// answer.format / answer.sections — typed & Zod-validated
const result = await bash({
  cmd: 'pnpm typecheck',
  timeout: 30_000,
})

// runs inside Daytona / E2B / Node — same call
// tools/init-tools.ts — mount at startup
initToolRegistry({
  builtin: defaultTools,
  mcpServers: [
    mcpServer('linear', { apiKey }),
    mcpServer('figma', { accessToken }),
    mcpServer('postgres', { url }),
  ],
})

// Capability-filtered per sandbox
session_4f2a · 3 entries · 3 tiers
108K 42K
USER · pinned · 3 days ago
Prefers functional React, strict TypeScript. No class components, no any types.
PROJECT Compaction fires at 80% token budget.
FEEDBACK Never mock the DB in integration tests.
3 pinned · recalled in 8 sessions 61% saved
await memory.save({
  type: 'project',
  content: 'Compaction fires at 80% token budget.',
  pinned: true,
})

// Types: user · feedback · project · reference
const memories = await memory.recall({
  types: ['user', 'project'],
  query: 'compaction settings',
  limit: 5,
})

// Semantic + type-filtered
// Automatic — fires at ~80% token budget
// Tier 0: round degradation       O(1)
// Tier 1: tool-call truncation     O(n)
// Tier 2: LLM summarization        O(llm)

// No config needed · pinned memories preserved
team_build_api · lead + 3 subs
2 / 4 done
running 23s elapsed
Write integration tests for /api/auth endpoints
assigned to test-runner · after: fetch-schema, generate-client
Lead schema-sync, test-runner, doc-writer spawned 15s ago
2 done 1 running 1 queued DAG ↗
// Lead agent invokes spawn_team tool:
spawn_team({
  name: 'build_api',
  members: [
    { name: 'schema-sync', agentType: 'code' },
    { name: 'test-runner', agentType: 'test' },
    { name: 'doc-writer', agentType: 'docs' },
  ],
})
// Lead creates tasks with deps:
create_team_task({
  id: 'write-tests',
  assignee: 'test-runner',
  prompt: 'Write integration tests for /api/auth',
  dependencies: ['fetch-schema', 'generate-client'],
})

// DAG-scheduled — runs when deps complete
// Agents message each other via a tool:
send_team_message({
  to: 'test-runner',
  body: 'schema.json ready at /tmp/schema.json',
})

// Delivered as system-reminder in next step

Why Zapvol

Built to be opened, not hidden

Readable loops, composable agents, swappable sandboxes, one codebase across platforms — all on typed, documented internals you can read, fork, or replace.

Transparency

See the whole loop

Every stage in the ReAct cycle is yours to read, pause, or replace.

  • State machine + SSE streaming
  • Pause, steer, or fork mid-run
  • 3-tier compaction for 100K+ sessions
Orchestration

Solo agent or full squad

Lead agents spawn members with a typed task graph and isolated contexts.

  • Dependency resolution between sub-agents
  • Inter-member messaging with schemas
  • Per-member sandbox isolation
Runtime

Same agent, swappable runtime

One dependency-inverted interface backs three sandbox providers.

  • Node, Daytona, and E2B out of the box
  • Capability-gated tool exposure
  • Drop in a new provider without touching agents
Platform

Web and desktop, one codebase

Shared UI, hooks, and contracts across browsers, Electron, and Hono.

  • PostgreSQL on server, SQLite on desktop
  • React 19 + strict TypeScript everywhere
  • MCP for third-party tools at runtime

How it works

Autonomous by default, shaped by protocol

The same protocol — from a one-line answer to a multi-file refactor. Clarify and Plan activate only when Assess flags them as needed.

Assess

Triage against P0-P3 policies — direct answer, confirmation required, clarification needed, or plan first.

Clarify

optional

When context, goal, or constraints materially affect the outcome, ask the user before acting.

Plan

optional

Emit an explicit todo list — execution stages only, each with verifiable output and a delivery spec.

Execute

Run stages linearly, parallelize independent tool calls when safe, recover from errors openly.

Deliver

Synthesize outputs, verify against the delivery spec, return a direct response or persisted files.

Ready to build?

Get started with Zapvol in minutes. Free and open source.