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.

FieldMeans
modehow the mind wakes — see below
threadscores for worker systems: "auto", or a number. 0 runs them on the main thread
usesthe services it needs, by interface — see Services
suggestsproviders it recommends for those uses
wakeOnwhich stimuli wake an invocation mind — absent, all of them
maxTicksPerWakea ceiling on one wake, for minds that must settle in known steps
abirefuse 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.