Live demo
Agent chat with tools and cards
The rental desk below is an @de_canter/apogee-agent session with five tools on a demo domain built from @de_canter/apogee-kernel nouns. Tool results that are cards come back through @de_canter/apogee-artifacts; the client is @de_canter/apogee-agent-react over one SSE stream. Card buttons send the next message with a model-only annotation. The agent remembers customer preferences across turns through bounded memory, and it follows the business rules the manager sets on the admin assistant demo: book a mini excavator for a week and watch the deposit-note gate.
Server
src/app/api/agent/route.ts: builds the session, runs it, returns agentEventsToReadableStream(events). Rate limited per visitor.
Domain
src/demo/rental/: equipment types and units, Money rates, Identifier serials, a unit Lifecycle, rentals as Commitments, and five Zod-typed tools.
Client
src/components/Chat.tsx: useAgentSession, an artifact registry with two cards, useArtifactActions.