🧠 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

  1. πŸ€– Create Application & Bot (Discord Developer Portal) β†’ Enable Message Content intent β†’ Reset Token (copy).
  2. πŸ”— Invite Link (Bot + applications.commands scopes, perms 326417632336): https://discord.com/api/oauth2/authorize?client_id=APP_ID&scope=bot%20applications.commands&permissions=326417632336
  3. 🏠 Home Channel: Set a text channel (e.g. #amy). Sessions run as threads inside it.
  4. βš™οΈ Config: Put Amy credentials in ~/.omp/.env (OMPCORD_DISCORD_BOT_TOKEN, guild, home channel, allow-list). Run node ~/pi-discord-amy/scripts/bootstrap-amy-env.mjs, then sudo systemctl enable --now amyd.service. See Deployment & always-on β€” never reuse DISCORD_BOT_TOKEN from ~/.hermes/.env (that is Hoe).
  5. πŸ’¬ Talk: Use /amy new to start a thread, /amy say to 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 health display gateway stats, active run metrics, and feature flags.
  • Interactive Toggles: Dropdown string select menus (amystatus:toggle_config) allow administrators to toggle reactions, toolResponses, autoStart, useThreads, and logDetail dynamically. Saved back to config.json instantly.

🎚️ Slash Commands (Guild-Scoped)

Use either /amy or /ompcord; both command names expose the same subcommands.

SubcommandAction
statusShows the SSOT status dashboard with interactive config toggles
healthShows 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
cancelCancels the active headless omp child process
stopArchives the current session thread
handoffCreates 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

Ask Docs

AI assistant to help answer questions about the documentation. Answers are read-only and cite docs/source.

Hi! How can I help you with the documentation today? Answers are read-only and cite docs/source.

Ctrl+Enter to send