Open-source harness engineering toolkit for AI coding agents
The frontier isn't the model — it's the harness: loop, context, tools, hooks, memory, observability. dtoolkit is a family of composable products that make your coding agents smarter, faster, and observable.
Each product has one job, works standalone, and composes with the rest via a neutral ContextBlock[] contract. No vendor lock-in — works with Claude Code, OpenCode, Cursor, Codex, and any tool that speaks MCP or CLI.
| Package | Version | Description |
|---|---|---|
@dtoolkit/core |
Shared types and Zod schemas (Adapter, ContextBlock, Fact, Entity, Tier) |
|
@dtoolkit/sdk |
Typed HTTP clients for dtoolkit services (dbrain + dproxy) |
| Package | Version | Description |
|---|---|---|
@dtoolkit/dbrain |
Persistent memory server — SQLite + FTS5, MCP, REST API, dashboard | |
@dtoolkit/dcontext |
— | Tool cache + background compactor (local) |
@dtoolkit/dprime |
— | Auto-briefing before touching a module |
| Package | Version | Description |
|---|---|---|
@dtoolkit/dproxy |
Universal adapter for invoking models — CLI and REST API | |
@dtoolkit/adapter-claude |
Adapter for Claude Code CLI | |
@dtoolkit/adapter-codex |
Adapter for Codex CLI | |
@dtoolkit/adapter-gemini |
Adapter for Gemini CLI | |
@dtoolkit/adapter-ollama |
Adapter for Ollama CLI | |
@dtoolkit/adapter-opencode |
Adapter for OpenCode CLI |
| Package | Version | Description |
|---|---|---|
@dtoolkit/dstream |
— | Daily digest — what each agent learned, decided, or blocked today |
@dtoolkit/dreplay |
— | Session browser for the team (privacy-aware) |
@dtoolkit/dpair |
— | Real-time pair-programming with a shared agent |
| Package | Version | Description |
|---|---|---|
@dtoolkit/dops |
— | Agent observability — tokens, cost, tools, success rate, errors |
@dtoolkit/dpolicy |
— | Policy-as-code for the team harness |
@dtoolkit/dguard |
— | Pre-commit for agents — validate LLM output before applying |
| Package | Version | Description |
|---|---|---|
@dtoolkit/dforge |
— | Internal marketplace for skills, hooks, and slash commands |
@dtoolkit/droute |
— | Model router (Haiku/Sonnet/Opus) + cost tracking |
@dtoolkit/dcouncil |
— | Multi-agent debate for architecture decisions |
┌─────────────────────────────────────────────────────────────┐
│ Your Agent │
│ (Claude Code, OpenCode, …) │
└──────────────────────────┬──────────────────────────────────┘
│
ContextBlock[] (neutral contract)
│
┌──────────────────┼──────────────────┐
▼ ▼ ▼
┌─────────┐ ┌──────────┐ ┌──────────┐
│ dprime │ │ dcontext │ │ dbrain │
│ briefing│ │ cache + │ │ memory │
│ builder │ │compactor │ │ server │
└─────────┘ └──────────┘ └──────────┘
│
┌──────┴──────┐
▼ ▼
┌──────────┐ ┌──────────┐
│ dproxy │ │ dops │
│ transport│ │ metrics │
└────┬─────┘ └──────────┘
│
┌────────┬───┴───┬────────┬──────────┐
▼ ▼ ▼ ▼ ▼
claude codex gemini ollama opencode
adapter adapter adapter adapter adapter
Design principle: one layer, one responsibility. If two products need to sync to function, it's wrong.
The examples/ directory contains ready-to-run TypeScript examples for the @dtoolkit/sdk package:
cd examples
npm install
npm start # init + start servers + run demo + teardownNo configuration needed — the setup script creates a temporary brain, starts dbrain and dproxy, runs the demo, and cleans up. See the examples README for more details.
# Install dependencies
pnpm install
# Build all packages (dependency-ordered)
pnpm build
# Run tests
pnpm test
# Lint
pnpm lintPer-package:
pnpm --filter @dtoolkit/dbrain dev # watch mode
pnpm --filter @dtoolkit/dproxy build # single buildThis is a pnpm workspace monorepo using Turborepo for task orchestration and Changesets for versioning.
pnpm changeset # describe your change
git push # CI runs lint + test + build
# release workflow creates a version PR
# merging publishes to npm