๐ฆ Research
Source session:
amy-jun10-1631(thread1514275906170912769, 2026-06-10). This page is the seamless-continuation handoff: the next agent should be able to proceed without reading that conversation. Two parts: (A) Handoff โ exact state + finalized rename plan; (B) Research Charter โ the next sessionโs main job. Current-docs note (2026-06-19): this handoff was written during the earlier Hugo-docs phase. The current wiki is Quartz 5 at/home/usr/funday/ssot.funday.gg, built withnpx quartz build, and served fromssot.funday.gg/public.
๐ฏ Goal
Evolve the always-on ompโDiscord bridge toward 100% intuitive, responsive perfection. The product is being branded Ompcord (bot/persona stays Amy). Because the product is still early-stage, the next session must run exhaustive, multi-source research across the entire pi/omp/discord plugin & package ecosystem and publish a deep comparative report in these docs: what to learn or adapt from each.
๐งฑ Constraints & Preferences (established โ do not relitigate)
- ๐ฅ Real Discord UI only. When a live Discord session exists, NEVER post Markdown/code-box mockups of embeds. Send actual
embed + componentsvia~/pi-discord-amy/live-responsive-interview.mjs <thread-id>. - โฑ๏ธ Discord ACK โค 3s.
showModal()first for a modal;deferUpdate()/deferReply()first for any slow path. The handler process must stay alive or components render dead. - ๐ฅ Allow-list gates everything โ every inbound message, slash command, button, select, modal.
- ๐ NEVER paste a bot token in chat. Token lives only in env / systemd
EnvironmentFile, never source/commits/logs. - ๐งฐ Toolchain: Bun for dev/QA/tests (
bun.lockis SSOT); daemon deploys under Node (node amyd.mjstoday,node ompcordd.mjswrapper-supported). Only declared dep:discord.js@^14.26.4.typeboxis host-provided (do not vendor). - ๐ฅ๏ธ Emojified, compact, idiot-proof comments & docs โ high-level โidiot overstandingโ with
// ๐ why/what/howone-liners. - ๐ Current docs = Quartz wiki at
/home/usr/funday/ssot.funday.gg(content/* โ ssot.funday.gg). Build/verify withcd /home/usr/funday/ssot.funday.gg && npx quartz build. Older handoff notes below may mention Hugo as historical context. - โ
Every change ships with docs + tests and is verified with the relevant code checks plus
npx quartz buildfor wiki changes.
๐ฆ Progress
โ Done (this session + immediately prior)
- Responsive interview embed โ live-proven in the coms thread (message
1514313332268597429in thread1514275906170912769): embed fields, single/multi select, pagination buttons, busy buttons,Customโฆmodal, Confirm/Cancel, in-place edits. Docs:discord-responsive-interview; senderlive-responsive-interview.mjs; skilldiscord-live-responsive-interview. - SSOT embed dashboard โ
/amy status,/amy health,/amy cancel+ Refresh / Open Thread / Cancel(when busy) buttons (ACK viadeferUpdate()). Pure modulestatus.mjs(createRuntimeState/snapshotStatus/renderStatusEmbed/renderStatusComponents); streamedmessage_endmodel/provider/api + token/cache/cost usage when present; fallback stays explicitly unavailable. Docs:amy-ssot-dashboard. - Rocket-launch channels โ
launch.mjs(parseLaunchChannels/shouldPrimeLaunchMessage/shouldTriggerLaunch); ๐ react-to-run inAMY_LAUNCH_CHANNEL_IDS(default1513664007146438666); channel dashboard โ session thread โ mirrored progress; double-click race fixed (source-id reserved"pending"before awaits). Docs:amy-rocket-launch. - Session continuity (CLI โ Discord) โ every thread is an on-disk omp session at
~/.omp/amy-sessions/<threadId>/; resume with--session-dir โฆ -c. Docs:amy-session-continuity(deployed live). - Historical verification:
bun testโ 37 pass / 105 assertions; then-current docs build passed.
โ Resolved in the continuation session (2026-06-10)
- ๐ญ Ecosystem research report โ delivered:
agents/ompcord-ecosystem-learnings(weight 10), every charter target covered with the 5-point structure + prioritized early-stage wins; cross-linked from_index.md+ this page; then-current docs build passed; live (HTTP 200). - Redeploy
amydsafely โ alias/telemetry deploy moved pid3133087 โ 3136782; Phase 4 wrapper-runtime deploy dry-run foundamyd.mjsidle, thennode redeploy.mjsmoved pid3136782 โ 3429641and relaunched the same legacy entrypoint. Final process:/usr/bin/node amyd.mjs; final log:ONLINE as Amy#0305,registered 2 slash command(s): amy,ompcord,ready โ /amy, /ompcord, and thread chat are live. Interactive slash/button click remains human-gated (a bot cannot self-invoke its own slash commands); tests cover the logic. - Ompcord rename โ Phases 1โ4 โ naming callouts are consistent,
/ompcordaliases are live, the bridge page is nowagents/ompcord, and runtime wrapper-first cutover is shipped:ompcordd.mjs/ompcordd.serviceexist whileamyd.mjs,amyd.service, legacy config, and~/.omp/amy-sessionsremain compatible. - Docs link cleanup โ fixed every broken
/*link from the prior docs tree. Current wiki links are Quartz routes underssot.funday.gg/content. - Top early-stage wins #1โ#2 โ
/amy statusnow consumes realmessage_end.message.usage(input/output/cache/total/cost + model/provider/api) instead of hardcoding unavailable when JSONL provides it, andtool_execution_end.isErrormarks failed tools red in the live dashboard/runtime status. Covered bystream.test.mjs+status.test.mjs; verified withnode --checkandbun test(42 pass / 124 assertions). - Phase 4 verification โ
node --check amyd.mjs && node --check ompcordd.mjs && node --check config.mjs && node --check redeploy.mjs && node --check live-responsive-interview.mjs;bun testโ 48 pass / 141 assertions across 8 files; rendered link scan found no duplicate docs-path hrefs and no stale bridge routes.
โ Rename completion
- Ompcord rename Phase 5 โ package identity now matches product naming (
package.json.name+bun.lockworkspace name areompcord). Repo directory stayspi-discord-amyuntil a separate filesystem cutover can preserve local service paths and history.
๐งญ Key Decisions
-
Naming split โ โOmpcordโ product, โAmyโ persona. Users install/use Ompcord; Amy is the bot/persona Ompcord runs.
Layer Name Why Product / plugin ompcordShort, memorable, โomp + Discordโ. Bot / persona Amy Human-friendly runtime identity. Daemon ompcorddwrapper live;amydcompatProduct-aligned daemon name without breaking the deployed legacy entrypoint. Legacy compat pi-discord-remoteExisting config/command must not break abruptly. -
Phase the rename โ docs first, repo-directory last. Docs, command aliases, runtime wrapper, service wrapper, session/config compatibility, and package name now carry Ompcord; the physical repo path stays
pi-discord-amyuntil a separate filesystem cutover can preserve local service paths/history. -
Keep tool names
discord_ask_user_question/discord_send_imageโ they name capability, not product, and are an LLM-facing contract that skills/prompts depend on. Optionalompcord_*aliases only after tests prove identical contracts.
๐บ๏ธ Critical Context (paths, commands, IDs)
- Repo (โ Ompcord):
~/pi-discord-amy/โamyd.mjs(legacy daemon +startDaemon()),ompcordd.mjs(same-process wrapper),ompcordd.service,run.mjs(headless loop + JSONL parser +ASK_PROTOCOL),dashboard.mjs(evolving embed),slash.mjs(/amy+/ompcord),ask.mjs(askViaDashboard),status.mjs(SSOT),launch.mjs(rocket),live-responsive-interview.mjs,redeploy.mjs,config.mjs,helpers.mjs,index.mjs(Pi extension). Read~/pi-discord-amy/AGENTS.mdbefore editing. - Sessions: default remains
~/.omp/amy-sessions/<threadId>/*.jsonl;OMPCORD_SESSION_ROOTor an existing~/.omp/ompcord-sessionsis supported without stranding legacy threads. Continue any thread:omp --allow-home --cwd /home/usr --session-dir ~/.omp/amy-sessions/<threadId> -c. - Docs: current wiki source is
/home/usr/funday/ssot.funday.gg/content/*.md; build/validate withcd /home/usr/funday/ssot.funday.gg && npx quartz build. - Live IDs: guild
1496176276933972110ยท coms thread1514275906170912769(amy-jun10-1631) ยท launch channel1513664007146438666. - Verify trio:
node --check amyd.mjs ompcordd.mjs config.mjs redeploy.mjs slash.mjs status.mjsยทbun testยทnpx quartz buildfor wiki docs.
๐๏ธ Ompcord rename migration plan (finalized โ execute in order)
Each phase is independently shippable and reversible. Do not skip ahead; runtime risk rises with each phase.
| Phase | Scope | Actions | Risk |
|---|---|---|---|
| 1 | ๐ Docs + vocabulary | โ
Done: state โOmpcord = the bridge, Amy = the personaโ across ompcord.md, discord-responsive-interview.md, amy-ssot-dashboard.md, amy-rocket-launch.md, pi-discord-amy/AGENTS.md. | none |
| 2 | ๐ Command alias | โ
Done: Pi TUI /ompcord alongside legacy /pi-discord-remote; Discord /ompcord alongside persona /amy; old commands remain compat aliases. | low |
| 3 | ๐ Page rename | โ
Done: omp-pi-discord.md โ ompcord.md with a legacy alias for the old URL before the old file was removed. | low |
| 4 | โ๏ธ Runtime | โ
Done wrapper-first: ompcordd.mjs imports/starts amyd.mjsโs exported startDaemon() in-process; ompcordd.service reads legacy Amy env then Ompcord env; redeploy.mjs detects/relaunches either entrypoint; session root defaults to legacy but supports OMPCORD_SESSION_ROOT/existing ~/.omp/ompcord-sessions. | medium |
| 5 | ๐ฆ Package | โ
Done: package.json.name and bun.lock workspace name are ompcord; repo directory intentionally remains pi-discord-amy for service/path compatibility until a later filesystem cutover. | medium |
๐ญ Part B โ Ecosystem Research Charter (next sessionโs mission)
โ DELIVERED (session continuation, 2026-06-10): the report this charter commissioned is live at Ompcord โ Ecosystem Learnings โ every target below covered with the 5-point structure + a prioritized early-stage wins table. The charter remains here as the spec it was built against.
Mandate (verbatim intent): ultra-deep, holistic, perpetually-looping, obsessive research โ meticulously scanning ALL diverse sources EVERYWHERE โ until practical, genius, idiot-proof understanding of ALL OTHER relevant pi/omp/discord plugins & packages is achieved; then publish a deep comparative report in docs on what we can learn or adapt from each, given weโre still early-stage.
๐ฅ Deliverable
Create agents/ompcord-ecosystem-learnings.md (weight 10, cross-link from _index.md + this page). For each target below, one section answering exactly:
- What it is / does (1โ2 lines, grounded โ read the actual source).
- Key patterns & APIs worth knowing (hooks, tool registration, lifecycle, data flow, config).
- ๐ข Adopt / ๐ก Adapt / ๐ด Skip for Ompcord โ with the concrete reason.
- Effort & risk if adopted (S/M/L ยท low/med/high).
- Citation โ exact file path or URL read (no unsourced claims).
End with a prioritized โearly-stage winsโ table: top 5โ8 things to adopt now, ranked by value รท effort.
๐ฏ Target inventory (grounded โ versions observed locally)
Internal omp/pi packages (.bun/install/cache/@oh-my-pi/)
| Package | Ver | Why it matters to Ompcord |
|---|---|---|
pi-coding-agent | 15.10.7 | The omp CLI + extension API Ompcord plugs into. Read examples/extensions/* and examples/hooks/*. |
pi-agent-core | 15.10.7 | Agent loop, compaction, handoff prompts (src/compaction/prompts/handoff-document.md), plan-mode (src/plan-mode/plan-handoff.ts). |
pi-ai | 15.10.7 | Model/provider abstraction โ informs honest model/provider/usage reporting in the SSOT dashboard. |
pi-tui | 15.10.7 | TUI rendering primitives โ parity ideas for embed/component rendering. |
pi-mnemopi / pi-mnemosyne | 15.10.7 / 15.6.0 | Memory/recall โ could back Amy cross-session context. |
hashline | 15.10.7 | Structural edit format โ patterns for safe transforms. |
pi-utils / pi-natives | 15.10.x | Shared utilities / native bits. |
Installed omp plugins (~/.omp/plugins/package.json)
| Plugin | Ver | Learn / adapt angle |
|---|---|---|
@oh-my-pi/omp-stats | 15.10.10 | Usage/stats surfacing โ feed real numbers into /amy status & /amy health. |
@oh-my-pi/swarm-extension | 13.17.0 | Multi-agent swarm orchestration โ future โAmy delegates to sub-agentsโ mode. |
pi-langfuse | 1.4.3 (patched) | Observability/tracing โ run telemetry for Ompcord turns. |
pi-discord-remote | 0.2.4 | The published baseline (โeach session gets its own auto-created channelโ) that Ompcord forks/supersedes โ diff its UX vs threads/embeds. |
Discord libraries
| Package | Ver | Focus |
|---|---|---|
discord.js | 14.26.4 | Interaction lifecycle, components v2, modals, rate limits, partials/intents. |
discord-api-types | 0.38.48 | Canonical payload shapes / limits. |
@discordjs/* | โ | builders, rest, ws internals. |
External comparables (scan widely)
@earendil-works/pi-coding-agent0.78.0 โ an alternate pi coding-agent fork; compare its extension/handoff model (examples/extensions/handoff.ts).- Other LLM/agent Discord bridges on npm + GitHub (coding-agent-in-Discord, ChatGPT/Claude Discord bots, agent-ops dashboards).
- discord.js official guide patterns: interaction collectors, ephemeral flows, button/select/modal wizards, pagination.
- Adjacent chat-ops bridges (Slack/Matrix agent bots) for dashboard/approval UX ideas.
๐ Methodology โ the obsessive loop
flowchart LR A["Pick target"] --> B["Read real source<br/>cache ยท npm ยท GitHub ยท docs"] B --> C["Extract patterns/APIs"] C --> D["Adopt / Adapt / Skip<br/>+ effort/risk"] D --> E["Write section + citation"] E --> F{"More targets<br/>or open questions?"} F -- yes --> A F -- no --> G["Prioritized wins"]
- ๐ Prefer local source-of-truth first: read packages under
.bun/install/cache/...directly (theyโre on disk) before reaching for the web โ then corroborate with npm/GitHub/official docs. - ๐ Use
web_search+read <url>for npm pages, GitHub READMEs, discord.js guide; cite every external claim with a link. - ๐ง Delegate breadth with
tasksubagents (one per target cluster), keep synthesis/judgment in the lead context. READ-ONLY agents (explore/librarian) for source spelunking; lead writes the report. - โป๏ธ Loop until no open question materially reduces uncertainty โ then synthesize.
โ Acceptance criteria
-
agents/ompcord-ecosystem-learnings.mdexists, covers every target above, each with the 5-point structure + citation. - Prioritized โearly-stage winsโ table present and defensible (value รท effort).
- Cross-linked from
_index.mdand this page; page renders live. - Zero unsourced claims; zero Markdown-mockup hand-waving โ patterns grounded in real source/URLs.
๐ Related: Ompcord โ Always-on Discord Bridge ยท Responsive Interview Embed ยท SSOT Dashboard ยท Rocket Launch ยท Session Continuity.