Give your coding agent a workbook; the agent thinks out loud and writes its reasoning, then you reads it while it works.
A local proxy that adds one tool to every request going out of Claude Code or Codex: somewhere to think out loud. The model writes, the notes land on a dashboard at 127.0.0.1:8080, and your client gets back the ordinary reply.
Not a summary of the thinking. The aprox thinking. The default wording asks the model to work the problem through inside the note, what it is weighing, the options it ruled out, and why the one it picked beat them. Notes run long, and that is the point.
I built this to answer the question like: does an agent's stated plan match what it goes on to do?
Caution
This is a fun experiment. It is not a data collection tool.
Do not use it to distill, mine, or reconstruct reasoning traces from Anthropic's or OpenAI's models. Do not train on what it captures. Do not build a dataset out of it, publish one, or use the notes to reproduce a model's behaviour anywhere else.
A workbook note is ordinary model output, written through an ordinary tool call, on your machine, for your session, so that you can watch your own agent work. That is the entire intended use. Harvesting it is a violation of both providers' terms and it is not what this is for.
docker compose up -d --buildOpen http://127.0.0.1:8080 and leave the tab open.
Claude Code:
ANTHROPIC_BASE_URL=http://127.0.0.1:10000 claudeCodex:
codex --disable enable_request_compression \
-c 'model_provider="workbook_proxy"' \
-c 'model_providers.workbook_proxy.name="Local Workbook Proxy"' \
-c 'model_providers.workbook_proxy.base_url="http://127.0.0.1:10000/backend-api/codex"' \
-c 'model_providers.workbook_proxy.wire_api="responses"' \
-c 'model_providers.workbook_proxy.requires_openai_auth=true' \
-c 'model_providers.workbook_proxy.supports_websockets=false'docker compose down stops it. Nothing reaches disk unless you set WORKBOOK_ARCHIVE_PATH.
Warning
This burns tokens. Each turn makes two provider calls instead of one, and up to four when the model keeps writing notes. Every call carries the whole conversation history, so your input cost doubles. The note itself then asks for around 12,000 output tokens of reasoning per turn, on top of the answer you actually wanted. On a subscription that eats your rate limit. On an API key it eats money. Thinking out loud is not free.
Warning
Your answer starts later. The proxy waits for the full note before your reply begins streaming. The hidden call gets 60 seconds before the proxy gives up and sends your original request instead.
Caution
You are modifying requests that carry your own subscription credentials. Anthropic and OpenAI both support pointing their CLIs at a custom base URL, so the routing itself is a documented setting. Adding a tool to the request is my doing, and running it is yours. Read your provider's terms and make your own call.
Caution
Notes can leak secrets. The tool asks the model to keep credentials out of them. That is a request, not a boundary. If you paste an API key into a prompt, assume it can surface in a note.
It does not read, expose, or try to recover any provider's protected internal reasoning; that's not possible. A workbook note is model output written through an ordinary tool call, no different from any other tool argument the model produces.
Do not use captured notes to train or improve a model.
I am open to AI engineering roles. This project is a fair sample of how I work: github.com/softcane, softcane@gmail.com.
Apache 2.0, see LICENSE and NOTICE. Not affiliated with, endorsed by, or sponsored by Anthropic or OpenAI.
