π§ Ompcord
TL;DR π Ompcord keeps your Pi coding agent online in Discord. Amy is the bot persona. Each session runs in its own thread off a home channel; a single embed dashboard updates in place with live progress (todo checklists, status, steps) and relocates to stay βstickyβ at the bottom of the thread. Administrative config settings are modified live via dropdown select menus.
β‘ 60-Second Quick Start
- π€ Create Application & Bot (Discord Developer Portal) β Enable Message Content intent β Reset Token (copy).
- π Invite Link (Bot +
applications.commandsscopes, perms326417632336):https://discord.com/api/oauth2/authorize?client_id=APP_ID&scope=bot%20applications.commands&permissions=326417632336 - π Home Channel: Set a text channel (e.g.
#amy). Sessions run as threads inside it. - βοΈ Config: Put Amy credentials in
~/.omp/.env(OMPCORD_DISCORD_BOT_TOKEN, guild, home channel, allow-list). Runnode ~/pi-discord-amy/scripts/bootstrap-amy-env.mjs, thensudo systemctl enable --now amyd.service. See Deployment & always-on β never reuseDISCORD_BOT_TOKENfrom~/.hermes/.env(that is Hoe). - π¬ Talk: Use
/amy newto start a thread,/amy sayto prompt, or chat directly in session threads.
𧬠Core Architecture & UX Upgrades
π 1. Interactive Pinning
- Prompt Pinning: Choice prompts (
askViaDashboard) are automatically pinned to the thread header. - Auto Release: Unpinned immediately upon user response, skip, or timeout.
- Clean Logs: Auto-deletes Discordβs system pinning notice to prevent clutter.
π 2. Embed-Based Todo Checklists
- State Machine: Embed changes color based on agent mode (
idle: Green,processing: Blurple,asking/confirming: Yellow,failed: Red). - Inline Grid Routing: Completed/future phases are rendered as compact inline fields (
inline: true). The active phase is expanded as a checklist block (inline: false) for mobile readability. - Limit Defense: Auto-compresses and truncates long checklists to respect Discordβs 6000-character embed limit.
β€ 3. Sticky Dashboard (Leapfrog Relocation)
- Log Offset Check: When text/code logs push the dashboard up, the bot archives the old message (turns it neutral gray, removes buttons, updates footer) and spawns a fresh live dashboard at the bottom.
- Rate Limit Shield: Debounces relocation. Only repositions if at least 2 messages have been posted since the last dashboard update.
ποΈ 4. Unified Status & Config Control Panel
- Slash Diagnostics:
/amy status//amy healthdisplay gateway stats, active run metrics, and feature flags. - Interactive Toggles: Dropdown string select menus (
amystatus:toggle_config) allow administrators to togglereactions,toolResponses,autoStart,useThreads, andlogDetaildynamically. Saved back toconfig.jsoninstantly.
ποΈ Slash Commands (Guild-Scoped)
Use either /amy or /ompcord; both command names expose the same subcommands.
| Subcommand | Action |
|---|---|
status | Shows the SSOT status dashboard with interactive config toggles |
health | Shows the same health/status dashboard surface for diagnostics |
new [topic] | Opens a fresh session thread off the home channel |
say <prompt> | Sends a one-shot prompt to the active session thread |
cancel | Cancels the active headless omp child process |
stop | Archives the current session thread |
handoff | Creates a session handoff and opens a child thread from a session thread |
π§ Brainstorm: The Pagination Screen Pattern
To print massive code blocks/logs without message spam, we can convert messages into interactive screens using buttons:
ποΈ Component Design
- Nav Row:
[β Prev][ Page 1/N ][ Next βΆ] - SSOT Buffer: Instead of chunking into multiple new messages, Ompcord splits the output into pages ( chars each) and stores them in memory/session.
- In-Place Edit: Clicking
Next βΆedits the same message with the next chunk. - Timeout/Freeze: After the turn ends or after a 5-minute idle timeout, buttons are stripped to freeze the finalized page.
π Constants & Limits Reference
- π Permissions Int:
326417632336(View, Send, Embed Links, Attach Files, Add Reactions, Read History, Manage Channels, Create Public Threads, Send in Threads). - π Limits: Message chars Β· Select menu options Β· Component grid rows Β· Modal text fields Β· Embed description chars Β· Field value chars Β· Interaction ACK (then 15m to edit).
- π CLI Continuity: Resume Discord threads locally using:
omp --allow-home --cwd /home/usr --session-dir ~/.omp/amy-sessions/<thread-id> -c
Related Pages
- Flow Canvas (DRAFT placeholder) β aliases only; not flow SSOT until migrated
- Deployment & Always-On β Systemd services, environment variables, and daemon logs
- Embed Placeholders β Compact fields and limit defense templates
- Handoff β ecosystem research (historical)
- Responsive Interviews β UI and buttons for interactive prompt pinning
- Session Continuity β CLI resume commands and history tree continuity
- SSOT Status Dashboard β Status commands, health endpoints, and toggle configurations