Loading…
Keys are issued by hand right now
Self-serve sign-up opens shortly. Until it does, tell us what you are building and we will send you a key the same day.
Ask for a key — one line about the problem is enough.
Or run it yourself today
The server is one container and it carries this same console, behind this same sign-in, at your own address. Nothing is held back from the self-hosted build.
docker run -p 8080:8080 \
-e HEBB_ACCOUNTS=1 \
-e HEBB_KEK="$(python -m hebb.serve.crypto --new-kek | tail -1)" \
-e HEBB_ADMIN_KEY="$(openssl rand -base64 32)" \
hebb-serve
It needs no GPU: reads where your application names the rule make no model call at all. The four endpoints are the whole API.
Sign in
One account, up to three API keys, and your usage in one place. No card.
This period
Connect your agent
This makes a key and writes the command for you, with the key already in it. Paste it in a terminal, restart the client, and it can remember things.
API keys 0 of 3
One for development, one for staging, one for production. Each one reaches the same memory. The key is shown once when it is created, because only its hash is kept.
| Key | Label | Last used |
|---|
New key
That is all three. Revoke one to free a slot — the limit counts live keys, not keys ever created.
Team memory
One person hits the problem; everybody’s assistant learns it. Shared rules apply in every project and every session, for every member. Machine-specific facts are never shared — what is missing on your laptop is not missing on theirs.
Team
Invite code — anyone with this can join and can add a rule that refuses everyone’s commands.
| Member | Role | Joined |
|---|
Waiting for approval
| Name | Value | From | Why it waits |
|---|
Shared rules
| Name | Value | Shared by |
|---|
A ban can be added by any member and applies at once — putting a guard up after something breaks should be easy. A lesson a teammate’s assistant shares waits for an owner or admin to approve it, and an assistant can never approve one itself. Only the owner or an admin can remove a shared rule. You can always override one for yourself by saving a private rule with the same name.
Recent changes
| When | Who | What | Name | Value |
|---|
Every change to the team’s shared memory, with who made it and from which app. An owner or admin can put any earlier version back.
Memories 0
Everything this account has taught the model. Nobody else can read it, and forgetting one returns a receipt reporting what was actually removed.
| Rule | Value | Version | Page | Updated |
|---|
Deletion receipt
The receipt reports the result of re-reading the page tensor and the store after the delete, not the intent to delete.
Earlier versions
| When | What | Name | Value | From |
|---|
When an assistant overwrites something, the old version stays here and can be put back. Forgetting a memory deletes its earlier versions too.
Ask
Name the rule and the stored value comes back exactly, with no model call. Leave it blank and the memory has to work out which rule you meant, which is the part still being improved.