The promises KeenAgents makes about your admin actions, your audit trail and your data — and what to expect during an interruption.
Three guarantees the platform is built around.
KeenAgents is designed so that no administrative action is silently lost. Every change you make either applies completely and is confirmed, or is refused with a clear error message — never half-applied, never quietly dropped. Every successful administrative action is also recorded in a permanent audit trail, so "who changed what, and when" always has an answer.
When part of the platform is interrupted, KeenAgents degrades gracefully and heals itself. The affected capability pauses and refuses new requests with a clear error instead of answering wrongly or hanging; everything else keeps working. Recovery is automatic — once the interruption clears, the paused capability resumes on its own, with no restart and no administrator intervention. Events raised in the meantime — audit lines, log lines — are held safely and recorded once the platform resumes, so maintenance does not lose events.
What the Logs page shows, and the guardrails on it.
action, error, warning, info and debug, and a Log channel with error, warning, info and debug. On a fresh organization, system action, system error and log error are on; everything else is off.action (the audit trail) and system error are permanently engaged — trying to switch them off is refused with This log is permanently engaged. The record of admin actions and errors must survive any configuration mistake.30 days, so you always know exactly how far back you can look.40 records, newest first. It is a triage view for answering "what just happened", deliberately kept small and fast — not a full-file export.logs permission on your role; toggling a channel additionally requires its write grant. Reading and reconfiguring the record are separate privileges on purpose.What you will actually see, start to finish.
What each step can hold, what happens past it, and how the platform behaves under load.
KeenAgents is built for guaranteed completion over raw speed. Once a task is accepted it always runs to an exit — it is never abandoned mid-run. To protect that, each step of a run has a size budget: a request that fits is carried through to the end, and one that cannot fit is refused clearly rather than silently truncated or left to loop. The numbers below are defaults — they can be raised per deployment to match a workload.
system/http response reads into). Past it the node fails and takes its Error edge (if wired) instead of destabilizing the run — it means the step tried to hold too much in memory at once. Split the work, or keep less in memory.system/http reads a response into). Past it the fetch fails — it means the response is bigger than a script can take in one call; page the data or narrow the request.Under load — nothing accepted is ever dropped. Instances handle work as a group and spread it between them. When one nears its budget (around 80–85%) it steps back and its peers absorb the load. If every instance is momentarily saturated, a brand-new request simply waits and retries until one is free — a task that has already started is never abandoned. So the only thing that can be refused is the very first acceptance of a new request at peak, and the client just retries; the work lands the moment capacity frees. The platform is deliberately tuned to guarantee the task finishes, not to be the fastest.
Scaling. A sandbox runs a single instance of each part. Production scales out — more instances absorb more concurrent load with no retrying at all; a rough guide to peak throughput is instances × ~16 node executions in flight, so you size the instance count to the load you expect. Even fully scaled, if everything is momentarily saturated new requests retry rather than fail — peak load degrades into a short wait, never a lost task.
When the store is momentarily full. A run's working data lives in a fast in-memory store with a short lifetime — a finished or abandoned run's data is reclaimed within about a minute, while a live run's is kept fresh for as long as it runs. If enough runs are active at once to fill that store, the platform refuses a brand-new run rather than evict a live one's state — so no running task ever loses its data. That refusal is retryable: as active runs finish and their data reclaims, room frees and the retry lands. Saturation shows up as a new request being asked to wait, never as a running task being corrupted or dropped.
action and error records.Keen Agents 2026
Documentation
Release 15