# Codex-maxxing

[[jxnl-blog|Jason Liu]] (jxnl) had been using coding agents heavily before Codex. What changed with the May 2026 Codex app upgrades was that the same tools started fitting his knowledge work too. The shift he names is that work now has somewhere to live — a durable thread, shared memory, tools that can act on the machine, ways to steer and resume, and a surface where the artifact itself can be reviewed.

## Durable threads

Compaction turns megathreads into something he keeps for months. He maintains one pinned thread per workstream: Chief of Staff, Agents SDK, OpenAI CLI, Codex for OSS, a Twitter monitor. The tradeoff is cache cost — revisited long threads no longer sit in the LLM cache, so cold reads cost more — but continuity wins for the workstreams he actually cares about. Pinned threads have `Cmd-1` through `Cmd-9` shortcuts.

## Voice input

Voice gets the unedited version of his thinking into Codex. Built-in voice plus Wispr Flow for system-wide dictation. The example sentence — "I think there is some guy named Ben in Slack who mentioned this, I do not remember exactly what, just go look" — is annoying to type, natural to say. Same for transcribing a call with Granola as starting material for a piece. The planner gets the messy input, not the polished one.

## Steering

Steering injects messages while Codex is still working. While reviewing a website he keeps talking: make this smaller, this copy is wrong, the spacing feels off, open a PR when done, wait for the preview deploy, send the link to the reviewer in Slack. The unit of work stops being "one prompt, one answer" and becomes a small operating loop with a queue.

## Memory as files

A long thread can remember things, but the memory is trapped inside the thread unless useful parts are serialized. jxnl keeps an Obsidian vault — `TODO.md`, `people/`, `projects/`, `agent/`, `notes/` — with `AGENTS.md` instructions telling the agent to update relevant pages as it learns about people, makes progress, or closes loops. The vault is also a GitHub repo, which gives two things: cloud access for remote work, and diffs as a review surface for memory. He can see what the agent thought was worth remembering.

This is the same pattern Lalit Maganti described in [[building-syntaqlite-ai]] and that Andy Crawshaw outlined in [[agent-principal-agent-problem]]: files force the agent to compress experience into something that survives the thread. Codex's first-party `Settings > Personalization > Memories` is a local recall layer, useful for stable preferences but not a replacement for checked-in instructions. Chronicle (research preview, uses recent screen context) points the same direction with the usual prompt-injection and permissions caveats.

## Computer and browser use

The distinction he uses:
- `$browser` — local web surfaces to inspect and annotate
- `@chrome` — signed-in browser state, multiple tabs
- `@computer` — work that only exists as a desktop GUI

If `@computer` takes over Safari to read his logged-in Twitter, he loses Safari while it works. `@chrome` is better when several authenticated tabs need to be used in parallel without blocking the application he's currently in.

## Connectors and Skills

`$slack`, `$gmail`, `$calendar` are the most-used connectors — work shows up there before becoming code. Skills make repeated workflows reusable; Skill Installer adds OpenAI-recommended ones directly from the composer.

## Heartbeats

A Heartbeat is a thread-local schedule. The thread can say "keep an eye on this every few hours" and schedule itself, run until a condition, and change cadence over time.

His **Chief of Staff** thread runs every 30 minutes, scans Slack and Gmail for unanswered messages, researches answers, drafts replies (but does not send). His **refund** thread polled Amazon support every 5 minutes; when an agent joined, it dropped to every minute and got him a refund while he was in the shower. His **animation** thread checked Slack every 15 minutes for feedback on a posted video; re-rendered via Remotion when new comments came in; used `@computer` to press the Add file button when the Slack MCP server couldn't upload.

The interesting thing about that last one is that the loop crossed tool boundaries — Slack for feedback, Remotion for render, `@computer` for upload. Heartbeats are the binder for these tool-graph loops.

## Goals

The newest piece. A weak goal is "implement the plan in this Markdown file." A strong goal has a real success criterion. When jxnl tried to migrate the Python Rich library into Rust, the goal was "must pass all the unit tests from the original library." The test suite gave the run an oracle. Verification is what makes ambition cash out.

## The side panel

The side panel is where Codex stops being only a chat app. Three jobs:

1. **Inspect artifacts** — Markdown is commentable, spreadsheets render formulas with cell edits, CSVs become tables, PDFs render (LaTeX especially), slides created and reviewed in place.
2. **Operate web surfaces** — in-app browser controlled via `$browser`, with annotations on the live page. He uses `index.html` for static artifacts, Storybook for components, Remotion Studio for animation, Slidev for slides, Streamlit for data apps.
3. **Review changes** — same object, same annotation surface, no context-switching.

The smallest version is often the best. A single `index.html` with JS and CSS, opened in the side panel, no server required. He's experimenting with Heartbeats that keep an `index.html` fresh between visits.

## What's actually new

Most pieces — durable threads, file-based memory, screen control, scheduled checks — exist in fragments across the agent tooling space (see [[bubblewrap-dev-env]], [[matryoshka-isolation]], the Claude Code [[building-syntaqlite-ai]] workflow). What jxnl is naming is the moment they cohere into one operating loop where work keeps moving after he leaves. The unit isn't the prompt anymore. It's the thread plus the schedule plus the artifact, with memory as files holding it all together.

The thesis at the end: "Not that an agent can write code for me, but that more of my work can keep moving after I leave."
