Abhed · a Zybuu product · invite-only

The agent harness for work that cannot leave the building.

Abhed is a deep agent harness: the loop, the tool contracts, the permission engine and the sandbox. It runs on your own hardware, against a model you host. Policy, audit and deny rules hold when you embed it in something else.

one static binary 20 providers no egress by default Go SDK
~/demo — abhed recorded session
sandbox process egress none model 26B, local ✓ every step recorded

Why Abhed

Five things "under your control" actually means.

Each one is a property this repository tests, not a line of copy.

Runs where the data is

One static binary, from a laptop to an air-gapped rack, with a signed offline bundle for the rack.

Runs any model

Twenty providers over three wire formats, including the one on your own GPUs. Changing vendors is a line of config.

Sandboxed by default

Inside a boundary the operator sets and the agent cannot lift, with an approval policy the operator owns.

Every action on the record

An append-only event log, replayable step by step, with every approval and refusal and who made it. Exportable as traces.

Embeds without weakening

The SDK gives a program the same loop with the same guarantees. The console is a reference app built on it.

A real session

Ninety seconds, captured — not a mock-up.

A 26B model running locally, asked to add a function, write a table-driven test for it, and run the suite. Step through it; the explanation on the right follows the terminal.

~/demo — abhed recorded session
step 1 of 5

Install

One static binary. No runtime to install.

# Go 1.26 or newer. Abhed is a single binary with no runtime dependencies.
git clone https://github.com/yuvrajsingh/abhed
cd abhed
go build -o ~/.local/bin/abhed ./cmd/abhed

abhed -version
The repository is not public yet. There is no go install path and no piped-shell installer, because neither would work today and both are easy to check. Access is by request — the form is at the bottom of this page.

Full instructions, configuration and every tool contract are in the documentation.

The harness

Five ways to run it. One set of rules.

The same agent loop, the same policy engine, the same audit trail, whether you drive it from a terminal, a pipeline, another language, or your own Go service. A guarantee that held in the CLI and not in the server would not be a guarantee.

SurfaceWhat it is for
abhed Interactive. Line editor, slash commands, steer a run mid-flight.
abhed -p "…" Headless. One prompt, typed exit code, for CI and scripts.
-output-format json One JSON event per line on stdout, streamed as it happens.
abhed rpc JSONL over stdio. Drive it as a subprocess from any language.
abhed serve REST, SSE and a web console. Multi-user, tenant-scoped.

Embed it

Policy, audit and deny rules hold when embedded.

Your application supplies the approver and consumes the event stream — because a host usually has better ideas than a terminal prompt about how to ask a user for permission. Policy still decides what runs, every action is still recorded, and an extension still cannot permit what a deny rule forbids. No approver means refuse, never assume yes.

One guarantee that does not come with it: the SDK builds no sandbox. An embedded agent runs commands with the privileges of the process that embedded it, so the host is responsible for isolation — a container, a jail, a separate user — exactly as it would be for any other library that shells out.

a, err := abhed.New(ctx, abhed.Options{
    Workspace: "/srv/work",
    Provider:  &abhed.Provider{Type: "anthropic", Model: "claude-opus-4-5"},
    Mode:      "auto",
    Deny:      []string{"bash(rm -rf *)"},

    // Your app decides. No approver means refuse — never assume yes.
    Approve: func(ctx context.Context, tool string,
        args json.RawMessage, d abhed.Decision) (bool, error) {
        return askYourUser(tool, args, d.Reason)
    },

    // Every action, as it happens.
    OnEvent: func(ev abhed.Event) { log.Println(ev.Type) },
})
defer a.Close()

answer, err := a.Run(ctx, "fix the failing tests")
RunRunJSONContinueSteerForkEventsUsageExportHTMLSetModel

Steer works from another goroutine, mid-run. For anything not written in Go, abhed rpc is the same agent over JSONL.

Primitives

Extend it without forking it.

Extensions

Separate processes speaking JSONL, in any language, on seven live events — tool calls, results, context, compaction, agent start, tool listing and invocation. They may veto, never permit: an extension that could grant permission could also remove the proof of what was permitted.

Skills

A directory with a procedure in it. Only the name and description reach the prompt — about fifteen tokens each — and the body is fetched when the agent decides it applies. A skill may also declare a pipeline the harness executes rather than asks the model to follow.

MCP

Registered servers only, disabled until explicitly enabled, with an optional tool allowlist, and credentials read from the environment rather than a config file. Discovery does not imply trust.

Providers

Twenty of them over three wire formats, added from config without a rebuild. A sampling parameter the provider cannot honour fails at startup rather than being silently ignored.

Governance

What the agent did, provable afterwards.

Most of what an agent harness offers can be added later as an extension. Two things cannot: a log you can replay, and an isolation boundary the database enforces. Both have to be in the core, which is where these are.

They are not on by default. Abhed ships with an in-memory store, which keeps a single-machine trial simple and gives you none of what follows. The triggers and the row-level security are properties of the Postgres store — one config line — and a deployment that needs to prove anything to an auditor has to be running it.

The log is the session

Every action is an event in the store, and the conversation is derived from those events rather than described by them. That is what makes replay exact and forking from any earlier step cheap — nothing extra had to be stored to make either work.

Immutable by trigger Postgres

Recorded events cannot be updated or deleted. Not by convention and not in application code — by database triggers that reject the statement, so an audit trail cannot be quietly rewritten by whatever is holding the connection.

Tenants isolated in the database Postgres

Row-level security scopes every query, with FORCE because a table's owner bypasses ordinary RLS — and the application role usually owns the tables it created, which leaves the policy silently inert. A test read another tenant's rows until FORCE was added.

Deny is absolute

A deny rule holds in every permission mode, including bypass. An extension may veto a call and can never permit one, so no plugin, profile or mode can widen what an operator forbade.

What this is not. None of it is a compliance certification, and none of it substitutes for one. It is the mechanism an auditor would ask to see — who did what, under whose authority, and can it be shown afterwards — built where it cannot be turned off rather than asserted in a policy document.

Context engineering

Compaction is a capacity decision, not a quality knob.

Headroom for the turn that is coming

The threshold is applied to used tokens plus headroom for the turn that is coming, not to what has already happened. Without that margin the check passes at 24,809 of a 32,768 window, the next tool result adds 8,000, and the call fails — having been told, correctly, that there was no need to compact.

Chosen, not truncated

The system prompt and memory file are re-injected whole, recent turns are kept verbatim and split at a tool-call boundary so the model never sees a result answering a call it cannot see. Exchanges are dropped from the front until what remains actually fits, and compaction returns to half the window rather than to the threshold, because stopping at the threshold leaves the session one turn away from compacting again.

Subagents are a compression ratio

Subagents get a fresh context and a narrower tool set, and return a bounded summary — so the orchestrator grows by the summary rather than the transcript. Isolation is not free: each spawn re-prefills its own prefix, and that spend counts against the parent's budget rather than multiplying invisibly.

Reference application

Abhed Chat is one thing built on it.

A multi-user console — documents in and out, diagrams, live Kubernetes debugging, SSH to declared hosts, every write behind a human approval gate. It is a demonstration of the harness, not the product, and it is built on the same SDK anyone else would use.

It is running now at abhed.zybuu.com — the sign-in page is public, and access is by invitation while it runs on our own infrastructure. Request one and we will get back to you.

Evidence

Numbers that survive a technical diligence call.

24 / 24adversarial attacks blocked in the red-team suite
588test functions across the engine
20model providers behind one abstraction
0bytes leaving the network by default

Benchmark

Same model, same prompt, three harnesses.

Twenty-four Exercism Python exercises, one local 26B model (gemma4:26b through Ollama), the identical prompt for every system, scored against the original test file after each run. What varies is the harness, so the harness is what the numbers measure.

24/24Abhed, the harness on this page
22/24a 150-line bare tool loop, no policy, no compaction
19/24aider 0.86.2, its default one-shot invocation

Abhed was the slowest of the three and used the most tokens: it verifies and iterates where the others stop. That is the trade, stated plainly. The suite is small and single-file, and says nothing about multi-file work. Method, per-task table, and the mid-run correction to the aider invocation are all in the benchmark results; the raw run records are in the repository, and the figures above are recomputed from them by the site tests, never typed in.

What is not true yet. Zybuu holds no SOC 2, ISO 27001 or HIPAA certification. There is no support SLA. A human red-team engagement remains outstanding and is not substitutable by the adversarial suite. Those are stated here rather than discovered later, because the buyers this is built for will ask — and an honest answer is worth more than a careful one.

Limitations

What Abhed does not do.

Every row below is a constraint we would rather you knew before a trial than after one. Where there is a path forward it is stated; where the honest answer is "not yet", it says that.

ConstraintWhat it means in practice
Vision needs a vision model Abhed reads images, but only on a model that can see. A local text-only model refuses the attachment by name rather than guessing at it.
Single node Sessions live in one process. There is no horizontal scaling and no failover; a restart ends running turns. Accounts survive it. Transcripts survive it on the Postgres store — on the default in-memory store they do not. A finished session can then be continued from its record by any node; a turn that was in flight cannot.
Postgres only The durable store is Postgres. Other databases are reachable through SSH and their own CLI, not a native driver.
Auth mode is restart-only Switching between local accounts and an identity provider rebuilds the routing table, so it needs a restart. Everything else in settings applies live.
Prompt injection is contained, not solved There is no complete defence, and we do not claim one. The architecture assumes injection sometimes succeeds and limits what it can reach: absolute deny rules, no egress by default, and every observation tagged untrusted at ingest.
No certifications No SOC 2, ISO 27001, HIPAA or FedRAMP. Air-gap deployment, a full audit trail and row-level security are what we have instead — and they are not the same thing as an audit.

Pricing

Open core. Pay for the governed deployment.

The harness, the CLI, the SDK and the audit log are free and will stay free. What an organisation pays for is running it for many people under policy, and someone to call. Launch pricing, per deployment and per seat — never per token, because you run your own models.

Community

Free

Open source. CLI, SDK, harness, single-tenant server, local accounts, the append-only audit log. Community support.

Install it

Team

$49/seat/month

Multi-user server with OIDC, the admin and access dashboard, access policy, scheduled runs, email support. Self-hosted. Ten-seat minimum, billed yearly.

Talk to us

Enterprise

$60k/site/year + $79/seat/month

Everything in Team plus multi-tenant isolation, audit retention and export, the signed air-gap bundle with verification, managed policy, telemetry export, a named support contact and questionnaire support. Air-gapped sites add $25k.

Request a conversation

Design partner · ninety days

Deployment done with you on your infrastructure, a direct line to the founder, roadmap influence, and conversion to Enterprise at a locked price. Three to five partners, in the segments Abhed is built for. $25k.

Apply

Prices are launch pricing as of September 2026 and may change before general availability; a signed agreement fixes yours. What Abhed does not yet have — certifications, an SLA, high availability — is stated in the limitations above, not hidden in a contract.

Request access.

Abhed is not publicly downloadable yet. Tell us what you would point it at and we will get back to you — with an invite to the hosted console, or a conversation about running it on your own infrastructure.

Goes to a person, not a list. No newsletter, no tracking. Or email support@zybuu.com.