Nanocode: Training Claude-like coding agents with JAX on TPUs

Nanocode is a library that demonstrates how to train your own Claude Code model end-to-end using Constitutional AI, following Anthropic's approach. Written entirely in JAX and optimized for TPUs, it adapts infrastructure from Karpathy's nanochat project.
Training Setup and Costs
The nanocode-d24 model (1.3B parameters) can be reproduced in approximately 9 hours on a TPU v6e-8 at a cost of $200. The smaller nanocode-d20 model (477M parameters) trains in about 1.5 hours for $34. The project recommends using Google's TRC program for free access to pre-emptible TPUs for a month, or Google Cloud's $300 credits for new accounts.
Technical Implementation
The training process includes:
- Writing a SOUL.md file to define model alignment
- Defining an agentic interface for world interaction
- Generating synthetic data
- Using preference optimization to align the model with SOUL
Tokenization and Pre-training Differences
While the pre-training and tokenizer training process is similar to nanochat, nanocode includes additional coding data from The Stack-V2 at a 1:5 ratio in both pre-training and tokenizer mixtures. This results in stronger coding performance but reduces general text tokenization efficiency.
Tokenizer comparison shows nanocode achieves -50.9% better tokenization for code compared to nanochat, while nanochat performs better on Korean text (+7.9% for nanocode on news, -27.6% on Korean).
Commands and Setup
export NANOCODE_BASE_DIR="$HOME/.cache/nanocode"
export MODEL_TAG=d24
python -m data.pretrain -d fineweb-edu -n 300
python -m data.pretrain -d the-stack-v2-dedup -n 60
python -m scripts.tok_train --max-chars=2000000000
python -m scripts.tok_eval
The models are trained with a param:data ratio of 8, following nanochat's scaling law analysis. While optimized for TPUs, nanocode should also work on NVIDIA GPUs out of the box.
📖 Read the full source: HN AI Agents
👀 See Also

LORE.md: An Open Standard for Extracting Structured Knowledge from AI Conversations
LORE.md is an open standard for extracting durable knowledge from AI conversations into a structured format. It captures decisions with rationale, insights, patterns, open questions, and next steps, with everything linking across sessions.

LLM Matrix: Community-Voted Model Comparisons Built with Claude Code
A data scientist built llm-matrix.vercel.app to compare LLM scores across multiple dimensions simultaneously, with community votes shaping rankings. The site was developed entirely using Claude Code with two specific plugins.

Jan-Code-4B: A Lightweight Code-Tuned Model for Local Development
The Jan team released Jan-Code-4B, a 4B parameter code-tuned model based on Jan-v3-4B-base-instruct. It's designed as a drop-in replacement for Haiku in Claude Code, offering improved coding assistance while running locally.

OpenHelm: A macOS App for Automating Claude Code Tasks
OpenHelm is a free, local macOS application that automates repetitive Claude coding tasks by running jobs on a schedule, auto-retrying failures, and breaking work into chunks to avoid session limits. It uses your existing Claude subscription for LLM calls.