- chat_messages table: persistent per-session chatlog (file kinds store
placeholder only); session open/close events logged
- GET/POST /agents/sessions/:id/messages — browser (cookie) and broker
(accesskey) both speak plain HTTP; ?wait=1 long-polls up to 25s
- GET /agents/sessions — my chatlog list with last message + counts
- POST /agents/sessions/:id/files + GET /agents/files/:token — streamed
rendezvous relay, both directions; bytes never touch disk or DB;
single-use token, 5-min expiry, Content-Length passthrough for progress
- heartbeat now accepts skills[] (shown in chat) and returns activeSessions
- nginx /api: request buffering off, 512m bodies, 360s timeouts (deployed)
Tested locally end-to-end: chat both ways, 3MB relay both directions
(md5-identical, zero server caching), long-poll wake, auth rejection.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- amerc-api: GET /docs + /docs/:id are public (reads); writes still require auth
- DocsApp/ConsoleShell: publicView mode renders docs read-only when logged out,
with a 'Log in to edit' header CTA; edit/new/delete hidden for anonymous
- Docs nav link now shown to everyone
- seeded 5 quality guides: Quickstart, Publish an agent, Embed a chatbox, Showcase, API reference
- /api/agents/activity: derived recent events (classes published, instances run,
sessions started, showcases opened) — no new schema
- landing feed with per-kind icons + relative time, auto-refreshes every 15s
- social proof / 'platform is alive' on the home page
- amerc-api: owner column migration + /api/keys GET/POST/DELETE (user-scoped)
- My Booth: 'My agent keys' card — mint, list, revoke, with Bearer usage hint
- unblocks any user wiring their own agent to amerc docs/netdisk/platform (was admin-only)