NAMS Limits & Behavior
Operational limits, quotas, and runtime behavior for the hosted NAMS backend. These describe what to expect as a client — not internal service metrics. For the wire contract see NAMS REST API; for setup see Use NAMS.
|
Conformance tiers ≠ access tiers. Bronze / Silver / Gold / Platinum are agent-memory-tck cross-language conformance levels (how complete a client SDK is), not a NAMS pricing or access tier. Every capability listed as available in the capability matrix is reachable by any authenticated workspace. |
Client defaults (NamsConfig)
These are SDK-side defaults you can override; they are not server limits.
| Setting | Default | Notes |
|---|---|---|
|
|
Per-request HTTP timeout. |
|
|
Retries on network errors, 5xx, and 429. |
|
|
Base for exponential backoff. |
|
|
Sends a probe (with |
|
|
|
Rate limits
NAMS applies per-workspace rate limiting. When you exceed a limit the service returns 429 Too Many Requests; the SDK raises RateLimitError (carrying retry_after) after retries are exhausted, and honors any Retry-After header.
Specific documented guards:
| Operation | Limit | On exceed |
|---|---|---|
Ontology preview ( |
30 requests / hour / workspace |
|
OAuth dynamic client registration ( |
Per-source-IP sliding window |
|
All other endpoints |
Per-workspace sliding window |
|
|
Treat |
Quotas
| Quota | Behavior |
|---|---|
Managed workspaces per user |
Capped (operator-configured via |
Request payload size |
Oversized requests return |
|
Whether additional usage quotas vary by workspace plan is not currently documented — confirm with the NAMS team before relying on plan-specific limits. |
Runtime behavior
- Extraction is asynchronous on NAMS
-
When you add messages, entity/relationship extraction runs server-side. Writes are accepted immediately (
202 Accepted); extracted entities become queryable a short time later. PollGET /v1/conversations/{id}/extraction-status, or calllong_term.wait_for_extraction(…)from the SDK, before asserting on extracted results. (On bolt, extraction is synchronous andwait_for_extractionis a no-op returningTrue.) - Read-only Cypher
-
client.query.cypher(…)runs against the workspace graph in Neo4j READ access mode. Write statements are rejected server-side (400). This is available to any authenticated workspace — it is not gated behind a tier. - Eventual consistency
-
Because extraction and resolution are asynchronous, a just-written message and its derived entities are not guaranteed to be visible in the same instant. Delete operations likewise propagate asynchronously.
Status codes & errors
The service uses standard HTTP status codes; error bodies are JSON of the shape {"error": "…"} (some carry additional fields such as message and limit). See REST API → Errors for the full mapping to SDK exceptions.