Hivekeep uses Server-Sent Events (SSE) to push real-time updates to the web UI. Connect to the SSE endpoint to receive live notifications about changes.
Requires authentication. Returns a text/event-stream response.
Connected : Server sends a connected event with a connectionId
Ping : Server sends ping events every 15 seconds to keep the connection alive
Events : Real-time events are delivered as message events with JSON data
Disconnect : Client closes the connection; server cleans up automatically
Each event is a JSON object with a type field and contextual fields:
" agentId " : "optional-agent-id" ,
Real-time message streaming and conversation events.
Event Description Scope chat:messageNew message created (user or AI) Per-Agent chat:tokenStreaming token chunk during AI response Per-Agent chat:reasoning-tokenStreaming reasoning/thinking token chunk Per-Agent chat:reasoning-doneReasoning/thinking block finished Per-Agent chat:tool-call-startTool call started Per-Agent chat:tool-callTool call arguments resolved Per-Agent chat:tool-resultTool result received Per-Agent chat:token-usageLive token-usage update for the turn Per-Agent chat:doneAI response finished Per-Agent chat:clearedConversation history cleared Per-Agent
Event Description Scope reaction:addedReaction added to a message Per-Agent reaction:removedReaction removed from a message Per-Agent
Event Description Scope task:statusTask status changed (pending, in_progress, queued, etc.) Broadcast task:doneTask completed or failed Broadcast task:deletedTask deleted Broadcast task:todosSub-agent updated its structured todo list Broadcast task:token-usageLive token-usage update for a running task Broadcast queue:updateQueue/processing state changed (includes processingStartedAt timestamp when processing) Broadcast
Event Description Scope miniapp:createdA mini-app was created Broadcast miniapp:updatedA mini-app was updated Broadcast miniapp:deletedA mini-app was deleted Broadcast miniapp:file-updatedA mini-app file was changed Broadcast miniapp:reloadA mini-app requested a live reload Broadcast
Event Description Scope memory:createdMemory created Per-Agent memory:updatedMemory updated Per-Agent memory:deletedMemory deleted Per-Agent
Event Description Scope compacting:startCompaction started Per-Agent compacting:doneCompaction completed (includes summary and memories extracted) Per-Agent compacting:errorCompaction failed (prevents infinite spinner in the UI) Per-Agent
Event Description Scope agent:errorAgent processing error Per-Agent agent:createdNew Agent created Broadcast agent:updatedAgent metadata changed (avatar, provider, etc.) Broadcast agent:deletedAgent deleted Broadcast
Event Description Scope provider:createdProvider added Broadcast provider:updatedProvider configuration changed Broadcast provider:deletedProvider removed Broadcast
Event Description Scope mcp-server:createdMCP server added Broadcast mcp-server:updatedMCP server config changed or approved Broadcast mcp-server:deletedMCP server removed Broadcast
Event Description Scope contact:createdContact created Broadcast contact:updatedContact updated Broadcast contact:deletedContact deleted Broadcast
Event Description Scope cron:triggeredCron job triggered Broadcast cron:createdCron job created Broadcast cron:updatedCron job updated Broadcast cron:deletedCron job deleted Broadcast
Event Description Scope webhook:createdWebhook created Broadcast webhook:updatedWebhook updated Broadcast webhook:deletedWebhook deleted Broadcast webhook:triggeredWebhook received a payload Per-Agent
Event Description Scope channel:createdChannel created Broadcast channel:updatedChannel updated Broadcast channel:deletedChannel deleted Broadcast channel:message-receivedMessage received from external platform Per-Agent channel:message-sentMessage sent to external platform Per-Agent channel:user-pendingNew user pending approval Broadcast channel:user-approvedUser approved Broadcast channel:transferredChannel reassigned to a different Agent Broadcast
Event Description Scope prompt:pendingNew prompt awaiting human response Per-Agent prompt:answeredHuman responded to a prompt Per-Agent prompt:expiredA pending prompt timed out Per-Agent prompt:secret-requestAgent requested a secret via a secure-input popup Per-Agent prompt:secret-resolvedA secure-input request was answered or dismissed Per-Agent
Event Description Scope notification:newNew notification Per-User notification:readNotification marked as read Per-User notification:read-allAll notifications marked as read Per-User notification:deletedNotification deleted Per-User
Event Description Scope quick-session:closedQuick session closed Per-Agent
Emitted when an Agent queues an outbound email that needs human approval.
Event Description Scope email:pending-createdAn outbound email is awaiting approval Per-Agent email:pending-resolvedA pending email was sent, failed, or rejected Per-Agent
Event Description Scope plugin:installedPlugin installed Broadcast plugin:uninstalledPlugin uninstalled Broadcast plugin:updatedPlugin updated to a new version Broadcast plugin:reloadedPlugin reloaded Broadcast plugin:enabledPlugin enabled Broadcast plugin:disabledPlugin disabled Broadcast plugin:configUpdatedPlugin config changed Broadcast plugin:autoDisabledPlugin auto-disabled due to errors Broadcast
Event Description Scope settings:hub-changedHub configuration changed Broadcast settings:defaults-updatedDefault models/services configuration changed Broadcast
Event Description Scope version:update-availableNew Hivekeep version available Broadcast
Event Description Scope log:entryPlatform log entry Broadcast card:updatedA live plugin card was updated Broadcast
Most CRUD resources also broadcast created / updated / deleted events so any open tab stays in sync. Beyond the families above, these include: agent (plus agent:active-project, agent:read), provider, mcp-server, contact, cron, webhook, memory, custom-tool, toolbox, tool-domain, email-account, connected-account, project, project-tag, and ticket (plus ticket:comment-added / comment-updated / comment-deleted). The canonical, exhaustive list of event names lives in src/server/sse/types.ts.
Events are delivered based on scope:
Broadcast : Sent to all connected clients (provider changes, MCP updates, settings)
Per-Agent : Sent to clients viewing a specific Agent (chat, memories, compacting, reactions)
Per-User : Sent to a specific user’s connections (notifications)
const evtSource = new EventSource ( '/api/sse' , {
evtSource . onmessage = ( event ) => {
const data = JSON . parse ( event . data )
// Append streaming token to UI
appendToken ( data . data . token )
// Finalize message display
refreshMiniApp ( data . data . app )
evtSource . onerror = () => {
// EventSource auto-reconnects
console . log ( 'SSE connection lost, reconnecting...' )