Nanocode: The best Claude Code that $200 can buy in pure JAX on TPUs (github.com)

103 points by desideratum 6 hours ago

19 comments:

by wwfn 4 hours ago

Tangential (but topical in that "The threat is comfortable drift toward not understanding what you're doing" is also on the front page):

Is the generated python code in the example wrong?

The prompt

> Develop a Python function that removes any falsey values from a list. Return the modified list without creating a new one.

Is answered with list comprehension, which makes a new list and leaves the original unmodified (never mind that the *args input necessarily can't be a modifiable list?)

   def remove_falsey_values(*args): return [val for val in args if val]
Whereas I'd expect something like

    def remove_falsey_values(l):
          for i in reversed(range(len(l))):
               if not l[i]: l.pop(i)
          # returned list is linked to input l 
          return l

    a = [1, 0, False, 'foo']
    x = remove_falsey_values(a)
    x[0] = 2
    print(a) # [2,'foo']
by desideratum 34 minutes ago

Oh I wouldn't be surprised. This is a sample from one of the OSS code datasets I'd used, which are all generated synthetically using LLMs. Data is indeed the moat.

by hecanjog 3 hours ago

It doesn't fit the requirement to modify the list in place, but the prompt itself contradicts the requirements by asking explicitly for the implementation to use *args and a list comprehension.

by wwfn 3 hours ago

Ahh I didn't see the full original prompt -- it's overflowing into a horz scroll for me. I thought it was the "critique loop" that injected the *args requirement. I guess garbage in, garbage out. Still unfortunate example to use.

by semiinfinitely 28 minutes ago

your second function is the type of bad code you get from people trying to program python like its c

by __s 2 hours ago

    def remove_falsey_values(l):
          l[:] = (x for x in l if x)
by bdbdbdb 4 hours ago

Dumb question - and I'm not trying diminish the achievement here, I just genuinely don't understand:

Why would people want to spend $200 to train a coding model when there are free coding models?

by desideratum 4 hours ago

This is a great question. You definitely aren't training this to use it, you're training it to understand how things work. It's an educational project, if you're interested in experimenting with things like distributed training techniques in JAX, or preference optimisation, this gives you a minimal and hackable library to build on.

by wongarsu 2 hours ago

It's also a great base for experimentation. If you have an idea for an architecture improvement you can try it for $36 on the 20 layer nanocode setting, then for another $200 see how it holds up on the "full scale" nanocode

Kaparthy's notes on improving nanochat [1] are one of my favorite blog-like things to read. Really neat to see which features have how much influence, and how the scaling laws evolve as you improve the architecture

There's also modded-nanogpt which turns the same kind of experimentation into a training speedrun (and maybe loses some rigor on the way) [2]

1 https://github.com/karpathy/nanochat/blob/master/dev/LOG.md

2 https://github.com/kellerjordan/modded-nanogpt

by vova_hn2 2 hours ago

> This is a library showing you how to train your own Claude Code end-to-end.

What does it even mean?

Claude Code is a so called "harness" - a thing that builds a context for LLMs, calls LLMs, executes tool calls etc. It uses various Anthropic models under the hood.

It can also use other models AFAIK.

It cannot be "trained".

Sorry if this comment sounds nitpicky, I'm just annoyed by the imprecise use of terminology.

by desideratum 29 minutes ago

I see what you mean, but I disagree. I expect that Claude Code is backed by a separate post-train of Claude base which has been trained using the Claude Code harness and toolset.

by vova_hn2 21 minutes ago

It is possible of course, but I see no reason to believe it.

by krackers an hour ago

Yeah it should really be about post-training a model for tool-use.

by jaboostin 4 hours ago

As someone with zero ML experience, this was a super interesting and digestible read!

by bwfan123 3 hours ago

agree, great educational tool ! tied a bunch of things around coding agents for me.

by desideratum 29 minutes ago

I appreciate the kind words very much : )

by wg0 an hour ago

Does this really work? Does this how Anthropic works?

Any practitioners can elaborate?

by desideratum 24 minutes ago

This is a gross simplification of the process - you would typically use order(s) of magnitude more data and compute, and a substantial amount of online reinforcement learning to elicit emergent tool use capabilities.

Many recent OSS models have great tech reports where you can learn more about these kind of things: Kimi 2.5 https://github.com/MoonshotAI/Kimi-K2.5/blob/master/tech_rep... GLM 5 https://arxiv.org/abs/2602.15763 DeepSeek R1 https://arxiv.org/pdf/2501.12948

by redman25 an hour ago

Not to be confused with nanocoder, the agentic coding harness.

https://github.com/Nano-Collective/nanocoder

Data from: Hacker News, provided by Hacker News (unofficial) API