Runtime sync
An agent server holds no state of its own, but it does hold a runtime: an in-memory copy of everything an agent needs to run. The runtime is built from the account's configuration at startup and brought up to date before every agent run.
What the runtime holds
- the allowlist, resolved into the functions and objects an expression may reach;
- the system variables an agent may read;
- the runtime limits and the compile rules;
- the connection pools, as open HTTP clients;
- every profile, with the open connections of the LLM profiles and the database engines of the database profiles;
- the secrets source and the encryption settings, described under Security and privacy;
- the hooks, imported once when the agent server starts.
Beside the runtime, the agent server caches the agents it has run. A cached agent is dropped as soon as the cloud reports a change to it, whether to its definition, title, tag, run limits, prompts or const, so a republished agent runs in its new form on its next request.
How a change reaches every agent server
- A developer or an administrator changes a part or a profile in the UI. Search2o Cloud stores the change, stamped with the time.
- Every time an agent run starts, the agent server tells the cloud. The reply carries the time of the latest change.
- If that time is newer than the agent server's runtime, the agent server asks for what changed since it last asked, and receives only those parts.
- The agent server builds a new runtime from the changed parts and the unchanged pieces of the old one, then swaps it in. The agent runs against it.
A change is live on the next run, on every agent server, and two agent servers starting the same agent at the same moment run with the same runtime. Only the changed pieces are rebuilt: the allowlist is resolved again when it changes, connection pools are reopened when the pools change, database engines when a database profile changes, and LLM connections when an LLM profile changes.
Two parts work differently. A changed compile rule applies when a draft is next validated or published, and does not touch an agent that is already published. A changed hook is imported when the agent server next starts, so it takes effect only after a restart.
Running agents are not disturbed
An agent keeps the runtime it started with for its whole run. When a runtime is replaced, the connection pools and database engines of the old one stay open until the last agent using them finishes, and are closed then. A configuration change never breaks an agent in the middle of a call.
Where the parts are configured
| Part | Where in the UI | Edited by |
|---|---|---|
| Allowlist | Guardrails › Allowlist | Developer |
| System variables | Guardrails › System variables | Developer |
| Compile rules | Guardrails › Compile rules | Developer |
| Runtime limits | Guardrails › Runtime | Developer |
| Connection pools | Operations › Connection pools | Administrator |
| Profiles | Profiles | Developer |
| Secrets and encryption | Operations › Secrets & encryption | Administrator |
| Hooks | Operations › Hooks | Administrator |
Versions and concurrency
Every part carries a version. If someone else changed a part after you opened it, your save is refused, so two people cannot silently overwrite each other. Saving a part with no changes is refused too. Every create, update and delete produces an audit log entry that names the part and lists the fields that changed.

