omp packages

@bloodf/oh-my-agent1.7.0

OMP plugin for autonomous long-lived multi-agent collaboration

bloodf Published 28 days ago MIT ~278 downloads/mo

Built for omp

The author tagged this package oh-my-pi.

Did it work for you?

Result

One report per person. A new report replaces your old one.

Reports 0

No reports yet.

Readme

oh-my-agent conversation mark in sky blue on an aubergine tile

oh-my-agent: a conversation workspace for OMP agents, channels, and chats

CI License: MIT Bun greater than or equal to 1.3.14 npm package @bloodf/oh-my-agent

An oh-my-pi (OMP) plugin that runs autonomous, long-lived agents as a local daemon. Agents keep working after the TUI closes, talk to each other in persistent rooms, and stay observable from the OMP TUI, the omp-agent CLI, or a browser console.

Current oh-my-agent web workspace with channels, direct messages, persistent thread links, and message composer

Why it exists

OMP task agents live inside the interactive session. Close the TUI, they die. oh-my-agent is the process that does not: a local Bun daemon owns workers, rooms, and schedules, and the TUI, CLI, and browser are clients of that daemon. There is no cloud component and no multi-tenant user model. One operator, one daemon, on your machine.

Features

Autonomy. The daemon detaches from the TTY, so closing the terminal does not stop running agents. Collaboration. Agents talk in persistent SQLite-backed channels and DMs, and a mention or wake filter resumes a parked peer. Hierarchy. Agents can author and deploy child agents, with parentage enforced rather than taken from cooperative metadata.
Artifacts. Any peer can hand you a plan, comparison, or report as a page: it opens the HTML in Lavish Editor, you annotate it from the console's Artifacts view, and the peer polls for your feedback. Scheduling. Cron expressions and one-shot timers persist in SQLite and post into rooms, which may wake subscribers. Quota handling. Metered accounts warn at 80% of budgetUsd and park at 100%; a human resumes with omp-agent bump. Subscription accounts park on quota-exhaustion and auto-resume at reset. Isolation. Each worker gets a private root of allowed definitions; the OS sandbox is opt-in and fails closed, and workspace: is a cwd, not a security boundary.

Current agent collaboration view with a focused message thread alongside its channel conversation

Quick start

Needs Bun ≥ 1.3.14 and OMP (@oh-my-pi/pi-coding-agent ≥ 18.1.0).

omp install @bloodf/oh-my-agent
omp

Run /setup inside omp for a ✓/✗ checklist of what a working install needs, with the fix on every ✗ line; ask the OMP assistant for help and it loads the shipped oh-my-agent-setup skill. The TUI starts the daemon on session start. Widget shows running/parked counts in your OMP theme. /manage opens the manager; every surface is a slash command, and the plugin binds no keys. /cli status runs the shell verb with no PATH. /console opens a menu: Open web UI, Copy URL, or Show URL. /cli console prints the loopback URL explicitly.

Choose Open web UI to open the browser console. Show URL deliberately reveals its operator token; Copy URL copies it without printing it.

Shell CLI is optional. Full path, no export:

~/.omp/plugins/node_modules/.bin/omp-agent status

This install path is the one CI runs against a packed tarball in tests/consumer-install.test.ts.

A default crew ships with the package and starts on the daemon's first boot: mate, the first mate you talk to, plus staff-pm, staff-backend, staff-frontend, and staff-qa, each in its own room and a shared #team. They run on whatever model you have picked as OMP's default (/model), so nothing needs configuring first. Talk to the mate:

/rooms post #bridge @mate add dark mode and fix the flaky login test

It picks the shape (ship a change, or scout and report), briefs the owner, waits on the rooms, checks the evidence, and reports in #bridge. Ten more roles ship as presets that are never seeded: researcher, reviewer, security-reviewer, tech-writer, sre, debugger, test-engineer, designer, release-manager, data-analyst. /preset copies one under your own name; so do omp-agent agent create <name> --preset <preset> and the console's create dialog. The mate hires from the same library when a request needs a role the staff do not cover.

Pick a different model per peer with /edit <name> → Model, which lists every model your credentials can reach, or with the console's agent form. omp-agent models prints the same list. Delete a default peer's file from ~/.omp/agent/oh-my-agent/agents/ and it stays gone; edit it and your edit is kept.

To write your own, follow the hosted getting-started guide, then:

/cli agent create researcher researcher.md
/spawn researcher

Definitions use markdown with YAML frontmatter, the same shape as OMP task agents. model is optional: a fully qualified provider/id when set, the OMP default otherwise.

How it works

The TUI and CLI speak JSON-RPC over a per-profile unix socket. The browser speaks token-gated loopback HTTP and WebSocket. All three hit the same daemon, which owns workers, rooms, schedules, and SQLite.

oh-my-agent runtime

The daemon binds loopback only, in every mode. Going beyond loopback is a proxy in front plus an explicit remote mode. Read remote exposure before exposing anything.

Website and demo

website/ holds the project site and a console demo: the real console from web/, running against a daemon mocked inside the browser, so it needs no install and no daemon. Run it locally:

bun install --cwd web --frozen-lockfile
bun install --cwd website --frozen-lockfile
bun run --cwd website dev    # http://localhost:3300, demo at /console

Details, including the mock and its smoke check, are in website/README.md.

Documentation

Audience Start here
Newcomers Getting started
Operators CLI, web console
Developers Developer guide, CONTRIBUTING.md
Architecture ARCHITECTURE.md
Decisions ADRs
Security SECURITY.md, remote exposure

Community files: SUPPORT.md, GOVERNANCE.md, CODE_OF_CONDUCT.md. Brand assets: assets.

Newcomers

Who this is for. People already using OMP who want agents that outlive a TUI session. Operators who want rooms, schedules, and a browser console on a local daemon. Contributors who will treat claims as things that need tests.

What you need. Bun ≥ 1.3.14, OMP with @oh-my-pi/pi-coding-agent ≥ 18.1.0, and a provider account the daemon can meter. This is a single-operator local plugin. It is not a hosted service and it is not multi-tenant.

First win. Install the plugin, open omp, confirm the widget, paste the researcher definition from the getting-started guide, create it, spawn it, and post in #research. If that loop works, the rest of the operator surface is the same daemon.

Want to help develop it

  1. Setup. Clone, bun install --frozen-lockfile, bun install --cwd web --frozen-lockfile, bun run typecheck.
  2. Tests. bun test for the full suite. bun run test:fast skips pack, consumer-install, and console-client while you iterate.
  3. Read. ARCHITECTURE.md, then CONTRIBUTING.md.
  4. Pick work. Nothing is Ready. Remaining work is Blocked: T-1202, T-1205, T-1403, T-1503. File a bug, or add a task in scripts/gen-delivery-docs.py.

Two rules up front:

  • docs/delivery/ is generated. Author in scripts/gen-delivery-docs.py and run bun run docs. Do not hand-edit the tree.
  • Every new test needs a non-vacuity proof. Revert the production line it covers, watch that test fail, restore it. A test that cannot fail is not evidence.

Status

Runtime, TUI, CLI, and browser console ship in the npm package @bloodf/oh-my-agent. See CHANGELOG.md for the current release and its fixes.

Known limitations:

  • Public ACME issuance in remote exposure is UNVERIFIED. All three proxy recipes were run end to end, but the Caddy and SSH-tunnel runs used an internal CA, so public ACME issuance and renewal remain unproven.

Security

The daemon binds 127.0.0.1 only. Remote mode requires an explicit origin, an operator token, one-time tickets for assets and WebSocket upgrades, and enforced parentage. One operator per daemon: the operator token is not a per-user credential.

Do not open a public issue for a vulnerability. Use GitHub's private reporting: Report a vulnerability. Details in SECURITY.md.

License

MIT. Decision record: ADR-010.