Skip to main content
everos-cloud 1.x is a rewrite, not an increment. The 0.4.x line was a hand-maintained httpx client targeting the v1 API; 1.x is generated from the EverOS OpenAPI contract and ships an ergonomic EverOS wrapper over it, targeting the v2 Memory API. Client classes, method names, parameters, and memory-type values all changed. The import path (everos_cloud) is unchanged.
The v1 API retires soon. This upgrade is no longer optional for anyone still on 0.4.x. See v1 API Retirement for the timeline, what happens to your data, and how to get help with the migration.
1.x calls the v2 Memory API. If a call returns 403 VERSION_NOT_ALLOWED, your account is not enabled for v2 yet. Contact us and we will sort it out.

Install

Not ready yet? Pin to the old client:

At a glance

Client initialization

Three things changed here, and two of them are easy to miss. api_key is now required. In 0.4.x it defaulted to None and the client read EVEROS_API_KEY from the environment. 1.x reads no environment variables at all, so EverOS() raises TypeError. This one fails loudly.
EVER_OS_BASE_URL is no longer read either, and this one fails silently. 0.4.x picked the base URL up from the environment. 1.x only honours host=. If you point at a non-production host through the environment and do not pass host= explicitly, the client falls back to production and starts reading and writing real data with no error.Search your .env files, CI configuration, Dockerfiles and compose files for EVER_OS_BASE_URL before you upgrade.
Some constructor options are gone. 1.x accepts only api_key, host, app_id, project_id and timeout. max_retries, http_client, default_headers and default_query have no equivalent. Note that 0.4.x retried twice by default and 1.x does not retry at all, so if you relied on that, add your own retry layer. There is no async client. AsyncEverOS was removed with no replacement. Run the synchronous client in a thread, or call /api/v2/memory/* with your own async HTTP client.

Add memories

user_id moved off the call and onto each message as sender_id; session_id is now required. Messages are plain dicts, and timestamp (if you set it) must be a unix millisecond value. Omit it and the SDK stamps now for you.
filters={"user_id": ...} becomes a user_id (or agent_id) argument (exactly one is required), and the response .data is returned directly.

Get, flush, delete

Memory-type values changed: episodic_memoryepisode, agent_memory splits into agent_case / agent_skill, and raw_message is no longer a retrievable type.

Errors

All failures now derive from a single EverOSError hierarchy:

Prefer the typed low-level client?

The generated MemoryApi / StorageApi are still available for full control, exposed as client.memory / client.storage. See the SDK quickstart for the typed usage.