cognet.config.ts
What the mind tells the runtime before the first tick. Not what it does — its systems say that — but how it wakes, how much of the machine it may use, and what services it needs.
export default defineCognet({
mode: { kind: "continuous", hz: 20 },
threads: "auto",
uses: {
depth: { interface: "depth-metric@1", optional: true },
},
})
defineCognet is ambient. Only mode is required. This file is always TypeScript, whatever
the systems are written in.
| Field | Means |
|---|---|
mode | how the mind wakes — see below |
threads | cores for worker systems: "auto", or a number. 0 runs them on the main thread |
uses | the services it needs, by interface — see Services |
suggests | providers it recommends for those uses |
wakeOn | which stimuli wake an invocation mind — absent, all of them |
maxTicksPerWake | a ceiling on one wake, for minds that must settle in known steps |
abi | refuse kernels this mind wasn't tested against |
mode
mode: { kind: "continuous", hz: 20 } // ticks on its own clock — a body, a robot
mode: { kind: "invocation" } // ticks when something arrives, until it settles — a chat agent
Set hz by the fastest sense worth reacting to. Slower rhythms are the mind's own, written as
components its systems run on.
threads
Results never depend on it: systems only run in parallel where they share nothing. So
threads: 0 computes the same mind, one system at a time — the first thing to try when a
worker system misbehaves.
What isn't here
No name or version — those are in package.json. No paths, providers or model ids — a use names an interface, and the agent grants what fills it. The
config says what the mind needs; the machine decides how to provide it.