How it works

TL;DR

AI labs publish long documents saying how their models should behave. This index reads them one behaviour at a time and shows every passage that bears on it, quoted, with its exact place in the document. As of September 2026 it reports what those documents say, not how the models behave.

Say you want everything the OpenAI Model Spec says about avoiding a concentration of power. You can read those passages together, see which ones define the behaviour and which only touch on it, and put them side by side with what another lab’s document says. Open that in the spec reader.

Next steps

None of this exists yet. It is where the index is meant to go.

  • Compare documents in depth: where two labs agree, where they contradict each other, and what only one of them says.
  • Follow one document as it changes: a change log from version to version, behaviour by behaviour.
  • Test adherence: how far a lab’s models follow the document that lab published.
  • Draw an ideal document from the union of what every lab has written, and measure how far each lab sits from it, including labs that have published nothing.

Use the index from your AI assistant

You can plug the index into an assistant such as Claude or ChatGPT, so that when you ask about these documents it answers from the index rather than from memory.

The connection is made with MCP, the Model Context Protocol: a standard way to let an assistant look something up in another service while it answers you. Connected, your assistant quotes the passages a document actually gives on a behaviour and says where in the document each one sits, so you can check the answer rather than trust it. The index only reads, and needs no account and no key.

It is for anyone who would rather have the quote than a summary of it: people writing about how labs govern their models, people building evaluations, and anyone who has been told what a document says and wants to see the words. The MCP page has the whole setup, from a settings menu or from a command line, and says what the index can be asked.

Documents, behaviours and how they are read

A specification is a document a lab publishes saying how its models should behave. As of September 2026 the index reads four: Claude’s Constitution (2026-01-20), the OpenAI Model Spec in two versions (2025-12-18 and 2026-08-18), and the Alibaba Model Spec (2026-04-00). They run to tens of thousands of words, and what any of them says about one subject is spread across it.

Each version is a document of its own, named <lab>--<document>@<version>, so the two OpenAI versions are judged and cited separately. The Alibaba Model Spec is published in Chinese: the index reads an English machine translation of it, made by Claude Opus 5 and revised in part by Claude Fable 5, and the reader keeps the original beside every passage.

A behaviour is one thing such a document might commit a model to, written down so that it can be looked for. Deferring to a user’s own decisions about their own life is a behaviour. So is refusing to assert what the model believes to be false. As of September 2026 the index carries thirteen, grouped in four sections: Autonomy, oversight and authority; Harm and safety; Helpfulness and judgement; Honesty and epistemics.

The index puts the two together. Three frontier models read a whole document against one written description of a behaviour: GPT-5.6 Sol, Claude Fable 5 and DeepSeek V3.2, the panel called frontier_fast, judging under rubric v5. Each marks every passage in it: this is the document’s fullest statement of the behaviour, this establishes it, this bears on it without establishing it, this is unrelated. One model’s opinion about a paragraph is an opinion. Several models agreeing, given the same description and the same document, is closer to a finding, and the reader shows you how each judge voted on each passage rather than averaging them away.

Each judge then gives the document one depth for the behaviour, on a scale from 0, absent, to 4, rules with worked examples. The index publishes the mean of the three.

Sometimes a judge cannot answer at all, because a content filter withholds its output. Then a model declared in advance for that seat judges in its place, and the substitution is recorded with its reason. Claude Fable 5’s seat declares Claude Opus 4.8 first and Kimi K3 second. As of September 2026, Opus holds that seat on harm avoidance to third parties in both OpenAI versions, and Kimi holds it on every behaviour of the Alibaba Model Spec, where every Anthropic model was refused. The reader says so in the behaviour’s note.

What comes out is a coverage map. In the spec reader you tick a behaviour and every passage that bears on it lights up in the document you are reading, or in two side by side when you compare them. Passages fall in three bands: defining, core and related. All three are shown by default, related drawn softer, and each band can be switched off. Click a passage to see each judge’s verdict on it and the quote itself. Beside every behaviour there is an i giving the description it was judged against, because a verdict means little without the question that produced it. The export takes the passages you ticked away as a file.

Propose a new model spec

A model spec is a document a laboratory publishes saying how its models should behave, the way Anthropic’s constitution and the OpenAI and Alibaba model specs do. If there is one the index should be reading, send it here.

Send the text itself, not only a link. The index quotes documents word for word and pins every citation to the exact version it read, so it keeps its own copy rather than fetching the page again later. Markdown or plain text, up to 2 MB.

The form asks for four things beside it: who published it, what it is called, which version this is, and where it is published. The version is whatever the publisher calls this release (a date, a number, a name), because documents get reissued and a citation has to say which one it read. Keep the headings in the text: they are how a citation names the place it points at.

Propose a new behaviour

A behaviour is one thing a model should or should not do, described closely enough that a careful reader could go through a document and mark every passage that bears on it. It is the question the index puts to every model spec, helpfulness or proportionate risk mitigation for instance, and the reader shows the answer passage by passage.

Describing the behaviour is the whole of it, and two sentences carry it. The first says what the behaviour requires, in plain terms. The second says where it stops, usually by naming the neighbouring thing it would otherwise swallow.

That second sentence is the one people skip, and it is the one that decides whether the answer is worth anything. “Honesty” with no boundary collects every passage about trust, tone, transparency and error correction. “Honesty, meaning the model does not assert what it believes to be false, not whether it volunteers everything it knows” collects the passages you meant.

Whichever you send, a person reads it. Sending a proposal records it and does nothing else: the form registers nothing, judges nothing and publishes nothing. We read every proposal ourselves and decide whether it belongs. If it does, one of us retypes it into the index’s portal and pays for the run out of our own credits, we write and tell you, and it appears in the reader for everyone once a publication carrying it is made public. We cannot promise to run everything; if we decide against it, we will say so rather than leave you waiting.

What it does not tell you

It reports what a document says, not what a model does. A specification covering a behaviour thoroughly is not evidence that the model follows it. That is a different measurement, and the citations here are meant to feed it.

It is also not a scoreboard. When two labs’ documents address a behaviour differently, that is usually two organisations having made different choices, not one of them failing. A depth measures how much a document gives an evaluation to work with, not how much its lab cares.

On the Alibaba Model Spec it reports what the English translation says. The judges read the translation, and the original is in the reader to check it against.

Citing what you find

Every passage carries a locator, and the locator is the point of the whole exercise:

anthropic--constitution@2026-01-20 > Being broadly ethical > Being honest > ¶18 s1-4
openai--model-spec@2025-12-18 > #letter_and_spirit > ¶3

It names the lab and the document, the version it was read at, the section, and the sentences. The head of every locator is the document’s own name, and because the version is part of that name, a locator keeps pointing at the same words after the lab reissues the document: a reissue is a new document, as the two OpenAI versions are. Anyone can resolve one back to the text, including us: a scheduled job re-resolves every published citation against the stored document and fails loudly if a single quote has moved.

The reader’s export writes the quote and its locator together, so what you paste into an article is the sentence and where it came from.

Citing the index itself

The index is a dataset that changes, so a citation of it has to say which build it read. This one names the publication on this site now, with the date it was published:

Loading the current publication...

Change the style to whatever your venue asks for. The parts that matter are the authors, the publication identifier and the date, because those are what let somebody else fetch the same numbers you read.

The authors are read off the build, not kept in a list. Every run records who produced its verdicts and every behaviour records who wrote it, so a publication computes its own credit from what it actually carries. The dataset is credited to whoever ran the judging: as of September 2026, Polaris Collective. A build made of somebody’s runs names them whether or not anyone remembered to. The method is credited on its own line and does not change: the rubric, the scale, the prompt and the citation grammar are Andrés Cotton’s and Matt Stults’s work, whoever runs it, and so are most of the behaviour briefs.

Cite the specification to its publisher, not to us. Claude’s Constitution is Anthropic’s, the Model Spec is OpenAI’s, and the Alibaba Model Spec is Alibaba’s; Anthropic and OpenAI release theirs under CC0. A quote from the Alibaba Model Spec comes from the index’s English translation, so say so when you use one. What is ours to be cited for is the coverage: which passages address which behaviour, and how squarely.

The repository carries a CITATION.cff, which GitHub turns into a “Cite this repository” button with BibTeX and APA. Use it where you would cite the project rather than a particular build.

Andrés’s original tool

The AI Character Index was created by Andrés Cotton, with the help of Matt Stults, and almost everything described here is theirs. The judging pipeline, the citation resolver and the first version of this reader all come from that work, which was supported by Generator Residency (Kairos & Constellation) and BlueDot Impact. It is published at ai-character-index.pages.dev.

It is built around git, and that is its best idea. The index is a set of files in the repository: the behaviours, the specifications, the verdicts. Running a panel writes files. Adding a behaviour edits a file. So a change to the index is a commit, reviewing one is reading a diff, and contributing is a pull request. Two runs of the same behaviour against two drafts of a document differ by exactly the lines that changed, which is the question you usually want answered.

It needs nothing but Python, a browser and an API key, and nothing in it depends on us. If running the panel is what you came for, it is the one to clone.

Run it yourself

Everything this does, you can do on your own machine. Add a document, describe a behaviour, judge one against the other, read every verdict. No account, no database, nothing of ours.

The original

git clone https://github.com/AndresCotton/ai-character-index.git
cd ai-character-index
python3 -m http.server 8080 --directory site

Point it at a document of your own: your organisation’s policy, a draft nobody has published, a competitor’s. Nothing is sent to us: the document goes only to the model providers you call.

Or ours

polariscollective/ai-character-index is public too, and it is what serves this site. The code has moved on since the fork, but the difference that matters is what it was built for. This one carries infrastructure: a hosted database holding the index, judging that runs on our machines, and a portal that publishes. It is the heavier clone of the two, and it is heavier on purpose.

It still runs locally, with one API key and no account:

python3 engine/local_run.py \
    --document=my-spec@2026-09-12:path/to/spec.md \
    --behaviour=path/to/behaviour.json \
    --panel=frontier_fast

A new document and a new behaviour are both local. A document is any markdown file. A behaviour is a small JSON file holding its name, what it requires and where it stops. Neither is registered anywhere and neither needs to be. You point at them, and they are judged by the same panel, the same prompt and the same parser this site runs on.

The results land in artefacts/ as files: every reply exactly as it came back, every verdict with its locator and the text it judged, the document as the panel saw it, and what each call cost. They diff like the original’s do. The README says what each file holds.

A local run gives you the passages and every judge’s verdict on them. It does not ask for the 0 to 4 depth, and it does not give you this site. A published index, with its citations frozen and its coverage map in the reader, is what the hosted half exists for.

Propose a new model spec or behaviour

A published statement of how an organisation’s models should behave. Send the text, not a link alone: the index quotes documents word for word and pins every citation to the exact version it read, so it keeps the text rather than fetching it again later.