Repository navigation
The Room: animated android stage, accounts and bring-your-own-key vault (v0.3.0) - #3
Merged
Merged
Conversation
A Room is a live multi-persona conversation: personas can join or leave at any time, humans can post messages, and events stream over a WebSocket. It reuses the existing provider adapters and adds an offline mock brain so the app runs with no API keys. Includes a persona library, avatar catalog, REST + WS API, an 'agentrylab serve' command, and tests. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N3Fd5D3Rj3VB2GbpvDfXuE
Frontend in web/ (Vite + React 19 + TypeScript + Tailwind v4 + Motion + Zustand). Procedural SVG androids with six faces, six bodies and eight palettes; every micro-animation (blink, bob, thinking pulse, equaliser mouths, gesturing arms, floor glow) is driven by a persona's mood which the store derives from WebSocket events. Users add personas from a library or build their own with a live preview, remove them, change topic and speed, pause/step, and join the conversation; an android called on by name answers next even if another turn was in flight. Also: 'agentrylab[web]' extra, docs (README, ROOM.md, web/README.md), Makefile targets, a CI job that typechecks and builds the UI, a more natural offline mock brain with visible thinking latency, and v0.3.0. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N3Fd5D3Rj3VB2GbpvDfXuE
Email/password accounts (scrypt, rate-limited login, hashed session tokens in HttpOnly cookies). API keys for OpenAI, Anthropic, DeepSeek and xAI live in server memory only and are wiped on sign-out, forget, or restart; an opt-in 'remember' stores them AES-256-GCM encrypted under a key derived from the user's password, so the database alone cannot be decrypted. Signed-in users create private rooms that run on their own keys with a switchable brain (provider + model); rooms pause with a clear message when a key is missing or keeps failing. Adds an Anthropic provider on the official SDK and vendor-aware errors for OpenAI-compatible APIs. UI gains sign-in, a Brains & keys vault screen, a rooms menu and a brain selector. Docs cover the threat model and the roadmap (OAuth, browser-held keys). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N3Fd5D3Rj3VB2GbpvDfXuE
Rewrite ROOM.md as the complete guide: architecture map, turn lifecycle, brains and provider catalog, accounts and the key threat model, every environment variable, REST and WebSocket reference with auth rules and close codes, Python usage, operating notes and roadmap. Add .env.example, OpenAPI tags and summaries on every endpoint, a 'serve' section in the CLI guide, Anthropic and OpenAI-compatible provider examples in the config guide, a Room section in ARCHITECTURE.md, a repository map and frontend workflow in CONTRIBUTING.md, a secrets model and operator checklist in SECURITY.md, a refreshed web/README.md with the state flow, and header comments on every UI component. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N3Fd5D3Rj3VB2GbpvDfXuE
Commands (install, lint, full and single tests, UI build, serve), the two runtimes and how their pieces fit across files, Room invariants (async handlers, provider cache invalidation, secrets never leaving memory), cross-file change checklists, frontend gotchas, and the docs map. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N3Fd5D3Rj3VB2GbpvDfXuE
Also document headless UI smoke-testing in web/README.md since the frontend has no automated tests. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N3Fd5D3Rj3VB2GbpvDfXuE
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Turns AgentryLab into a website: a zero-player stage where android personas talk to each other, and to you.
agentrylab.room): live rooms where personas join/leave while the conversation runs, humans can post messages, and events stream over a WebSocket. Reuses the existing provider adapters; adds an offline mock brain so the app works with no API keys.web/): Vite + React 19 + TypeScript + Tailwind v4 + Motion + Zustand. Procedural SVG androids (6 faces × 6 bodies × 8 palettes) with mood-driven micro-animations: blink, bob, thinking pulse, equaliser mouths, gesturing arms. 12-persona library plus a builder with live preview. Play/pause/step/speed, editable topic, join the conversation (an android called by name answers next).AnthropicProvider(official SDK), OpenAI-compatible DeepSeek/xAI wiring, vendor-aware error messages.agentrylab servecommand,agentrylab[web]extra, version 0.3.0.Changes
tests/test_room.py,tests/test_auth.py; 140 tests, no network)ROOM.mdguide,CLAUDE.md,.env.example, README/CLI/CONFIG/ARCHITECTURE/CONTRIBUTING/SECURITY,web/README.md)Checklist
ruff check .)pytest -q)Screenshots or logs (if applicable)
Verified in headless Chromium at desktop and phone widths with no console errors; a fake provider key was confirmed absent from logs, transcripts and the database (ciphertext only).
🤖 Generated with Claude Code
https://claude.ai/code/session_01N3Fd5D3Rj3VB2GbpvDfXuE
Generated by Claude Code