Agent Platform
A conversational agent runtime with streaming, tools, memory and human approval, callable from your backend.
The Agent Platform runs one configurable agent per deployment and serves it over the LangGraph Platform API. It's hosted on Aegra, a self-hosted, drop-in implementation of that API. Your backend sends a user's message to a thread, and the agent's reply streams back token by token, including any tools it calls.
One client, two halves
aice-agent-platform / @aiceafrica/agent-platform combines two things. It helps to know which half you're calling, because they behave differently when something fails.
| Conversation API | Management API | |
|---|---|---|
| Properties | threads, runs, assistants, crons | agents, skills, usage, suggestions |
| What for | creating conversations, streaming replies, history | agent and skill definitions, usage, titles and follow-ups |
| Comes from | the official LangGraph SDK, unmodified | AICE's shared transport |
| Errors | the LangGraph SDK's own | the AICE error hierarchy |
| Retries | the LangGraph SDK's own policy | AICE retries and idempotency keys |
The conversation half is the LangGraph SDK itself, so its Python and JavaScript references apply to it directly.
Facts you'll use everywhere
| Graph ID | agent_platform, always. It's a constant: hardcode it, don't look it up |
| Base URL | one origin, no path prefix. http://localhost:6060 in the local stack |
| Authentication | the project's key, plus the acting user's UUID in X-User-Id |
| Isolation | every thread belongs to one user in one organization. Other users can't see it |
| Streaming | Server-Sent Events. Use the messages-tuple stream mode for chat |
Four things every client gets wrong
Each of these fails silently rather than with an error:
- Titles and follow-ups only appear if you ask for them. Call
suggestions.create_for_thread/createForThreadonce after each finished turn. Nothing else triggers it. Conversations - A rename must also write
titled_by: "user", or the next turn overwrites the user's title. Conversations - Streamed chunks are pieces, not snapshots. Append each chunk to the message with its
id; replacing leaves only the last token. Streaming - Some successful runs are refusals. Rate limits, budgets and content rules end a run with an ordinary assistant message and a
successstatus. Errors