Run and manage multi-agent coding sessions from Discord, backed by local projects on your machine.
Repository name:
workspacecord
CLI/package name:workspacecord
workspacecord maps Discord structures to local development workflows:
Discord Server
└─ Category = Project
├─ #history (Forum) = Archived Sessions
└─ #claude-fix-login = Main Agent Session
└─ [sub:codex] benchmark = Subagent Thread
- A
Categoryrepresents one mounted local project. - A
TextChannelrepresents a main agent session. - A
Threadrepresents a subagent. - The
#historyforum stores archived sessions.
- Explicit local project mounting with
workspacecord project init - Discord-side project binding with
/project setup - Main session channels and subagent threads
- Session archiving into
#history - Project-level personality, reusable skills, and MCP registry management
- Support for both Claude and Codex providers
monitormode with continued steering until task completion- Remote human approval / gate handling from Discord for managed sessions
- Managed local
Codexlaunch plus automatic local session discovery/sync - Global config storage without requiring a project-local
.env - Optional daemon install and background management
Node >= 22.6.0pnpm- A Discord application, bot token, client ID, and guild ID
- Config:
~/.config/workspacecord/config.json- Global configuration - Data:
~/.workspacecord/- Projects, sessions, and logs
pnpm install
pnpm build
pnpm link --globalAfter linking, you can use either the full command or the short alias:
workspacecord # Full command
wsc # Short aliasworkspacecord config setupOr set values directly:
workspacecord config set DISCORD_TOKEN <token>
workspacecord config set DISCORD_CLIENT_ID <client-id>
workspacecord config set DISCORD_GUILD_ID <guild-id>
workspacecord config set ALLOW_ALL_USERS trueRun inside your project directory:
workspacecord project init --name my-projectworkspacecordRun this in the text channel you want to use as the dedicated control channel for new sessions:
/project setup project:my-project
If successful, workspacecord creates or reuses the #history forum automatically and records the current channel as the control channel for /agent spawn.
Config Management:
workspacecord config setup # Interactive configuration wizard
workspacecord config get <key> # Read a configuration value
workspacecord config set <key> <value> # Write a configuration value
workspacecord config list # List all configuration values
workspacecord config path # Show the config file pathProject Management:
workspacecord project init [--name <name>] # Mount current directory as a project
workspacecord project list # List all mounted projects
workspacecord project info # Show current project info
workspacecord project rename <new-name> # Rename current project
workspacecord project remove # Unmount current projectDaemon Management:
workspacecord daemon install # Install as system daemon (auto-start on boot)
workspacecord daemon uninstall # Uninstall daemon (alias: remove)
workspacecord daemon status # Check daemon statusAdvanced:
workspacecord codex [options] # Launch managed Codex session with remote approvalNote: All commands support the short alias wsc. For example: wsc config list
/project setup— bind the current category to a mounted project and mark the current channel as the control channel/project info— inspect project binding details/agent spawn— create a main agent session channel from the project control channel/agent archive— archive the current session into#history/agent mode//agent goal//agent persona//agent model/subagent run— create a subagent thread under the current session/subagent list— list subagents for the current session/shell run//shell processes//shell kill
| Capability | Status | Entry Points |
|---|---|---|
| Global configuration | Stable | workspacecord config * |
| Explicit local project mounting | Stable | workspacecord project * |
| Discord category binding | Stable | /project setup, /project info |
| Project-level personality | Available | /project personality, /project personality-clear |
| Project-level reusable skills | Available | /project skill-add, /project skill-list, /project skill-run |
| Project-level MCP registry | Available | /project mcp-add, /project mcp-list, /project mcp-remove |
| Main agent sessions | Stable | /agent spawn, /agent list, /agent archive, /agent cleanup |
| Subagent threads | Stable | /subagent run, /subagent list |
| Session execution modes | Stable | /agent mode, /agent goal, /agent verbose |
| Remote human approval / gates | Available | interaction cards, monitor mode, Claude permission handling |
| Managed local Codex launch | Available | workspacecord codex |
| Local session discovery / sync | Available | hook / codex-log / sync recovery paths |
| Shell execution from Discord | Available | /shell run, /shell processes, /shell kill |
| History archive | Stable | #history, /agent archive |
| Daemon installation / background run | Available | workspacecord daemon * |
Current main runtime path:
bot.ts
-> BotEventRouter
-> command handlers / button handler / message handler
-> thread-manager façade
-> session-registry / session runtime / state machine / panel adapter
-> Discord delivery + status cards + summaries
This repository intentionally keeps Discord as the control plane, while local project state, provider sessions, approvals, and output rendering stay on the machine that runs workspacecord.
Run the standard verification flow:
pnpm typecheck
pnpm build
pnpm testAdditional scripts:
pnpm test:integration:smoke
pnpm test:multi-session:smoke
pnpm test:session-sync:smoke
pnpm test:monitor:e2e
pnpm test:acceptance:localSee also: docs/ACCEPTANCE.md
We welcome contributions! Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.
This project was inspired by:
- agentcord - Discord integration for AI agents
- clawd-on-desk - Claude desktop integration