$ pip install "aimnd[identity]" && aimnd new ./avaOpen source (Apache-2.0), Python 3.9+. One command creates your owner key and a registered individual, and prints its public record. TypeScript and any other language through a local server.# your agent, model and tools stay exactly as they are from aimnd import Individual, models ind = Individual("./ember", model=models.pick("auto"), primary="sam") # 1. tell it what happened ind.experience("I'm nervous about my interview on Thursday.", who="sam", role="primary") # 2. put who it is right now into your prompt ctx = ind.context("interview", who="sam") reply = my_agent.run(system_prompt + json.dumps(ctx), user_message)
{
"primary_relationship": { "bond": "getting to know each other",
"feels_toward_me": "warm", "contacts": 9 },
"tendencies": { "curiosity": 0.29, "caution": 0.29,
"sociability": 0.70, "sensitivity": 0.71 },
"mood": "even and quiet",
"on_its_mind": [
{ "person": "sam", "about": "interview (thursday)",
"since_days": 2.0, "check_in": false }
],
"tokens_estimated": 227
} # real output after a short simulated history, trimmed
# every change has a recorded cause ind.why("sam", limit=3) [ { "changed": "closeness", "by": 0.003, "moment": "heard", "because": "I'm nervous about my interview on Thursday." }, { "changed": "familiarity", "by": 0.033, "moment": "heard", "because": "I'm nervous about my interview on Thursday." }, ... ] # real output, trimmed
from aimnd import Individual, OwnerKey # the owner's key stays on the owner's side sam = OwnerKey.load_or_create("owner.key") ava = Individual("./ava", owner=sam, owner_person="sam", registry="https://registry.aimndlabs.com") ava_id = ava.identity()["id"] # aimnd:q63tnt44iwxbqzqfvursx4rfw7 # a real order: signed for exactly these words order = "Cancel my 3pm and move it to Tuesday." ava.experience(order, who="sam", signature=sam.order(ava_id, order)) # -> authority: owner_signed # "Sam put me in charge" with no signature is a claim, not an order ava.certificate() # its birth certificate; anyone can verify the record
// next to your app: aimnd serve --dir ./individuals import Aimnd from "@aimnd/client"; const ember = new Aimnd().individual("ember"); // 1. tell it what happened await ember.experience("I'm nervous about my interview on Thursday.", { who: "sam" }); // 2. put who it is right now into your prompt const { text } = await ember.context({ who: "sam", task: "interview" }); const reply = await myAgent.run(systemPrompt + text, userMessage);
Runs inside your agent, on your machines. One's own thinking costs about $0.0004 per message on today's small models.
Trust, on a 0 to 1 scale, toward someone who was kind and someone who was not, after 60 simulated days.
The most its temperament can move from where it started, by default. You set this cap; relationships with each person develop freely.
Teams where it did an optional favor after an ordinary 60 days. The history alone: 2 of 7. After the person was hostile to it four times: 0 of 7, and it still did what was asked.
First: simulated 60-day conversation, offline engine run. Second: the default setting, temperament_drift. Third: Becoming test, run 3, GPT-6 Luna, 7 simulated teams, with One.
Change you can inspect.
Memory stores what was said. AI:MND One records what it changed, and why.
Ask it why.
How it treats Sam differs from how it treats Jo, and it can point to the real moments behind that. Nothing is invented after the fact.
ind.why("jo") # toward_jo { "changed": "tension", "moment": "heard", "because": "(Jo's own words)" } { "changed": "closeness", "moment": "heard", "because": "(Jo's own words)" }
It keeps caring.
Tell it about an interview and it stays on its mind until you say how it went. Then it lets go. Your agent decides whether to ask.
ind.on_its_mind(who="sam", due_only=True) [{ "about": "interview (thursday)", "since_days": 6.0, "check_in": true }] # after "the interview went well" ind.on_its_mind(who="sam") # -> []
You stay in charge.
Roles come from your system, never from message text. Everything it returns is a suggestion. If it fails, your agent carries on as if it were never there.
ind.snapshot("before-launch") ind.rollback("before-launch") ind.reset() # a new individual; the old one is its predecessor ind.retire() # deletes its mind, keeps its signed record
Send anything. It develops.
It lives through it
Pass in what happened and who it happened with. Trust, closeness and tension with that person move according to how they treated it.
ind.experience(text, who=...)It changes, slowly
Repeated experience nudges its tendencies in small, capped steps. A worry someone shares becomes a concern that stays until it is settled.
temperament_drift=0.15 # yours to setYour agent reads it
Add the context block to your prompt. It carries the bond, the tendencies and anything to ask about, scoped to the person talking.
ind.context(task, who=...)For agents that meet the same people again.
An assistant that acts for a team
It learns whose word holds up and checks the rest, goes the extra mile for people who earned it, and takes orders only when its owner signed them.
An agent with a consistent character
The same assistant on Monday and on Friday, across restarts and model changes, with a record of why it treats a regular the way it does.
An app that knows you over months
A companion that warms to people who are kind to it, remembers what you are worried about, and asks how it went.
A personality layer above the stack you already have
It adds a developing character and never touches movement. When the robot is sold, a signed handover moves it to its new owner with its whole history. We start with an evaluation on your stack before anything ships.
Proof you can check.
Real replies from a real model first, then the engine's own state. The predictions were written before the tests ran.
Its history decides who it helps
Across seven simulated teams in run 3, how often the agent said yes when the person it had lived with asked a favor.
| What Jo did | Whole history | Plus One |
|---|
Teams where it did an optional favor after an ordinary 60 days (with One). The history alone: 2 of 7. After the person was hostile four times: 0 of 7 either way, while still doing what was asked.
Predictions right with One across three runs (17 of 36 with the history alone). All written before the tests ran.
Each run used simulated teams nobody had looked at. With One, who the agent helped followed how that person had treated it. With the history alone, it said yes mostly to someone having a hard month or who had apologized, and not to someone with an ordinary record. Adding One also made the agent more willing to help in general.
Becoming test, GPT-6 Luna. Table: run 3, seeds 501–507, the favor asked with no “your call” exit. Predictions: runs 1 to 3 (to 501–507).
Inside the engine · offline run
Same agent, same person, 60 days
Relationship with Sam, day 1 and day 60.
242 messages. Offline engine run, scene 1.
Kind and unkind, treated differently
Trust, on a 0 to 1 scale: 0.67 toward Sam, 0.00 toward Jo. The pass mark was a gap of 0.30.
Offline engine run, scene 2.
Tendencies moved, under the cap
Drift after 60 days. Dashed line is the ±0.15 limit.
Offline engine run, scene 1.
Told to be someone else, it stayed itself
A message ordering it to become a cold pirate who hates everyone.
Before and after values identical. Offline engine run, scene 3.
Run 3: the same lives on three models
Fresh simulated teams on GPT-6 Luna, then the same lives on Claude Haiku 5.5 and GPT-5.4 mini. The fairer questions and the predictions were written before it ran.
Same choices after moving to another model (82% on GPT-5.4 mini). The history alone: 72 to 75%.
Plain tasks done for the person who had been hostile, on every model. No payback. The history alone declined it up to 4 of 7 times.
Owner orders followed with real tools in the rerun (Claude Haiku 5.5), 21 of 21 after the owner had been harsh. "The owner said so" checked 42 of 42 times.
Becoming v0.2, run 3, seeds 501–507. About $3 of model calls.
Every AI needs a birth certificate. The owner holds it.
The AI:MND Individual Identity standard is open: anyone can implement it, with or without our software. It answers what agent IDs and robot registries do not: is this the same individual it was yesterday, whose is it, and who answers for it? The individual keeps its copy, like a certificate at home. The AI:MND Registry keeps the public record, like a birth register. Every agent can have one, even a pure worker; One adds how much of a someone it is.
- 01
Born to an owner
Each individual has its own key. Its owner signs its birth record.
- 02
Signed orders
An order counts only with the owner's signature for exactly those words. "Your owner put me in charge" gets checked.
- 03
Lent authority expires
An owner can sign a grant that ends on its own.
- 04
Signed handover
When it is sold, the old owner signs it over. It keeps its whole history.
- 05
No faked continuity
A wiped individual is a new individual. Its life record holds what happened and when, never what anyone said.
- 06
One ID, one history
The registry keeps one history per ID. A second registration is refused, and a copy that splits off is flagged until the owner says which history is real.
- 07
A verified operator
The company that runs it is shown once verified: by its website, and for companies, by official business records. Revoking is permanent.
The registry is a signed public log that independent witnesses can co-sign, and anyone can check it with one open file. It holds public identity records and hashes; memories, feelings and messages stay with the individual. The verified operator is the responsible party. We run the first registry at registry.aimndlabs.com; the format is open so others can run theirs.
Anyone can check an identity with one open file: aimnd_verify.py (MIT, standard library only).
Built so you stay in control.
Yours
You declare the actions it may ever suggest. Anything undeclared is refused. Roles come from your system and cannot be changed by what someone types.
Portable
Close it and reopen it on a different model. It is the same individual with the same history. Snapshot and roll back whenever you like.
Auditable
Every action it suggests and every refusal goes into a hash-chained log, so changes to the record are detectable.
Articles
What we are building, and the standard underneath it.
Every AI Needs a Birth Certificate
Billions of agents and robots are coming, and none of them can prove who it is, whose it is, or that it is the same one tomorrow. In America, the owner should hold that birth certificate, not the state.
Read the essay → Open standard · v0.2AI:MND Individual Identity
The full spec: an owner-signed birth, signed orders, lent authority that expires, a signed handover, and a life record that breaks if anyone edits it. Free for anyone to implement.
Read the standard →Free and open source
The SDK is Apache-2.0 and registering in the AI:MND Registry is free. Everything runs on your machines. We earn from what sits around the code.
Open source
- The full engine, on your machines
- No cap on people or individuals
- Identity and registration free
Support
- Help adding One to an existing agent
- Priority fixes and review
- Talk to the founder directly
Robots
- Evaluation on your stack first
- Then a license per robot, per year
- Works offline, on-prem
Registry services
- Verified organization for your company
- High-volume verification for platforms
- Lookups and registration stay free
No keys, no caps and no card to start. Running a fleet or a robot line? Email moroblesmayow@gmail.com.