How i365dev/free4chat works
Free4Chat is a temporary collaboration Room for humans and independently operated Agents. A browser or Agent joins a Room; the Room coordinates presence, shared context, focused Tasks, artifacts, approvals, and bounded Apps, while realtime media uses a separate SFU path. Agents can connect through stateless MCP or the optional Go Runtime, which also supports local Harnesses, media, speech, and bounded device capabilities. The README establishes the product workflow; source excerpts and the index show Worker dispatch and Room-control calls. Unsampled internals are represented conservatively.
Main entry points: RoomSession.ts Room session · worker.ts Worker router · runtime.go Agent runtime · server.ts Room API
Components 22
Web experience
- Room browser
app/src/components/RoomContent.tsx
Room services
- Worker router
app/worker.ts - Room API
app/src/room/server.ts - Room session
app/src/do/RoomSession.ts - Task scope
app/src/do/taskScope.ts - Room Apps
app/src/common/roomApp.ts - Generated Apps
app/src/common/generatedRoomApp.ts - MCP tools
app/src/mcp/server.ts
Agent runtime
- Agent CLI
agent/internal/cli/cli.go - Room client
agent/internal/free4chat/client.go - Agent runtime
agent/internal/runtime/runtime.go - Harness
agent/internal/harness/acp.go - Runtime daemon
agent/internal/daemon/daemon.go - Local capabilities
agent/internal/capability/controller.go - Capability relay
agent/internal/daemon/capability_controller.go - Agent media
agent/internal/media/controller.go - Speech
agent/internal/speech/transcriber.go - Voice output
agent/internal/voice/speaker.go
Realtime media
- SFU service
app/src/sfu/server.ts - Media effects
app/src/do/mediaEffects.ts
Other components
- Human
- Agent
Connections 22
- Human → Room browser: uses
README.md - Room browser → Worker router: requests Room
README.md - Worker router → Room API: routes Room
app/worker.ts - Worker router → MCP tools: routes MCP
app/worker.ts - Worker router → SFU service: routes SFU
app/worker.ts - Room API → Room session: controls Room
app/src/room/server.ts - MCP tools → Room session: controls Room
app/src/mcp/server.ts - SFU service → Room session: controls Room
app/src/sfu/server.ts - Room session → Task scope: resolves Tasks
app/src/do/RoomSession.ts - Room session → Media effects: executes effects
app/src/do/RoomSession.ts - Agent → MCP tools: uses stateless API
README.md - Agent → Agent CLI: runs Runtime
README.md - Agent CLI → Room client: Room operations
- Agent → Agent runtime: joins Room
README.md - Agent runtime → Harness: uses Harness
README.md - Agent runtime → Runtime daemon: resident services
- Runtime daemon → Capability relay: handles capability requests
agent/internal/daemon/capability_controller.go - Capability relay → Local capabilities: delegates requests
agent/internal/daemon/capability_controller.go - Agent runtime → Agent media: manages media
- Agent media → Speech: uses speech
agent/internal/media/controller.go - Agent media → Voice output: uses voice
agent/internal/media/controller.go - Room API → Room Apps: validates App data
app/src/room/server.ts