Work across tools and files
Research and act through MCP, work in a full file workspace, delegate to subagents, drive a coding-agent CLI, and run on a schedule.
The open-source harness for knowledge work
Delta is a lean TypeScript-on-Bun harness that is cheap to run, self-hostable, model-agnostic, and easy to configure.
curl -fsSL https://deltaharness.dev/install.sh | shPrebuilt binary for macOS and Linux - no runtime required.
Learn why we built it
We wanted a harness lean and cheap enough to run one agent per user, yet fully featured and genuinely smart - built for the specialized knowledge work no coding harness is made for.
Skip the wiring
No framework to learn - a lean runtime with the tools, memory, learning, and controls already wired in.
Research and act through MCP, work in a full file workspace, delegate to subagents, drive a coding-agent CLI, and run on a schedule.
Carries scoped memory across runs, reflects on real feedback, and updates a versioned self-file - sharper the more the team uses it.
Five plain files define an agent - model-agnostic and fully customizable. Version it, review it, and change it without a framework.
Checkpointed so long tasks survive a restart, with scoped permissions, a fixed policy, and optional ephemeral data that can't leak.
Use it two ways
A person opens a thread, or your product does. The engine, tools, and review loop underneath are the same - what changes is where the human gives feedback.
A person opens one thread per task. The agent researches, works across tools and files, and proposes the result - learning from how each proposal is reviewed.
Your product opens the thread, seeded with task context. The agent drafts, proposes, and reflects on the diff - learning proposed-versus-accepted, per use case.
Bring any model
Use compatible Chat Completions, native Anthropic Messages or OpenAI Responses while preserving policy, identity and tools.
Route across models with streaming, provider choice and cost-aware usage.
DEFAULTUse native Messages with prompt caching and configurable thinking budgets.
NATIVEUse native Responses, or compatible Chat Completions through the OpenAI-compatible route.
RESPONSESBroker-minted Responses access for subscription-backed deployments; tokens are restricted to configured allowlisted hosts.
PREVIEWNeed it to code?
At launch, Delta will hand advanced coding tasks to either CLI with the agent workspace as its working directory, then return the result to the run.
code(task)DELTA_CODE_CLI=codex exec --sandbox workspace-write --skip-git-repo-checkDELTA_CODE_CLI=claude --printInstall either CLI separately. Neither ships in the standard Delta image.
See it in production
Carrara ships internal tools and production software for clients with Delta agents - which is how the harness gets sharper and more robust in production.
Our platform
Our macOS app for running the company - project management and company context. Includes its own MCP, an AI chat, autonomous Delta agents, and automatic granular meeting processing.
Work directly on the brain, scoped to each client's connectors and permissions - real context, real tools, done autonomously within bounds.
A specialized agent that explores the brain and captures structured outcomes - tasks, learnings, risks - from every meeting. Learns from your edits; data is ephemeral.
Our product
The end-to-end AI recruiter platform we build for ourselves and our clients.
Every product feature is its own Delta agent, deployed one per tenant. Around fifteen of them - each self-learning, and costing under a dollar a month.
Test your agent
Open any thread to inspect every model turn, tool call, delegated task, file and recorded cost. These illustrative timelines use the same trace primitives and controls as delta dev.
args { "account_id": "acme" }
result { "arr_usd": 248000, "renewal": "2026-09-30", "probability": 0.62 }args { "account": "acme", "window": "90d" }
result 14 tickets · 4 open · permissions and data sync dominateargs { "query": "acme renewal implementation" }
result 18 days behind · sponsor engaged · no confirmed recovery ownerargs { "review_item_id": "RI-4821" }
result { "revision": 2, "status": "changes_requested" }inbox/2026-07-13/acme-call.txt · 412 lineswrote 3,842 chars to evidence/acme-source-pack.mdtask Read evidence/acme-source-pack.md. Challenge the evidence independently. Identify contradictions, missing owners and unsupported claims. Save the note to evidence/acme-risk-check.md. Make no external changes.
result saved evidence/acme-risk-check.md · 3 material risks · 2 contradictions · 1 missing ownerevidence/acme-risk-check.md · 2.7 KBwrote 1,486 chars to briefs/acme-renewal.mdargs { "supersedes_id": "RI-4821", "artifact_path": "briefs/acme-renewal.md", "run_ref": "resp_a3f09d2c8e174b65a2f941d6bc730e5f", "summary": "Revision 3 leads with material risk and includes an independent challenge." }
result { "review_item_id": "RI-4821", "revision": 3, "status": "pending" }result { "review_item_id": "RI-4821", "revision": 3, "status": "approved_with_edit" }briefs/acme-renewal.md · revision 3 proposed byteswrote 1,522 chars to briefs/acme-renewal.mdtasks [
"Concentration by ARR, product and tenure",
"Support precursors before churn",
"Conflicts between CRM loss reasons and exit interviews"
]
result 3 summaries · research/resp_6b9e2c4f137a42c9b8d501e7a64c023d.0/0-Concentration_by_ARR__product_and_tenure.md · 1-Support_precursors_before_churn.md · 2-Conflicts_between_CRM_loss_reasons_and_e.mdresearch/resp_6b9e2c4f137a42c9b8d501e7a64c023d.0/0-Concentration_by_ARR__product_and_tenure.md · 8.1 KBresearch/resp_6b9e2c4f137a42c9b8d501e7a64c023d.0/1-Support_precursors_before_churn.md · 6.7 KBresearch/resp_6b9e2c4f137a42c9b8d501e7a64c023d.0/2-Conflicts_between_CRM_loss_reasons_and_e.md · 5.4 KBtask Test three causal explanations for the Q3 NRR decline. Analyze only. Do not write files or take external actions.
rubric quantitative support · falsifiability · actionable next step
result winner 2 of 3 · concentrated failures with onboarding precursorwrote 2,304 chars to analysis/q3-retention.mdquery OpenAI official API pricing
result 5 results · official pricing page ranked firstquery Anthropic official API pricing
result 5 results · official pricing page ranked firstquery Google Gemini official API pricing
result 5 results · official pricing page ranked firsthttps://developers.openai.com/api/docs/pricing · 18.2 KB · fetched 2026-07-14T08:12:11Zhttps://platform.claude.com/docs/en/about-claude/pricing · 14.8 KB · fetched 2026-07-14T08:12:12Zhttps://ai.google.dev/gemini-api/docs/pricing · 21.4 KB · fetched 2026-07-14T08:12:12Zargs { "competitors": ["openai", "anthropic", "google"], "stage": "open" }
result 19 opportunities · $1.4M pipeline · 7 directly exposedargs { "renewal_within_days": 90 }
result 6 renewals · $740k ARR · 3 require response this weekevidence/pricing/2026-07-13.md · 9.2 KBwrote 2,618 chars to analysis/pricing-watch-2026-07-14.mdwrote 1,904 chars to evidence/pricing-sources-2026-07-14.mdargs { "spec": { "kind": "cron", "cronExpr": "0 7 * * 1", "tz": "Europe/Paris" }, "prompt": "Repeat the competitive pricing exposure check with current public sources." }
result scheduled sched_pricing_monday
next run 2026-07-20T05:00:00.000Zresult $2.4M gross pipeline at risk · $860k net renewal exposureresult 7 accounts need decisions · 3 have committed mitigationsresult permissions and data sync remain the leading renewal precursorresult 11 cited account-team decisions across 5 channelsmemos/weekly-account-2026-W28.md · 3.8 KBtask Draft and compare three executive memo narratives. Draft only. Do not write files or take external actions.
rubric decision clarity · evidence coverage · executive brevity
result winner 1 of 3 · lead with net exposure, retain gross pipeline as contextwrote 2,146 chars to memos/weekly-account-2026-W29.mdargs { "artifact_path": "memos/weekly-account-2026-W29.md", "run_ref": "resp_2e7c5b9d4a814f6ca320e7581b96d04a", "summary": "Friday account memo with seven decision points." }
result { "review_item_id": "EM-204", "status": "pending" }result { "review_item_id": "EM-204", "status": "approved_with_edit" }memos/weekly-account-2026-W29.md · proposed byteswrote accepted bytes to memos/weekly-account-2026-W29.md| run | status | model | in | out | cost | input |
|---|---|---|---|---|---|---|
| resp_5db7a18 | done | anthropic/claude-sonnet-5 | 15,030 | 564 | $0.0087 | Review outcome for EM-204... |
| resp_d4a8f1c | done | anthropic/claude-sonnet-5 | 112,540 | 1,194 | $0.0584 | Assess competitor pricing exposure... |
| resp_6b9e2c4 | done | anthropic/claude-sonnet-5 | 129,876 | 1,819 | $0.0802 | Explain the Q3 retention drop... |
| resp_b71e02c | done | anthropic/claude-sonnet-5 | 16,732 | 545 | $0.0085 | Review outcome for RI-4821... |
| resp_2e7c5b9 | done | anthropic/claude-sonnet-5 | 54,430 | 990 | $0.0272 | Prepare the weekly account memo... |
| resp_a3f09d2 | done | anthropic/claude-sonnet-5 | 73,380 | 1,500 | $0.0371 | Build Acme's renewal decision pack... |
# Acme renewal brief Review item: RI-4821 · revision 3 · approved ## Executive signal Renewal is at risk. The implementation is 18 days behind the approved plan, and support volume remains concentrated in two workflow blockers. ## Material risks 1. Timeline confidence fell after the June integration change. 2. Fourteen support tickets cluster around permissions and data sync. 3. Executive sponsorship is active. A recovery owner is proposed, but the start date is not confirmed. ## Evidence - CRM opportunity and renewal plan, checked today - Support ticket themes, trailing 90 days - Account-team call notes and cited Slack decisions ## Recommended next step Confirm the recovery owner's start date and a dated two-week plan before changing the CRM stage.
| id | namespace | agent_id | user_id | audience | task_type | artifact_kind | content | trust | source | confidence | hits | last_used | created_at |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 50 | account-review | account-intel | nic | user | preference | Lead executive account memos with net exposure after committed mitigations; keep gross pipeline as context. | trusted | review | 0.97 | 0 | 1784023200000 | ||
| 49 | account-review | account-intel | nic | user | preference | Distinguish proposed owners from confirmed owners in renewal briefs. | trusted | review | 0.97 | 0 | 1784021400000 | ||
| 48 | account-review | account-intel | agent | procedure | Lead renewal briefs with material risk, then evidence. | trusted | review | 0.96 | 5 | 1783947600000 | 1783515600000 | ||
| 47 | account-review | account-intel | nic | user | preference | Preserve approved context when revising a review item. | trusted | review | 0.93 | 3 | 1783947300000 | 1783688400000 | |
| 46 | account-review | account-intel | agent | pitfall | Do not change the CRM stage before human approval. | trusted | review | 0.98 | 4 | 1783947000000 | 1783774800000 | ||
| 45 | account-review | account-intel | task_type | renewal-brief | procedure | Cross-check support themes against account-team notes. | trusted | self | 0.89 | 2 | 1783946400000 | 1783857600000 |
Ship it
Pair one Delta binary with one persistent volume. Your controller handles intake, wake and suspend. Delta checkpoints the work.
Read the deployment guide:8080Compiled daemon, durable loop and Cockpit
/v1/responses/v1/tasks/healthz/dev/v1/dev/*Queue zero does not drain reflection or telemetry. Suspending can interrupt background work.
Track everything
Correlate each event with its user, agent, session, run and turn. Inspect live, persist locally or export NDJSON.
Read the telemetry setupcustom NDJSON · GenAI-inspired fieldsmodel.callSee the served model and tracked usage without opening the full prompt.
Get started
Install the binary, scaffold a versionable agent bundle, and open the Cockpit locally - then ship the same binary to your cloud.
One command to install. Then delta init scaffolds without overwriting files, and delta dev opens the local Cockpit. Prefer a package? bunx @carrara-labs/delta-harness runs it via Bun.
# install (macOS / Linux)
curl -fsSL https://deltaharness.dev/install.sh | sh
# create and launch an agent
delta init ./my-agent
delta dev ./my-agentThe bundle is deliberately plain. Version it, review it and change it without learning a framework.
delta dev runs the ordinary daemon on loopback, adds exact successful-call capture and local editing, and opens Cockpit at /dev.
New · Delta Connect
A thin, always-on edge that plugs a Delta agent into a chat channel. The edge holds the conversation; the agent scales to zero between messages.
One guide, for humans and models
The canonical operating guide is written for engineers and language models alike.