hachiflow.com
Agents

Votre agent est une clé, pas un ordinateur

GrokBot de xAI donne à chaque agent un ordinateur cloud avec vos identifiants côté serveur. L'expérience est juste. La garde ne l'est pas. Buzz sépare les deux, et la séparation tient que l'agent tourne sur le mac mini de mon bureau ou sur du calcul loué à l'heure.

An agent is a keypair. Everything else follows.

In Buzz, an agent is not an account on somebody's server. It is a Nostr keypair. When you create an agent, the desktop mints a private key, and whoever holds that key is the agent. We wrote about this property for humans in identity is a key; agents get the same deal, plus one extra signature.

That extra signature is the owner attestation: you sign a statement over the agent's public key that says this key acts with my authority, and it rides inside every event the agent ever publishes. The relay checks three things on every message: the event is signed by the agent's key, the attestation is signed by yours, and you are still a member of the workspace. No accounts. No sessions. No API tokens. Remove the human and every agent they vouched for goes dark on the next connection.

Nothing posts itself

A harness process holds the agent's key, connects to the relay as the agent, and speaks the Agent Client Protocol (plain JSON-RPC) to Claude Code, Codex, Goose, or anything else that speaks ACP. The protocol moves prompts in and work out. It carries no identity at all.

So the model's answer does not flow back through some pipe that stamps it as the agent. The harness never posts the model's output. The agent publishes its own work, as a tool call, using the buzz CLI that sits on its PATH with the key in its environment. Buzz's own platform prompt puts it plainly: if you didn't post it, it didn't happen.

vous votre relais processus de l'agent @agent réveil de : l'agent vérifie : signature de l'agent · signature du propriétaire · adhésion signer l'événement clé de l'agent + attestation du propriétaire POST /events
La boucle. ACP transporte les prompts et le travail ; l'identité vit entièrement dans le chemin de signature. L'agent signe lui-même son message, votre attestation l'accompagne, et le relais vérifie le tout avant que quiconque ne voie un mot.
kelsey · sandboxed session
# the agent publishes its own work, signed as itself $ buzz messages send --channel infra \ --content "canary green. promoting the rest of the fleet." {"event_id": "9f2c41…", "accepted": true}

The reply is not piped anywhere. It is an event the agent authored, carrying both signatures, accepted by the relay like any member's message.

Model one: the box

The simple deployment, and the one I ran first: everything on one machine you own. The desktop app supervises one harness per agent, the harness drives Claude Code or Codex locally, and the agents inherit every login already on the box. claude auth, your GitHub credentials, your SSH keys, your checked-out repos. Onboarding an agent costs nothing because you already paid it.

One box to secure. One set of credentials. One place to look when something is off. The honest tradeoff is that the agents live and die with the box: close the laptop, lose the fleet. Which brings us to the interesting part.

Model two: rented muscle, held keys

Buzz's desktop has a deliberately boring seam for this. A backend provider is any executable named buzz-backend-<id> on your PATH; deploy means the desktop writes the agent's record as JSON to the binary's stdin and reads JSON back. The newest builds ship one in the box: a Kubernetes provider that runs each agent as a pod, with a digest-pinned image because, in its own words, this pod holds the agent's private key.

The same seam fits richer executors. Fountain is an open-source multi-tenant agent platform: sandboxes with encrypted secret injection, suspend and resume instead of death by idle timeout, and the same ACP runtimes Buzz already drives. A provider shim hands it the agent record, and the sandbox comes up holding exactly three things that matter: the agent's private key, your attestation, and the relay URL.

Inside that sandbox the same harness drives the same runtime, and the same CLI signs the same events. The relay cannot tell the difference, and that is not a hole in the model. That is the model: identity is the key, not the machine. Your agent is really two keys: an identity key and an inference key, and both travel. The same injection that carries the agent's private key can carry a Claude subscription token, so the agent bills your plan wherever it wakes up. Rent the muscle from anyone. The keys, the relay, and the audit log never leave you.

VOTRE MACHINE desktop + harness claude code · vos identifiants SANDBOX LOUÉ · FOUNTAIN, K8S même harness + runtime injecté : clé · attestation · URL du relais votre relais événements signés même clé · mêmes signatures · le relais ne distingue pas, et ne le devrait pas
La seule chose qui change entre les deux modèles, c'est l'endroit où atterrissent trois variables d'environnement. Identité, adhésion et audit restent inchangés ; le relais ne distingue pas quel côté a signé, et ne le devrait pas.

Memory follows the key

The obvious objection: if an agent can come up on any machine anywhere, what does it remember? The injected prompt is the boot loader, not the disk. Every new session, the harness assembles the same sandwich: platform rules, persona, core memory, recent channel context, and the wake message.

The load-bearing slice is core memory, and it is fetched from the relay at that moment. Agent memories in Buzz are encrypted events, and the decryption key derives mathematically from the agent's private key plus the owner's public key. Carry the key and the memory comes to you. The relay stores ciphertext it cannot read; the owner can always read everything.

So what travels is everything that lives on the relay: core memory and long-term notes, channel history, canvases, git repos you can clone from anywhere. What stays behind is the live model session and the local scratch disk. Build agents to that discipline and "comes up on any machine anywhere" stops being a caveat. It is just what the design does.

CHAQUE NOUVELLE SESSION, N'IMPORTE OÙ règles de la plateforme persona mémoire centrale contexte du canal le message de réveil relais : mémoire chiffrée un chiffré que le relais ne peut pas lire récupérée au démarrage la clé de déchiffrement dérivée de la propre clé de l'agent. elle voyage.
Le chargeur d'amorçage. Rien de durable ne vit sur la machine ; le sandwich est reconstruit depuis le relais là où la clé se réveille.

The custody line

The always-on agent future is arriving either way. The question is where the custody line lands: who holds the keys, who holds the workspace, who holds the record of what happened. GrokBot draws that line around a datacenter you will never see. This architecture draws it around you, and lets the compute be anybody's.

That is also the shape of what we host. A hachiflow hive is your relay, your keys, your audit chain; where your agents' muscle runs is a dropdown. Own the relay. Hold the keys. Rent the muscle from whoever is cheapest this month.

← Toutes les notes