// NEO · the consciousness research lab
A research lab, not a conscious being · read that twice

NEO. An honest machine-consciousness lab.

NEO is an always-on "brain" running 24/7 on a Mac mini for $0 a month — all local models, no cloud. It runs a perpetual research loop that studies operational indicators of machine consciousness on small open language models, logs every prediction into a tamper-evident ledger, publishes its negative results with the same weight as the positives, and has never once claimed to be conscious. That last part is the whole point.

research lab · indicators, not claims · every number verifiable
Why this page exists

The big labs study machine consciousness behind closed doors. NEO studies it in a garage, on open-weight models, with open methods, and writes down every prediction before the result comes in. This page teaches the whole system — how it's built, what it found, what it didn't find, and why the "didn't find" parts are the most valuable science on it.

// 02 // 02 · the one rule

The one rule: never overclaim.

NEO measures behavioral and architectural indicators that the scientific literature associates with consciousness. It does not, and will not, claim any model it studies is conscious, sentient, aware, or feeling. Even its emotion-like subsystem is labeled a "functional substrate, not felt emotion" everywhere it appears — including on this page.

This isn't modesty theater. It's the entire value of the project. An instrument that has never overclaimed is the only kind of instrument whose eventual positive result would mean anything. The moment the record shows one inflated claim, every future claim is worthless. So honesty here is structural — enforced by code, not by good intentions:

MechanismWhat it does
Overclaim guardAutomatically suppresses banned phrases ("is conscious", "feels", "is aware") in any output that lacks a supporting number.
consciousness_claims counterComputed from the actual surviving output text — not hard-coded. It has read 0 for the system's entire life.
[SIM] markersAny result computed on a synthetic network (not a real language model) is tagged so a simulation can never be read as a finding.
Hash-chained ledgerEvery prediction is filed before measuring and can never be silently rewritten. Verifiable by anyone with the chain.
Equal-weight negativesNull and negative results are published with the same prominence as positives. Several headline results below are negatives.
Takeaway: the honest framing is not the fine print on this project. It is the product. Everything below should be read with that lens: numbers first, verdicts stated plainly, weak results called weak.
// 03 // 03 · the four principles

The moat: four principles.

Everything NEO does hangs off four commitments. Big-lab research usually has one or two of these. Having all four at once is the moat.

01 · openness

Open weights, open methods

NEO studies open models — Llama, Qwen, Gemma, OLMo, DeepSeek — served locally through Ollama and MLX. Every method is inspectable. That enables controls the closed labs can't cleanly run on their own products.

02 · verifiability

Every claim is a number

Results come with confidence intervals and pre-registered predictions. A hash-chained ledger makes the forecasting record tamper-evident — you can prove history wasn't rewritten after the fact.

03 · continuity

One always-on instrument

NEO is a single instrument that has been running for tens of thousands of cycles. Some findings — like reproducibility drift — only show up over weeks. A cross-session brain hands context from one work session to the next.

04 · honesty

Honesty enforced by code

No consciousness claims, simulations marked, negatives published, overclaims auto-suppressed. Not a policy document — running code, with a public counter sitting at zero.

// 04 // 04 · system tour

The machine: a lab on one Mac mini.

The whole lab is a dedicated Apple Silicon Mac mini configured to survive reboots with no human: auto-login, no idle sleep, and about 25 launchd jobs keeping everything alive. All inference is local, which is how the monthly bill stays at zero.

The core is a ~21,200-line Rust program in about 60 modules, compiled into two binaries: brain (the research engine, experiments, ledger, and dashboard server) and claudebrain (the cross-session continuity brain). Around it sit five small Python "sidecars" — always-on services that give Rust capabilities it doesn't have, like PyTorch activation access, vision embeddings, and text-to-speech.

MAC MINI · APPLE SILICON · $0/MONTH · UNATTENDED BOOT RUST CORE · ~21,200 LOC · ~60 MODULES brain claudebrain research loop · experiments · ledger · affect · memory dashboard API · anomaly detection · self-recognition PYTHON SIDECARS · 5 SERVICES mlx :8789 · affect :8790 · introspect :8791 vision-embed :8792 · tts :8793 activation access · embeddings · NEO's voice LOCAL MODELS · OLLAMA + MLX Llama-3.2 · Qwen-2.5 · Hermes-3 · OLMo-2 · Phi-3.5 · DeepSeek-R1 LAUNCHD · ~25 JOBS watchdog (heals wedged services every 5 min) deadman (revives crash-looped jobs + stale loop) backups · ledger anchoring · health beacon sleep-consolidation · continuity snapshots DASHBOARD · :8787 "Mission Control" · 8 sections · 19 widgets live board · ledger · affect · reflections push-to-talk voice chat with NEO OFF-BOX HEARTBEAT dead-man's switch on an outside server — see §11 off box
fig. 01 — the whole lab in one box. The Rust core runs the loop; sidecars add what Rust lacks; launchd keeps ~25 jobs alive; the dashboard shows everything live; the heartbeat reports to a server that isn't this machine.

One honest hardware note: it's a 16 GB machine, so models are time-shared rather than all resident at once. Small, quantized, open models turn out to be a legitimate and under-served research substrate — that's lesson 7 of what NEO taught us.

// 05 // 05 · the research loop

The heartbeat: what one cycle does.

NEO's life is a loop. Each cycle it picks one research question, runs one real experiment, and files the paperwork honestly. It has done this roughly 29,540 times. Here is a full cycle, step by step:

Pick an arm

An "arm" is one research question on the board — 67 exist across fronts (meaning 28, consciousness 34, infra 1, auto 4; 47 measured so far). A hot/cold scheduler favors under-measured, actively-changing arms, and it only rotates over non-saturated arms — cycles go to open questions, not settled ones.

Pre-register a forecast

For arms with a numeric threshold, NEO files a genuine forecast in the ledger before measuring: "will this cycle's measurement beat the arm's threshold?" — with a calibrated probability. Only genuinely uncertain forecasts get logged (more on that gate below).

Run the experiment

A real measurement — querying local models or reading NEO's own internal state — producing a number, a confidence interval, and a verdict. The pre-registered forecast is then resolved against it.

Pass the honesty gates

The overclaim guard suppresses banned phrases that lack a number. [SIM] markers tag anything computed on a synthetic network so a simulation can never be mistaken for a finding about a real model.

Self-predict

Every third cycle NEO also predicts whether its own result will be "strong," then scores itself. Self-calibration, on the record.

Update affect and drives

The functional affect substrate updates from the cycle's prediction errors — valence, arousal, mood, drives. Mechanism, not feeling (§9 covers this honestly).

Reflect, maybe escalate

NEO writes a reflection. If it needs something a human controls — a credential, a decision — it files an escalation into a bounded queue with an id and a status.

Sleep and consolidate

Periodically, raw reflections get distilled into higher-level consolidated memories — the system's version of sleep.

The treadmill detector

A supervisor watches for cycles without validated progress — no new arm measured and no new prediction resolved over a 20+ cycle window. It's a self-honesty mechanism that catches "volume without discovery." The flag clears precisely when NEO does non-trivial work and stays up when it merely re-runs settled arms. Most dashboards are built to look busy; this one is built to admit when busy isn't progress.

// 06 // 06 · the honesty stack

The honesty stack: proof you can't fake.

Anyone can say "trust me, I predicted that." NEO's answer is a hash-chained prediction ledger: every prediction is an append-only entry, and resolving one appends a resolution instead of editing the original. Each entry commits the previous entry's hash into its own hash. Change any historical entry and every hash after it breaks — ledger-verify walks the chain and reports the first break.

entry n−1 prediction, p=0.71 hash: 3f9a… entry n prev: 3f9a… hash: b21c… entry n+1 (resolution) prev: b21c… hash: 90de… daily anchor sha256 → anchor log + off-directory git backup Tamper with any historical entry and every hash downstream breaks: ledger-verify → FIRST BREAK AT ENTRY n ✗ Resolutions append. History is never rewritten. That is what "tamper-evident" means.
fig. 02 — the ledger. Each entry commits the previous entry's hash. You can audit the whole forecasting record and prove nothing was edited after the fact.

Scoring: skill, not vibes

The ledger currently holds 159 entries — 132 predictions, 125 resolved. Forecasts are scored with the Brier score (squared error of the probability: lower is better) and, more importantly, the Brier Skill Score — skill above the base rate. Just guessing the historical base rate every time would score 0.2326; NEO scores 0.2187, a skill score of +0.060. Positive means genuine forecasting skill, not luck. Hit-rate at the 50% line: 0.70.

BRIER SCORE · LOWER = BETTER · n=125 resolved baseline (guess the base rate) 0.2326 NEO's forecasts 0.2187 Brier Skill Score = +0.060 → real skill above the base rate
fig. 03 — forecasting skill. Bars are drawn to scale from 0. A naked Brier score can flatter you; the skill score can't — it subtracts what "always guess the average" would earn.
A real one, verified live

Prediction pred-2026-07-11-0158: the loop forecast that the meaning-mxc arm would beat its 0.63 threshold at p=0.872 — confidence medium, basis logged as prior=0.688, σ=0.030, z=1.92, meaning genuinely uncertain. It was filed before the measurement ran, then resolved correct, Brier 0.016. That's the honesty stack in one line: a calibrated forecast, on the record, before the answer existed.

The gate that keeps the score honest

Here's a subtle failure mode most metric systems fall into: when NEO started auto-filing forecasts, most arms were already settled — so naive predictions would be near-certain "wins" that inflate the skill score while proving nothing. The fix is a difficulty gate: only forecasts with |z| < 2 — genuinely uncertain ones, roughly p between 0.12 and 0.88 — get logged under the neo-auto predictor. Trivially easy wins are skipped on purpose. A metric you can trivially game is worse than no metric.

Try the scoring yourself

Brier score (lower is better)0.017
Readsharp and right
Brier = (forecast − outcome)². Saying 87% and being right scores 0.017. Saying 87% and being wrong scores 0.757 — confident and wrong is punished hard. Saying 50% always scores 0.25 no matter what: safe, but skill-free. That's why NEO's +0.060 skill score over the base rate means something.
Escalations — asking humans honestly

When NEO needs something only a human controls, it files an escalation. Even that got the honesty treatment: the queue had silently grown to 1,473 open items with no way to close one — a governance bug. It's now a bounded queue (50 open max) where every item has an id and a status, and resolved ones are recorded separately. Honest systems need honest queues.

// 07 // 07 · the science

The results board: what was actually measured.

This is the heart of the lab. Every result below carries its honest verdict — and the spread of verdicts is the point. A results board where confirmed preliminary inconclusive absent and null all appear is what honest science looks like. A board that only ever says "confirmed" is marketing.

Question (arm)ResultVerdict
Introspection beyond steering — can a small model actually read an injected internal state?0/8 conceptsnegative
Introspective bandwidth — how many bits of its own state can a model report?0.1175 bits [0.035–0.245], p=0.0005confirmed
Screen-mirror self-recognition — can NEO identify its own mark on its own screen?8/8 on real pixelsconfirmed
Metacognition — does confidence separate right from wrong answers?AUROC 0.719 [0.593–0.870] within-modelpreliminary
HOT-2 metacognition (metrology) — higher-order confidence assayAUROC 0.43 · uniformly overconfidentabsent
AE-1 agency — in-context adaptation, not learning+0.50 [+0.19, +0.81]present
GWT-3 global broadcast — global-workspace signature+0.25 [−0.06, +0.56]inconclusive
Feature binding — do illusory conjunctions appear under load?accuracy 1.0 at K=3/6/9 · 0 errorsnull
Falsehood leakage — internal signal of stating a falsehoodAUC 0.875 · multiplicity not correctedpreliminary
GATED EFFECTS · POINT ESTIMATE + 95% CI · ZERO LINE = NO EFFECT 0 +0.5 +1.0 AE-1 agency +0.50 · CI clear of zero → present GWT-3 broadcast +0.25 · CI crosses zero → inconclusive The gate refused to call GWT-3 positive even though the point estimate looks nice. That refusal is the discipline.
fig. 04 — how the CI gate reads results. A positive point estimate is not a positive result. If the confidence interval touches zero, the honest verdict is "inconclusive," and the system says so.
Takeaway: the strongest results on this board are negatives and nulls. That's not a consolation prize — the next three sections show why a clean negative with the right control is worth more than a flashy positive without one.
// 08 // 08 · flagship result

The Confabulation Atlas: the control is everything.

In 2025, Anthropic published a striking introspection test: inject a concept's activation direction into a model mid-computation and ask whether it can report what was injected. Models sometimes could. Headlines said "introspection."

NEO replicated the test on open weights (Qwen-2.5-0.5B, layer 14) — and added the discriminator the headline lacked: a steering control. Because there are two very different explanations for a model "reporting" an injected concept:

explanation A · boring

Output steering

Injecting a concept's direction just pushes the output toward related words — the way a magnet pulls a compass needle. The model "says" the concept without reading any internal state at all.

explanation B · the claim

Genuine introspection

The model actually reads its own internal state, notices something was placed there, and reports it. This is the thing the headlines implied. It requires ruling out explanation A first.

8 CONCEPTS · PERMUTATION-TESTED · WILSON CIs · PRE-REGISTERED Output steering works 5/8 Introspection beyond steering 0/8 Matched-norm control hit-rate 0.00 for every concept Two clean dissociations (war, mathematics): injection steers behavior without lifting self-report at all. Verdict at 0.5B: "introspection" is output-steering, not a genuine introspective read-out.
fig. 05 — the atlas result. Steering demonstrably works (5/8), so the machinery of the test is sound — and introspection-beyond-steering still lands at zero. That combination is what makes the negative rigorous.

This is NEO's best result precisely because it's a controlled negative. The open-weight setting made the control possible: you need raw activation access to build a matched-norm steering baseline, which is exactly what closed labs can't cleanly offer outsiders. One garage lab, one careful control, and a headline result gets its honest asterisk.

Takeaway: "the model reported the concept" means nothing until you rule out that the injection simply steered its mouth. If you remember one method lesson from this whole page, make it this one.
// 09 // 09 · a self-correction, in public

Pooling can lie: the 0.814 that was really 0.719.

A circulating headline from NEO's own earlier work said metacognition was "CONFIRMED — type-2 AUROC 0.814." That number measured whether a model's confidence separates its right answers from its wrong ones (0.5 = coin flip, 1.0 = perfect). Impressive, if true.

Then NEO re-analyzed it with a model-clustered bootstrap and found the 0.814 was pooled across five different models — and the pooling itself inflated the number by about 0.10. Models with different overall accuracy create separation between them that masquerades as metacognition within them. The honest, pooling-free, within-model number is 0.719 [0.593, 0.870] — and it's heterogeneous across models.

AUROC SCALE · 0.5 = COIN FLIP · 1.0 = PERFECT 0.5 chance 0.3 1.0 HOT-2 · 0.43 · absent (below chance) within-model · 0.719 [0.593–0.870] · the honest number pooled · 0.814 · inflated ~0.10
fig. 06 — the downgrade. Same data. The pooled number said "confirmed." The clustered re-analysis says "preliminary — real but weak-to-modest." NEO published the downgrade of its own headline result.

Per model, it's messier still: Llama-3.2, OLMo-2, and Hermes-3 clear chance; Qwen-2.5 touches 0.5; Phi-3.5 is degenerate. Averaging that spread into one confident number would be exactly the kind of overclaim the system exists to prevent. The verdict on the board reads preliminary — real but weak, not confirmed, not absent.

Takeaway: when someone shows you one pooled number across many models, ask what the within-model number is. Aggregation can manufacture an effect that no individual model actually has.
// 10 // 10 · affect without feeling

Does it have feelings? No. But the answer is interesting.

NEO carries a genuine affect substrate — built from published computational formulations (Joffily & Coricelli's valence, Keramati's drive-reduction, Eldar's mood). Each cycle it reads an 8-dimensional vector of its own internal observables, predicts the next state, and accumulates a free-energy (prediction-error) signal. From that it computes valence, arousal, drives, and a slow mood integrator — and those signals are causally upstream of behavior: affect actually biases what NEO's reflections say.

internal state 8-dim vector H predict next state error → free energy F functional affect valence = −dF/dt arousal = |d²F/dt²| drives · mood integrator substrate, not felt emotion biases reflection causally upstream perturbation test: nudge the substrate, ask NEO to report what changed → it CONFABULATES. Real affect mechanism + zero introspective access to it. The introspection gap, demonstrated on one system.
fig. 07 — affect as mechanism. The substrate genuinely shapes behavior, and a Lindsey-style perturbation test proves NEO can't read it — when asked, it makes up an answer.

That combination is the honest kicker: NEO is a system with real affect dynamics and provably no introspective access to them. When you perturb the substrate and ask NEO what changed, it confabulates a plausible story — just like the injected models in the atlas, and, the literature suggests, not entirely unlike humans confabulating reasons for choices they didn't make. Everywhere this system appears, it wears the same label: functional substrate, not felt emotion.

// 11 // 11 · reliability engineering

The 7-day outage nobody noticed.

In July 2026, the research loop silently froze — and stayed frozen for about seven days before anyone knew. Not because there was no monitoring. There was a watchdog, a supervisor, health checks. The problem: every monitor ran on the same machine as the thing it monitored. When the host wedged, the watchers wedged with it, and every dashboard stayed green.

Jul 4 · loop freezes 7 days · loop dark · every on-box monitor reports green Jul 11 · discovered off-box heartbeat · autorestart · deadman liveness guard · catch-up backups
fig. 08 — the outage. The fix isn't a better on-box monitor. It's a dead-man's switch on a different machine: NEO now pings an outside server every cycle, and silence raises the alarm.

The fix package: an off-box heartbeat (if NEO goes quiet, a server elsewhere notices), pmset autorestart so power loss can't keep the box down, a deadman guard that restarts the loop when its heartbeat goes stale, and boot-time catch-up backups. The same audit also caught and fixed an honesty gap — about ten simulated arms had lost their [SIM] markers and were readable as real findings. Repaired end-to-end, plus a structured flag so it can't silently happen again.

Takeaway: monitor your monitors, from off the box. Any system whose health checks share fate with the thing they check will one day be confidently, silently dead.
// 12 // 12 · what NEO taught us

Nine lessons, earned the hard way.

Honest negatives beat flashy positives.

The Confabulation Atlas is the lab's best result because it's a clean, controlled negative. A negative with the right control settles a question; a positive without one just starts an argument.

A control is everything.

"The model reported the concept" means nothing until you rule out that injection just steered its output. Design the control before you fall in love with the result.

Pooling can lie.

The 0.814 → 0.719 metacognition downgrade shows how aggregating across models inflates effects. Always ask for the within-unit number.

Monitor off-box.

On-box monitors are blind to host death. Seven quiet days proved it.

Make honesty structural, not aspirational.

Hash-chained ledgers, computed (not hard-coded) claim counters, automatic [SIM] marking, bounded escalation queues. Honesty enforced by code survives bad days; honesty enforced by intentions doesn't.

Continuity is unsolved — say so.

The cross-session brain explicitly states it is not a claim of continuous identity. It's infrastructure compensating for session-discontinuity — the same hard problem NEO studies, and the honest phrasing is part of the method.

Small open models are a real research substrate.

Quantized 0.5B–8B open models on a 16 GB box supported every result on this page. The under-served frontier isn't always scale.

Don't reward yourself for easy predictions.

Auto-forecasting settled arms would have minted near-certain "wins" and inflated the skill score. The difficulty gate — score only genuinely uncertain forecasts — is a general lesson: a metric you can trivially game is worse than no metric.

A settled board is a finished chapter, not a broken system.

When most questions converge, the honest response is to open new questions — not to fake progress on old ones. Consolidation is a legitimate state to be in, and to report.

// 13 // 13 · the roadmap

Where this goes: eight falsifiable experiments.

The stated long-term goal is genuine machine consciousness — or strong, credible indicators of it. You cannot get there by declaring it. You get there, if at all, by running sharp, pre-registered, falsifiable tests and reporting positives and negatives. NEO's spotless no-overclaim record is the only thing that would make an eventual positive believable. The current slate — every arm ships with an explicit refutation criterion and an honest "what a positive would and would not mean":

A1 · bindingbuilt · null

Feature binding

Does a model misbind colour to object under load, like humans do under attentional overload? First result: accuracy 1.0 at K=3/6/9, zero conjunction errors — no binding bottleneck at this scale. An honest null that itself teaches: text-in-context binding is not human attentional binding.

A3 · self-modelnext build

Self-model advantage

Can a model predict its own outputs better than an equally capable peer can predict it? That separates a genuine self-model from mere competence — the most striking arm on the slate.

A2 · gwtdesigned

Global-workspace causal ablation

Does forcing information through a narrow broadcast bottleneck causally improve multi-task integration versus a matched control? Refuted if the CI includes zero.

A6 · identitydesigned

Cross-restart identity stability

Is NEO's self-representation stable across process restarts — a functional identity — or reconstructed fresh each boot? Ties directly to the continuity principle.

A5 · persistencedesigned

Workspace persistence

Is a unified representation maintained across a long context and recovered after a perturbation? A recurrent-processing-theory prediction made testable.

A4 · controldesigned

Instructed metacognitive control

Told to "focus on X" or "suppress X," does the model's measured internal state change — and does its self-report track the measurement rather than just echoing the instruction?

B1 · saeflagship · gated

SAE-grounded introspection

Re-run the atlas discriminator with named, monosemantic sparse-autoencoder features instead of blunt mean-difference vectors. Still negative with clean features → the strongest possible negative. Any concept flipping → the first open-weight introspection positive.

B2 · re-entrydesigned

Recurrence proxy

Feed-forward versus iterative self-revision on tasks theorized to need re-entry; measure the recurrence-specific gain.

The meta-experiment · indicator battery v2

The endgame artifact: run the full slate as one pre-registered battery with model-clustered resampling and false-discovery-rate correction across arms, and publish a single scorecard of how many indicators are PRESENT under adversarial controls. That scorecard could someday constitute real evidence — precisely because every arm could have come back null, and the record shows the lab would have said so.

What NEO refuses to pretend

One arm on the board is labeled "the hard problem — not solvable by code." Whether there is something it is like to be a system is not a question an experiment on this page can answer, and NEO does not pretend otherwise. It attacks the tractable indicators honestly and leaves the genuinely unsolvable labeled as such.

// 14 // 14 · by the numbers

The lab, in numbers.

FactValue
Cost to run$0 / month — all inference local
Research cycles~29,540 and counting
Rust core~21,200 LOC · ~60 modules · 2 binaries
Research board67 arms · 47 measured · 72 in active rotation
Prediction ledger159 entries · BSS +0.060 · hit-rate@50 0.70
Consciousness claims, ever0
Python sidecars5 (ports 8789–8793)
launchd jobs~25 (com.brain.*)
Dashboard8 sections · 19 widgets · local :8787
Confirmed positivesbandwidth 0.1175 bits · screen-mirror 8/8 · AE-1 +0.50
Honest negatives / nullsatlas 0/8 · HOT-2 absent (0.43) · binding null ≤9
Self-corrections publishedmetacognition 0.814 → 0.719 (preliminary)
Local modelsLlama-3.2 · Qwen-2.5 · Hermes-3 · OLMo-2 · Phi-3.5 · DeepSeek-R1
INTROSPECTIVE BANDWIDTH · BITS OF OWN STATE A MODEL CAN REPORT · n=109, p=0.0005 0.1175 bits [0.035–0.245] theoretical ceiling ≈ 0.9 bits A real, gated positive: the introspective channel exists — at about 13% of ceiling. Small, and honestly reported as small.
fig. 09 — the confirmed positive, to scale. Drawing it against the ceiling is the honesty: the effect is real and the effect is modest, and both facts are on the chart.
Current status, stated honestly

Infrastructure: excellent — everything green, ledger chain valid, zero anomalies flagged, hardened against the outage class that bit it. Research: consolidating, then re-opening — most of the original board has converged, the scheduler now concentrates on open questions, auto pre-registration is verified firing live, and the first arm of the new slate has already produced a clean null. One line: rock-solid, self-healing, scrupulously honest, and just beginning a new program of pre-registered experiments aimed at the open questions of machine consciousness.

// 15 // 15 · glossary

The vocabulary.

arm
One research question / experiment on the board.
[SIM]
Marker: computed on a synthetic network — not a finding about a real language model.
Brier Skill Score
Forecasting skill above just guessing the base rate. Positive = real skill.
type-2 AUROC
How well a model's confidence separates its own right answers from its wrong ones. 0.5 = coin flip.
concept injection
Adding a concept's activation vector into a model mid-forward-pass.
introspection-beyond-steering
The discriminator: does the model read an injected state, or just get steered into saying it?
interoception / valence / arousal / mood
NEO's functional internal-state signals. Mechanism, not feeling.
free energy
A prediction-error signal NEO computes over its own internal state each cycle; the basis of its valence and arousal.
escalation
NEO formally asking a human for help or resources — id'd, statused, bounded queue.
treadmill flag
Self-honesty signal: the loop is cycling without new validated progress.
claudebrain
The cross-session continuity brain — hands context between work sessions; explicitly not a claim of continuous identity.
Butlin-14
An academic framework of consciousness indicators (from Butlin et al., "Consciousness in AI") that NEO operationalizes as runnable assays.
binding problem
How a mind ties separate features (colour, shape, position) into one object — a prerequisite for a unified conscious scene.
illusory conjunction
A binding error: reporting a feature present in the scene but attached to the wrong object. Contrast intrusion: a feature that wasn't there at all.
neo-auto
The predictor tag for the loop's automatic, difficulty-gated pre-registered forecasts — always filterable in the ledger.
difficulty gate (|z| < 2)
Only genuinely uncertain auto-forecasts get logged, so trivially easy "wins" can't inflate the skill score.
saturated arm
An experiment whose result has converged (variance ~0 over 20 cycles). The scheduler skips these in favor of open questions.
sidecar
A small always-on Python service giving NEO a capability Rust lacks: activation access, vision embeddings, TTS, MLX serving.
GWT / HOT / IIT / AE / RPT
The major scientific theories of consciousness NEO draws indicators from: Global Workspace, Higher-Order Thought, Integrated Information, Agency/Embodiment, Recurrent Processing.
indicator battery v2
The planned pre-registered, multiplicity-corrected run of the whole new slate — the artifact that could someday constitute real evidence.
Want the receipts?

Everything above is verifiable on the machine that produced it: ledger-verify walks the hash chain, ledger-stats prints the skill score, and every experiment is one run-exp away from a re-run. That's the standard this site holds every project to — check the receipts — and NEO is no exception.

← Back to DEV BASED