Skip to content

Introduction

Zidane is a hookable TypeScript agent harness, with a terminal app, a desktop app and a server built on it.

Zidane is a TypeScript agent harness. It sends your prompt to a model, runs the tools the model asks for, and repeats until the model stops. Providers, tools, sessions, compaction and sub-agents all have replaceable defaults.

agent.ts
import { createAgent } from 'zidane'
import { basic } from 'zidane/presets'
import { anthropic } from 'zidane/providers'

const agent = createAgent({ ...basic, provider: anthropic({ apiKey: process.env.ANTHROPIC_API_KEY }) })

await agent.run({ prompt: 'build a REST API' })

Surfaces#

SurfaceWhat it isStart here
The library (zidane)Build your own agent in TypeScriptQuickstart
The terminal app (zidane)A chat app in your terminal, plus zidane run for scripts and CITerminal
The desktop appThe same chat with panels, diffs, terminals and a dev browserDesktop
zidane-serverRuns sessions on another machine for the apps and browsersServer
The UI kit (zidane-ui)The desktop app's chat components for your own React appUI kit
The ACP adapterzidane inside editors such as ZedACP

The terminal and desktop apps run the same engine and share sessions. With the daemon on, they also share live runs (one engine, two apps).

Design principles#

PrincipleWhat zidane does
Token disciplinePrompt caching, read dedup and byte budgets keep long sessions cheap. Compaction is opt-in in the library and on by default in the apps.
Fault recoveryRepairs malformed tool arguments, answers unknown tool names with a fallback, rewrites errors so the model can act on them.
Provider parityAnthropic gets its server-side features, other providers client-side equivalents. Switching providers needs no agent change.

Next#

Reference#