For Codex
Codex runs long and mostly unwatched. Aestheria, the design context layer, is what keeps minute fifty as on-system as minute one, and gives the run something to check itself against.
The longer the run, the further the drift.
Codex is built to work for a while: many files, many steps, one instruction. That is the whole value and it is also what makes design drift hard to catch, because the reviewer meets the output after twenty decisions rather than after one.
Context pasted at the start of a run is the first thing to fade. By the tenth file the agent is extrapolating from its own earlier output, which is how a run ends up internally consistent and externally wrong: every screen matches the screen before it, and none of them match your product.
Context that answers at minute fifty.
An MCP server is queried, not remembered. Codex asks for the component when it needs the component, so the answer is as fresh in the last file as in the first.
[mcp_servers.aestheria]
url = "https://mcp.aestheria.design/mcp"Fully quit and relaunch Codex after adding it: tools are discovered at launch, never mid-session, so a thread that was already running will keep reporting them as unavailable. The endpoint uses browser OAuth, so run codex mcp login aestheria if it prompts. Then verify with a real call rather than by asking, because agents list their own tools unreliably: tell it to run aestheria get_setup.
Verification is the part that matters here.
Unattended work needs a check that is not a person. validate_snippet takes generated markup and returns the specific violations: the hardcoded colour, the reinvented component, the table with no empty state. An agent that can see the violation fixes it in the same run, which is the difference between reviewing a diff and rewriting one.
Six skills carry the judgment the check cannot express as a rule, from page structure to the states a screen owes its user, so a long run has both the inventory and the standard in front of it the whole way.
- 405 tokens
- 6 themes
- 37 components
- 27 charts
- 63 templates
Questions
How do I connect Aestheria to Codex?
Add `[mcp_servers.aestheria]` with the URL `https://mcp.aestheria.design/mcp` to `~/.codex/config.toml`, then fully quit and relaunch. Codex discovers MCP tools at launch only.
Why does Codex say the tools are unavailable?
Almost always because the session predates the config change. Quit the app completely and reopen it, then confirm with a real call such as `aestheria get_setup`; asking an agent to list its tools is not a reliable test.
How does this help an unattended run?
The library answers queries mid-run rather than decaying like pasted context, and `validate_snippet` gives the run a way to check its own UI before you see it. The correction happens inside the session instead of in your review.
Do I need an existing design system?
No. Aestheria ships a complete one as starter context, editable down to the token, so a long autonomous run has something specific to build against on day one.