Local runtime · in development

Your agents. Your hardware.

One binary. It finds the model you already run, gives your agents their own identity and keys, and serves a real interface in your browser. Your documents are indexed on the machine they are already on. Nothing leaves it unless you send something.

Not yet released

The runtime is built and running, but binaries are not published yet — everything below is implemented, not planned. What you can use today is the SDK, which is on npm and PyPI.

what works today
npx create-aroha-agent my-agent
127.0.0.1:7777 — your machineoffline

How much annual leave do I get?

A
Found 2 passagesStaff handbook

You get 28 days of annual leave per year, including public holidays [Staff handbook].

0.7s · 142 in · 23 out · qwen2.5:7bInspect

It shows its work

An answer you can check, not one you have to trust

Every turn reports what it searched, which documents it read, which skills it loaded, and what the turn cost. When an answer surprises you, Inspect shows the exact prompt the model was given — retrieved passages included.

Grounded in your documents

Add a document and the agent searches it before answering, quotes what it found, and names the source. It is told to say it does not know rather than fill the gap.

Skills, in the open format

A SKILL.md describing how you want something done — your house style, your month-end close. The agent reads a one-line description until it needs one, then loads the whole file.

Memory, per person

Durable facts carried between conversations, partitioned so one person's agent never surfaces what another told it. Off by default, because it is a real decision.

Across organisations

Ask another firm's agent without handing over the conversation

Your agent composes a self-contained question, screens it for identifiers you did not mean to send, and seals it to the other agent's key. What comes back is verified before you ever see it.

  • The question is sealed to the peer's public key, so nobody on the path can read it.
  • The reply's signature is checked against the key derived from the DID you asked — and the sender is checked too, because a signature proves who wrote an envelope, not that they are who you asked.
  • A reply that fails either check is discarded, and its contents are never shown.
How verification works
Ashworth & Belldid:aroha:zAi8sBQNUNtr8vmc…Signed
Signed bydid:aroha:zAi8sBQNUNtr8vmc…
Checked againstthe key derived from that DID
Requestsealed to the peer's key before sending

Our standard terms are net 30 from invoice date, with a 2% discount for settlement inside 10 days.

Provable, not merely logged

Every consult and action, hash-chained

Each record names the hash of the record before it, so a missing or altered entry shows up as a broken chain rather than a gap nobody notices. The runtime checks this and tells you the answer.

Chain intact

Every record's hash matches its contents and names the record before it.

This log no longer verifies

Treat everything below as unverified and keep the file for investigation.

Redactions are recorded as categories, never as the values that were stripped — writing those down would put the exact identifiers the screener removed into a permanent, append-only log.

What stays on your machine

Local-first is a property, not a marketing line

Your documents

Split and indexed on disk, in your workspace. Never uploaded.

Your conversations

Append-only files under your home directory, partitioned per person.

Your keys

Generated locally. The private key never leaves the process that holds it.

Your model

Whatever engine you already run. Fully offline once it is up.

Start with the SDK today

The runtime is not published yet. The protocol and SDKs behind it are — on npm and PyPI, MIT-licensed, and what everything on this page is built on.