NOETIC
Build AI agents you’d actually trust in production.
Noetic gives you composable TypeScript primitives, memory that keeps token costs flat, and evals that catch regressions before users do.
Meet the building blocks
A small set of composable primitives. Build any agent pattern by combining the pieces you need.
Reasoning loops, parallel workloads, sub-agents — all of it falls out of these seven. The ReAct pattern is 15 lines. A task tree is 40. You can read both in under a minute.
Call a language model
(params: ModelParams) => StepInvoke an external tool
(name, input, fn) => StepExecute a pure function
(fn: (ctx) => T) => StepLaunch a child agent
(agentConfig) => StepParallel step execution
({ mode, paths }) => StepConditional step selection
(route: (input) => Step) => StepRepeat steps until condition
(steps[], until) => StepBatteries included
Common agent patterns built-in for convenience.
Each pattern is a composition of the primitives above — no special cases, no hidden behavior. Read the source. Fork it. The framework doesn't care.
Reason, act, observe loops
Retry with feedback until a verifier passes
Parallel sub-agent hierarchies
Dynamic plan rewriting mid-run
Interleaved parallel workstreams
Critic + generator collaboration
Reasoning loop in 15 lines, full memory stack in 10. No boilerplate.
It's the same seven primitives from before. Once you know those, you can read — and change — anything.
Unparalleled memory management
Long multi-turn conversations without blowing up the context window.
Working memory, observation extraction, plan tracking, durable checkpoints, and more — assemble the layers you need or build your own. Token costs stay predictable as conversations grow.
Built to survive production
The parts that matter once an agent leaves your laptop.
Durable execution
Checkpoint and resume long runs — they survive crashes and restarts.
Runs anywhere
Node, the browser, or a sandbox. Swap the fs and shell adapters for in-memory, remote, or sandboxed backends.
JSON workflow runtime
Define an agent declaratively as JSON and run it. Same primitives, no code.
Eval Framework
Write evals as easily as Jest tests, then let the optimizer make your agent better.
Define what "good" looks like for your agent, run it against a dataset, and let GEPA optimization improve it. Gate regressions in CI. Same primitives. Same runtime. Just a feedback loop added.
What makes Noetic different?
Any model on OpenRouter — OpenAI, Anthropic, open-weights. Swap models with one line of config.