Writing

Ideas, updates,
and hard-won lessons.

Engineering posts from the team building n00dles, plus every version we've ever shipped.

v0.3.0
Jun 2026
Testing utilities — no network calls in tests
The last documented-but-unbuilt gap from the testing guide: agents could only be tested against a real provider or a hand-rolled fake.
  • NEWmock_agent() — stub one agent's LLM call with a fixed value, validated against its declared return type
  • NEWmock_pipeline() — stub an entire pipeline's execution at once, for tests that only care what calls it
  • NEWBoth work as decorators (@mock_agent(...)) as well as with blocks
  • IMPraises= goes through the agent's real retry/fallback handling instead of skipping it
v0.2.0
Jun 2026
Parallel execution and conditional routing
Fan-out and branching, the two biggest gaps from the v0.1.0 sequential-only release.
  • NEWparallel() and the | operator — concurrent fan-out with automatic result merging by agent name
  • NEWbranch() — route to one of several agents based on a classifier's output
  • NEWmax_concurrency on parallel() for rate-limit-conscious fan-out
  • IMPPartial-resume now checkpoints each member of a parallel() group independently
v0.1.0
Apr 2026
Public beta — open source release
First public release. Sequential composition only — see the post below for what was deliberately left out.
  • NEW@agent decorator with full type validation
  • NEWpipeline() and >> for sequential composition, plus run()/arun()
  • NEWProvider support for Anthropic, OpenAI, Mistral, Gemini, Ollama, and more via litellm
  • NEWRetry with exponential backoff + jitter, per-node timeouts, and fallback agents
  • NEWSQLite state store with checkpoint-and-resume, on by default
  • NEWPydantic v2 validation for structured agent outputs
  • NEWStructured trace events with an optional OpenTelemetry exporter
🔜 Circuit breaker, distributed (Redis/Postgres) state backends, Langfuse/Helicone exporters, and the noodles deploy CLI are all on the roadmap and described in the docs, but none have shipped yet — see the docs for current status on each.