James wears headphones that sense his brain’s electrical activity (EEG) while he works with Claude, Codex, and other AI models. He records that activity alongside his typing rhythm, dictation, and the timing of every prompt and reply, then publishes what he finds, including what didn’t work.
Could everyday EEG headphones ever tell an AI assistant that you noticed its mistake?
That’s the long question, and nothing here answers it yet. The groundwork comes first: a clean signal, honest timing, and a record of what changes together. This is one person exploring. Nothing here diagnoses, treats, improves focus, or reads thoughts, and one person’s results can’t speak for anyone else.
What gets recorded, and what stays private.
Recorded, on one clock
Brain activity (EEG).Sensors in the ear cushions pick up tiny electrical signals at the head.
Typing and clicking rhythm.When keys and clicks happen, not what was typed.
Dictation.When he starts and stops speaking to his dictation app.
Prompts and replies.When each prompt is sent and when each reply arrives.
Sharing one clock lets changes in the EEG be lined up with what he was doing.
Stays private
The words.Prompt and reply text, and anything he dictates, as text or audio.
App names.Which apps and windows were in use.
Raw keystroke timing.The exact moment of each key press.
The study keeps these on his Mac and never publishes them. This page shows summary numbers only.
The study so far.
Every measurement on this page is read from one small data file, updated as sessions are added. Normal work days are recorded during everyday work; focused research sessions are set up for the study.
Sessions recorded
Hours of EEG
Latest signal quality
The numbers load from the study’s data file. Turn on JavaScript to see them here.Open the data file
What the recordings show so far.
These come from the first session, a normal work day. Each finding carries a label for how much weight it can bear, with its numbers beside it.
How to read the numbers. Changes in EEG power are in decibels (dB), a log scale where zero means no change. The interval is the range the true change probably falls in; when it includes zero, the change may be nothing. A p value is how often shuffled data showed a difference at least as large. Windows are short stretches of EEG; any with too many filled-in samples, estimated by the headset’s software rather than measured, are set aside.
Expected
Speaking shows up clearly.
When James dictates, the sensors pick up his jaw and face muscles, and the muscle measure (fast activity that working muscles produce) jumps at each dictation start. Because those jumps land where the recorded dictation times say they should, the signal path and its timing work at the scale of seconds.
Keep in mind: This is muscle, not brain activity, so dictation is analyzed on its own.
Numbers appear here with JavaScript on.
A lead
Alpha was higher while waiting for the AI than while reading its reply.
Alpha, a rhythm that usually rises when the eyes close, ran a little higher while James waited for a reply than while he read it. Reading tends to lower alpha, so the direction makes sense, and the difference held with speaking set aside.
Keep in mind: It’s one result among many comparisons, and eye movement differed too, so it needs its own test.
Numbers appear here with JavaScript on.
Measured
Current timing is far looser than the goal.
Over the current Bluetooth path, the EEG arrives late and in bursts after connection hiccups, and the delay wanders during a session. The headset numbers its samples and none were skipped, so one steady rate fits the whole session, but each sample can only be placed in time roughly. Quick brain responses unfold within fractions of a second, so the goal is timing within 20 milliseconds.
Keep in mind: This measures when samples arrive, not the full delay from head to file, which isn’t measured yet.
Goal
20 msThe target for lining up quick brain responses
Numbers appear here with JavaScript on.
A lead
Gaps in the EEG came in bursts, and one stopped soon after his phone’s Bluetooth went off.
During short bursts, the headset’s software filled in samples, meaning it estimated them instead of measuring them. The rest of the session had almost none. Typing, clicking, sound, and the Mac’s workload didn’t explain the bursts, and one stopped soon after James switched off his iPhone’s Bluetooth.
Keep in mind: That’s one example, not proof.
Numbers appear here with JavaScript on.
Caution
The eyes-closed check didn’t clearly pass, so signal quality isn’t shown yet.
A basic EEG check: close the eyes, and alpha should clearly rise. It rose only a little, and its interval included zero. The headset also rated some sensors poor for the whole session.
Keep in mind: Until this check passes, treat every EEG finding here as provisional.
Numbers appear here with JavaScript on.
Nothing yet
No reliable change yet around sending a prompt, a reply arriving, typing, or clicks.
Each of these comparisons had an interval that included zero, and typing speed didn’t follow any EEG rhythm.
Keep in mind: With timing this loose, quick brain responses would be smeared out, so this says little about them.
Numbers appear here with JavaScript on.
A lead
Only a small share of the EEG could be turned into tokens.
Tokens turn each short stretch of EEG into one symbol from a small, fixed alphabet of patterns, much as text is split into tokens for AI models. Most stretches were set aside because they held filled-in samples, so less data loss is the main way to get more. Token use looked slightly different across phases of work.
Keep in mind: The samples are small, so those differences are only a hint.
Numbers appear here with JavaScript on.
Every comparison, side by side.
Bars show intervals, ticks show estimates, and the dashed line marks no change. Drawn only from the data file.
Every recorded session.
Timing shows how widely sample arrival times spread around one steady rate. The eyes-closed check is the basic signal test described above.
Recorded sessions, newest first. Scroll sideways to see every column.
Date
Kind
Minutes of EEG
Filled in
Timing (±)
Eyes-closed check
Dictations
Session numbers appear here with JavaScript on.
What’s next.
The first session turned up problems worth fixing before the next one. Here’s what changed, and what comes next.
Fixed so far
A setup check now stops a session from starting if the headset app’s own file recording is on, because that recording hides which samples were filled in.
Starting a session no longer mistakes a part that is still starting up for a broken one.
Prompt timing now watches only the main Claude and Codex conversations, counts prompts James types even in conversations that were already open, and ignores automated messages.
The analysis uses one steady rate per session and splits time only at real outages.
Dictation timing, never the text or audio, is copied when each session ends and analyzed as its own phase.
A timing self-check had its range backwards. It’s fixed, and earlier recordings were scored again.
Coming up
Next
Record the first focused research session, set up around the first session’s problems: phone Bluetooth off, the headset app’s own file recording off, the poorly rated sensors pressed flat, and a short reading-only block to test the waiting-versus-reading lead.
After the next session
Check across more sessions whether keeping the phone’s Bluetooth off prevents the bursts of filled-in samples.
Proposed
Automatically mark moments when something felt off, such as a stopped reply, a quick correction, or a prompt that opens with “no” or “actually”, then compare the EEG around them.
Proposed
Look for tighter timing: ask the headset’s maker how filled-in samples are marked and estimated, what its sample rate means, and whether each sample can carry its own timestamp.
Spot a flaw in the method, or have an idea for the next session? Tell James.
Stay curious. Stay in the loop.
Interested in the Mac-local loop, the iPhone companion, early testing, or the research behind it? Start a conversation with James.