NOETIC
Composable primitives. Clean code from 10 lines to 10,000.
Start with pre-built patterns — ReAct, task trees, dual-agent loops. Or compose your own. Reactive memory keeps context windows manageable automatically.
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
(steps[], strategy) => StepConditional step selection
(condition, then, else) => StepRepeat steps until condition
(steps[], until) => StepUnparalleled memory management
Long multi-turn conversations without blowing up the context window.
Working memory, observation extraction, vector recall, episode summaries, durable checkpoints. Let Noetic handle it or build your own. Token costs stay predictable as conversations grow.
Batteries 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
Simple single-shot LLM calls
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.
What makes Noetic different?
OpenAI, Anthropic, local models, or a custom adapter. Bring your own provider.
Eval Framework + RL Pipeline
Write evals as easily as Jest tests. Train agents with reinforcement learning.
Define what "good" looks like for your agent, run it against a dataset, and let the optimizer improve it. Same primitives. Same runtime. Just a feedback loop added.