Omo Research
Omo Space

Hermes pluginv0.1.0 release candidate

Omo Space for Hermes

Every Hermes profile gets a desk in your Omo Space world. A Hermes Board on the wall shows what each session is doing, and agents can send you a notice while you play.

Golden-hour light through a corner office window in Omo Space: a Hermes session fills the wall screen while a player reads along. Private lines are pixelated.
In gameA Hermes session on the wall of a corner office in Omo Space, mid-reply.

Where it stands. The plugin is a release candidate and its repository is not public yet. Desks, status lamps and the Board wall work with Omo Space today. Hermes activity on the Board and in-game notices come in the next Omo Space release (pull request #40).

At a glance

Three things it adds

A library room in Omo Space: omo.sh on a big web wall, a Hermes terminal and its Omo Computer on the opposite wall
In gameAn Omo Space room: a Hermes terminal on one wall, a web page on the other. Terminal text pixelated.

A desk for every profile

hermes omo world reads your profiles and builds Hermes HQ, a cavern hall with an Omo Computer for each profile and its name on a plate.

The Hermes Board: workspace cards showing each agent's state (running terminal 12s, thinking, idle 3 turns) and an Elsewhere row with a Telegram chat, a cron job and a subagent
Board previewThe Board from the next Omo Space release (PR #40), with sample data. Status only: what each agent is doing, never what it says.

One board for every session

CLI, Telegram, cron jobs, subagents: what each agent is doing right now, on a wall in the hall. Status only, never what you said.

Notices while you play

An agent sends you a short note with omo_notify. It shows in the corner of your screen for a few seconds.

Setup

Four steps

For people who already run Hermes (0.22.3 or newer). The plugin asks before it changes anything.

  1. Install Omo Space and open a world once

    Use the Omo Space app, which sets up Minecraft, the mods and the bridge for you. Omo Space install steps

    Or, with CurseForge, the Modrinth App or Prism: add the Omo Space mod to an instance, then install only the bridge

    bash install.sh --bridge-only omo-space-1.3.0-linux-x64.tar.gz

    New in Omo Space v1.3 (Linux and macOS); downloads and checksums are in the Omo Space install guide. It links every instance that has the mod; for one you add later, run omo-space-link --game-dir "<instance folder>".

  2. Add the plugin to Hermes

    Coming soon One line, once the repository is public:

    hermes plugins install omoresearch/hermes-omo-space --enable

    Today, if you have the plugin folder

    cp -r omo-space ~/.hermes/plugins/omo-space
    hermes plugins enable omo-space

    For another profile: ~/.hermes/profiles/<profile>/plugins/ and hermes -p <profile> plugins enable omo-space.

  3. Run the checklist

    hermes omo setup

    It finds your Omo bridge, shows which profiles have the plugin on and prints the exact commands for the rest. --enable-all runs them after one y/N prompt.

  4. Optional: build Hermes HQ in your world

    Terminal

    hermes omo world --install "Omo World"

    In game, standing in an open, flat area

    /reload
    /function hermes_hq:build

    Then right-click each desk once to open it. /function hermes_hq:preview first shows the outline. A world in a CurseForge or Modrinth instance: add --saves-dir "<instance folder>/saves".

That's it. Chat with Hermes anywhere: the CLI, Telegram, a desk in the world.

In the world

What you'll see

works with Omo Space todaynext Omo Space release

An Omo Computer's start screen: the omo.sh mark in gold, OMO SPACE, the workspace name and a connecting pill
Station screenWhat an Omo Computer shows while it connects (next release, rendered from the mod's own code).

Omo Computer desks

One per profile, its name on a plate. Opening a desk starts Hermes in that profile, and the work keeps running when you walk away.

Status lamps

A desk's lamp glows gold while its agent works and green when it is idle, so you can see from across the hall who is busy.

A title card on every screen

Before a desk connects, its screen shows the Omo Space title card with the omo.sh mark and what it is doing: connecting, offline, ended.

The Hermes Board with 36 workspaces in compact cards, each showing its agents' states, and an Elsewhere row underneath
Board previewNext release (PR #40). With many desks the Board switches to compact cards. Sample data.

The Hermes Board

Every desk says what its agent is doing: thinking, running terminal 12s, idle · 14 turns. Past 24 live desks it switches to small cards, so one wall still shows them all.

The Board's Elsewhere row: a Telegram chat thinking, a cron job thinking, and a subagent idle after 6 turns
Board previewAgents outside the world: Telegram, cron, subagents. Sample data.

Elsewhere

Sessions with no desk are listed with where they run: a Telegram chat, a cron job, a plain terminal, a subagent.

Notices

When an agent calls omo_notify, a card shows top left for about five seconds, the profile name in gold, up to three at once. Only on your own screen, and only when no screen is open in game.

/omonotices off
hide them, e.g. on stream
/omonotices on
bring them back
/omonotices test
show one now

For your agents

Your agents know where they are

omo_status
A read-only tool: is Omo Space running, what is on the Board, and which desk this conversation is at.
omo_notify
Sends you a short notice: {text, level?} with level info, success or warn. At most 140 characters; anything that looks like a secret is masked.
/omo
A slash command for you: one paragraph on where this chat is in the world.

Both tools are in the toolset omo. Turn on notify_on_finish and the plugin also sends a notice when a turn that took more than a minute ends.

Privacy

What it never does

Nothing leaves your computer. The plugin keeps a small activity log that your own Omo Space reads.

Reference

Details, when you need them

Real output from a test profile

Captured on our machine on 2 November 2026 in a throwaway profile, omo-plugin-test. Home paths are shortened to ~, the profile list is trimmed, session ids are shortened and long lines are wrapped.

hermes omo status The doctor. This machine still runs an older bridge, and it says so.

$ hermes omo status
Omo Space doctor (profile: omo-plugin-test)
  bridge      reachable at http://127.0.0.1:8781 (Omo bridge v1.1.0, 112 workspaces, 81 live)
  feed        enabled, writing to ~/.hermes/profiles/omo-plugin-test/plugin-data/agent-plugin-omo-space-d135e42c/feed
  marker      omo-feed.json present (plugin 0.1.0)
  last event  19h ago (session_end)
  profiles    omo-plugin-test
Next step: Your Omo bridge (v1.1.0) predates Hermes feed support: desks, lamps and the Board
wall work, but the Board shows no Hermes activity and no HUD notices arrive, although this
profile's feed is written. Those need the bridge from omoresearch/omo-space PR #40, coming in
the next Omo Space release; update Omo Space then and check again.

hermes omo setup

$ hermes omo setup --non-interactive
Omo Space setup (profile: omo-plugin-test)
  [ok] Omo Space data dir ~/.local/share/omo
  [ok] Omo bridge yours at http://127.0.0.1:8781 (v1.1.0, found via service file)
  [--] this bridge does not read Hermes feeds yet: desks and the Board wall work; Board
       activity and HUD notices need the bridge from omoresearch/omo-space PR #40, coming
       in the next Omo Space release
  [ok] this profile's bridge_url resolves to http://127.0.0.1:8781
  [ok] 1 of 50 Hermes profiles have omo-space enabled
         default                    not installed
         01-branding-submission     not installed
         … 47 more profiles …
         omo-plugin-test            enabled  (feed seen)
  [!!] worlds in ~/.local/share/omo/runtime/game/saves: Omo Workshop, Omo World
Next steps (copy and run; `hermes omo setup --enable-all` runs the enable commands after a prompt):
  1. hermes -p default plugins install https://github.com/omoresearch/hermes-omo-space --enable
  …
  8. hermes omo world --install "<World>"
  9. then in game: /reload, /function hermes_hq:preview, /function hermes_hq:build, and
     right-click each desk once to open it

hermes omo world --dry-run

$ hermes omo world --dry-run --profiles default,lf-01-ideas,yt-03-editing,omo-plugin-test
Board wall -> http://127.0.0.1:8781/board (this profile's bridge_url; override with --bridge-port)
Hermes root: ~/.hermes
4 profiles:
  default
      model claude-opus-5-5 | 87 skills | 0 cron jobs | platforms photon | 0 plugins
  lf-01-ideas - Long-form room 01: turns the user's streams and recordings…
      model claude-opus-5-5 | 82 skills | 1 cron jobs | platforms - | 1 plugins
  omo-plugin-test - Throwaway test profile for the omo-space plugin (safe to de…
      model claude-opus-5-5 | 85 skills | 0 cron jobs | platforms - | 2 plugins
  yt-03-editing - YT room 03: goal-mode edits each long-form video exactly to…
      model claude-opus-5-5 | 62 skills | 0 cron jobs | platforms - | 1 plugins
Hermes HQ: 4 desks in 1 themed bay round a cavern garden [agents (4)], hall 49 x 25 x 61
(W x H x D) toward +Z; Board wall -> http://127.0.0.1:8781/board

hermes omo feed Everything the plugin records. The quoted text is the one exception, a message the agent chose to send.

$ hermes omo feed -n 8
18:46:36  omo-plugin-test local-e80c… tool_end         tool=tool_describe duration_ms=26 ok=True
18:46:38  omo-plugin-test local-e80c… tool_start       tool=omo_status
18:46:38  omo-plugin-test local-e80c… tool_end         tool=omo_status duration_ms=145 ok=True
18:46:40  omo-plugin-test local-e80c… tool_start       tool=omo_notify
18:46:40  omo-plugin-test local-e80c… notify           level=success "Hermes HQ e2e: terminal step done"
18:46:40  omo-plugin-test local-e80c… tool_end         tool=omo_notify duration_ms=25 ok=True
18:46:41  omo-plugin-test local-e80c… turn_end         duration_ms=28371 ok=True interrupted=False
18:46:42  omo-plugin-test local-e80c… session_end      interrupted=False
CLI reference
hermes omo setup [--enable-all] [--non-interactive] [--json]
The guided checklist. Without a terminal (cron, gateway, CI) it only prints the checklist and exits 0.
hermes omo status [--json]
A doctor: the bridge on the configured URL, the feed folder, the age of the last event, which profiles have a feed, and one next step.
hermes omo feed [-n N] [--json] [--follow]
Print or follow this profile's feed.
hermes omo world [--install [WORLD] | --out DIR | --zip] [--list-worlds] [--dry-run]
Generate the Hermes HQ datapack. --install writes only <world>/datapacks/hermes_hq/ and needs --force to replace it; --saves-dir points it at another launcher's saves folder. --profiles, --exclude and --max-desks (48 by default) choose the desks; --bridge-port sets the Board wall's port.
/function hermes_hq:info · /function hermes_hq:clear
In game: list the desks, or remove the hall again (the floor stays).
Settings

Plugin settings live in plugins.entries.omo-space.settings and are read live: no restart needed.

feed on by default
Write the activity feed.
bridge_url empty by default
Loopback only. Empty means http://127.0.0.1:$OMO_PORT, or port 8780.
notify_on_finish off by default
Send a notice when a turn that took more than 60 seconds ends.
hermes config set plugins.entries.omo-space.settings.notify_on_finish true

On the Omo Space side (next release): OMO_BOARD_MESSAGES=1 in the bridge service's environment puts notice text on the Board; hermesNotices=false in config/omolife-client.properties turns notices off for good.

Troubleshooting
A desk says "Waiting for the world owner"
Since Omo Space v1.3 a desk opens only after you use it. Right-click it (or its wall) once.
The Board shows no Hermes activity, but hermes omo feed has events
Your Omo bridge predates Hermes feed support; hermes omo status says so. That support comes in the next Omo Space release.
The Board shows nothing and the feed is empty
The plugin is not enabled in that profile (hermes omo setup lists them), or feed is set to false.
Activity on the Board, but no messages
As intended: notice text stays off the wall unless the bridge runs with OMO_BOARD_MESSAGES=1.
No notices in game
Type /omonotices on; /omonotices test shows one. Notices only draw when no screen is open, and need the next Omo Space release.
hermes omo status says the bridge is not yours
On a shared machine port 8780 can be another user's bridge. hermes omo setup finds yours, or set bridge_url to http://127.0.0.1:<port>.
Changes don't show up after updating the plugin
A running gateway keeps the plugin it loaded. In each profile run hermes plugins disable omo-space, then hermes plugins enable omo-space.
world --install says the datapack already exists
Add --force; only <world>/datapacks/hermes_hq/ is replaced. Then /reload in game.
Requirements and status
  • Hermes Agent 0.22.3 or newer, the first release with every hook the plugin uses. Checked with hermes plugins validate and hermes plugins doctor on 0.22.5.
  • Omo Space. Desks, lamps and the Board wall work today. The CurseForge/Modrinth path (--bridge-only, omo-space-link) and the two-block creative menu (Omo Computer, Omo Monitor) are Omo Space v1.3; the current download on GitHub is v1.2.0. Tested on Linux; the plugin itself is stdlib-only Python 3.11+.
  • Next Omo Space release: Hermes activity on the Board, Elsewhere, notices and the title card are in open pull requests (#40, #41), not released yet. The plugin's test suite reads its own feed with #40's reader.
  • v0.1.0, release candidate. The repository is not public yet and a Hermes plugin catalog listing is pending. A community plugin by Omo Research, MIT licensed.