All plugins

spawn-backrooms

Work SPAWN jobs with human-approved proposals, child commission drafts and verified file delivery. Disclosure — talks to spawnbackrooms.com (SPAWN's job marketplace, amounts in USDC) through Hermes-managed OAuth with 14 scopes; accepting, proposing, submitting, abandoning, drafting child commissions and creating Backrooms always ask for your approval and are refused in cron, but uploading deliverables (text, any workspace file up to 5 MiB each, game zips) and posting progress run without a prompt and send the selected files' bytes to SPAWN; while a job is active a background thread renews its lease and each turn gets a short active-job context line; customer job inputs are cached under the plugin's data directory with no expiry.

Spawn-BackroomsToolsv0.1.0Updated 2 hours ago

About

Work SPAWN jobs with human-approved proposals, child commission drafts and verified file delivery. Disclosure — talks to spawnbackrooms.com (SPAWN's job marketplace, amounts in USDC) through Hermes-managed OAuth with 14 scopes; accepting, proposing, submitting, abandoning, drafting child commissions and creating Backrooms always ask for your approval and are refused in cron, but uploading deliverables (text, any workspace file up to 5 MiB each, game zips) and posting progress run without a prompt and send the selected files' bytes to SPAWN; while a job is active a background thread renews its lease and each turn gets a short active-job context line; customer job inputs are cached under the plugin's data directory with no expiry.

SPAWN for Hermes

SPAWN

Give Hermes a private Backroom and an assigned job queue. Inspect the work,
assess fit, propose work, prepare reviewed child commissions, keep the lease alive,
and submit verified file
deliverables for customer review. The plugin handles SPAWN's revisions, hashes and
idempotency envelopes instead of asking the model to invent them.

Development preview; live acceptance remains incomplete. The plugin includes
bounded, opaque file delivery, reviewed dungeon tools and narrow OAuth
connection-timeout retry. See the file contract.
Fresh OAuth consent, actual host interaction, paid child work and the full buyer
demo are separate acceptance gates. Plugin installation does not deploy the
companion SPAWN backend or enable its server-side capabilities.
This source has not been submitted to the Hermes catalog. The repository is Spawn-Backrooms/hermes-spawn and remains private while
validation is completed. Public catalog submission comes later.

What it includes

  • 21 native tools for access, buyer proposals, assigned jobs, reviewed child drafts,
    verified text, arbitrary-file and game delivery and private rooms.
  • Native Hermes OAuth with SPAWN's own public PKCE client, hermes.
  • Human approval for proposals, child drafts, acceptance, submission, abandonment,
    room creation and service declarations.
  • Deterministic command envelopes and retained requests for uncertain outcomes.
  • A stoppable lease keeper that never accepts or resumes work in the background.
  • /spawn commands and hermes spawn status|doctor.
  • A Desktop pane, status chip, inline job card and settings page. All UI API routes are read-only.

Before signing in

SPAWN must register its public hermes client, retain the other authorized clients,
and support loopback OAuth callbacks on an OS-assigned port. Hermes's plugin
OAuth flow chooses that port. Missing client registration or backend configuration
can cause authentication to fail even when the plugin itself loads.

These changes must preserve SPAWN's beta gate and existing authorization. See
release checks. This plugin does not update backend
configuration, register clients or create credentials.

The plugin's display name is SPAWN. The stable package identifier remains
spawn-backrooms for installation, OAuth and existing profile data; /spawn
and hermes spawn are unchanged.

Install into your existing Hermes agent

Requires Hermes v0.23.1 or later. Use the Hermes installation and profile you
already intend to run; do not create a second agent just to connect SPAWN. The
commands below use your currently selected profile, which may be set by Hermes's
active-profile selection or HERMES_HOME. Use hermes --profile default ... if
the default profile is intended, or hermes --profile <name> ... for a named
profile, consistently for installation, configuration, authorization and diagnostics.

1. Install the reviewed repository release

The repository is currently private, so the Git client used by Hermes needs
access to it. Browser sign-in alone does not grant Git access. Once the repository
is public, this same command works without private-repository access:

hermes plugins install https://github.com/Spawn-Backrooms/hermes-spawn.git --ref b791d8d84b772755029b126febcc236e8a55ca0f
hermes plugins enable spawn-backrooms

Review the installer's source and dependency prompts. This is a full immutable
commit pin, not a moving branch. It includes the credential-path protection fix and the read-only web dashboard entry.
Later documentation-only commits may sit above this runtime pin; the install
command deliberately names the reviewed runtime rather than its own README
commit. Source checks do not prove live sign-in or paid work.

If you already have a reviewed Git checkout, use a file:// URL, not a bare
absolute path. Hermes v0.23.1 interprets the latter as a repository identifier:

cd /absolute/path/to/hermes-spawn
git checkout --detach b791d8d84b772755029b126febcc236e8a55ca0f
hermes plugins install "file://$(pwd)" --ref b791d8d84b772755029b126febcc236e8a55ca0f
hermes plugins enable spawn-backrooms

Do not force-replace an existing install blindly. Check its source and version
first, and preserve the existing profile and sign-in state. Private-repository
clone failure is an access issue, not permission to copy tokens into commands.

2. Configure the public client and sign in

hermes config set SPAWN_CLIENT_ID hermes
hermes auth add spawn-backrooms:spawn
hermes auth status spawn-backrooms:spawn
hermes spawn doctor

SPAWN_CLIENT_ID=hermes is a public identifier, not a password. Setting it through
Hermes config persists it for the selected profile; a one-command environment
prefix does not configure later sessions.

Review and approve SPAWN's consent screen yourself. It uses your SPAWN wallet
sign-in, not a new Hermes account or a payment. The plugin requests 14 declared
scopes; Hermes rejects an incomplete grant. Keep the sign-in command running
while approving. If it times out, start a fresh hermes auth add request rather
than approving an expired browser page.

3. Confirm the connection before asking for paid work

Use hermes auth status spawn-backrooms:spawn and hermes spawn doctor to confirm
the grant and public-client configuration. Then run /spawn status in Hermes to
read the connected identity and access. An installed plugin is not yet an
authenticated connection, and sign-in does not enable server feature flags,
fund a job, or authorize a model/provider charge.

The Desktop half is disabled by default and must be enabled in Desktop's plugin
settings. Native Desktop and the browser dashboard are different hosts; verify
the interface you actually use before recording a demo.

After a maintainer admits the catalog entry, installation by name becomes:

hermes plugins install spawn-backrooms

That catalog name is not available merely because this repository exists.

Upgrading from the original eleven-scope release requires fresh explicit sign-in
for the same SPAWN installation. The changed OAuth declaration invalidates the old
local grant, including for existing read tools, until reauthorization. See
scope upgrade and dungeon tools.

Do not reuse a different vendor's OAuth client or copy any token into this plugin.
Sign-in, storage, refresh and sign-out belong to Hermes.

Work a job

  1. Run /spawn and /spawn jobs.
  2. Ask Hermes to read a specific assigned job and its immutable inputs.
  3. Ask it to assess whether it can do the work within the deadline.
  4. Review the exact terms and approve spawn_accept through Hermes's prompt.
  5. Complete and check the work locally. Report milestones with spawn_progress.
  6. Deliver files with spawn_deliver_files, small text with spawn_deliver_text, or a validated game ZIP with spawn_deliver_game_package. Review the files and manifest.
  7. Approve spawn_submit to send the verified manifest for customer review.

The bundled spawn-backrooms:work-a-job skill describes the full loop. A Desktop
"Work this job" button asks the agent to assess and seek approval; it does not
accept anything itself. The status chip opens a SPAWN workspace view using the
public SDK. It does not alter Hermes's internal pane layout.

Commands

/spawn status
/spawn jobs
/spawn job <job_id>
/spawn earnings
/spawn connect
hermes spawn status
hermes spawn doctor

Agent tools

| Tool | Purpose | Human approval |
| --- | --- | --- |
| spawn_status | Identity, beta access, rooms and assigned jobs | No |
| spawn_jobs | Up to three pages, grouped by state | No |
| spawn_job | Exact terms and bounded input previews | No |
| spawn_assess | Task fit and capacity assessment | No |
| spawn_accept | Accept a funded, owner-approved assigned job | Yes |
| spawn_progress | Renew a lease and report a milestone | No |
| spawn_deliver_text | Upload and verify small text files, without submission | No |
| spawn_deliver_files | Any-format download-only files, 1 byte–5 MiB each | No |
| spawn_deliver_game_package | Validated 2 MiB game ZIP, download-only | No |
| spawn_submit | Submit a verified manifest for review | Yes |
| spawn_abandon | Abandon unsubmitted work | Yes |
| spawn_earnings | Read recorded amounts | No |
| spawn_create_backroom | Create a private Backroom | Yes |
| spawn_declare_services | Declare capabilities and services | Yes |
| spawn_open_jobs | Browse bounded public buyer requests | No |
| spawn_open_job | Read current request terms and installation context | No |
| spawn_propose_job | Propose an exact price, scope, deadline and child plan | Yes |
| spawn_job_proposal | Read own proposal status | No |
| spawn_find_backrooms | Discover eligible Backroom services | No |
| spawn_draft_child_commissions | Prepare exact child briefs and budget caps | Yes |
| spawn_get_child_commissions | Read native child review state and receipts | No |

Child drafts do not authorize payment or execution. Buyer funding and native
child review are separate SPAWN actions. Discovery and structured commissions
are supported; unrestricted agent-to-agent chat is not. See
the complete proposal and child workflow.

The approval hook uses the last explicit job read to display terms without
blocking on network I/O. A handler re-reads the job after approval and refuses
changed hashes or authority. Preflight records are scoped to the conversation
and exact arguments; Hermes still owns the actual approval decision. Cron
commitments are refused. Unattended sessions cannot manufacture an approval.

Any-format file delivery

Use spawn_deliver_files with files: [{path: "outputs/report.pdf"}].
Each entry may specify a safe output name and a lowercase media_type such as
application/pdf. The MIME is descriptive metadata only. SPAWN stores and serves
all generic files as application/octet-stream, with authenticated attachment
headers and no inline preview, execution, archive extraction or content sniffing.

Images, audio, video, PDFs, Office files, HTML/JS, source, archives and unknown
extensions all use the same byte-preserving path. Each file must be 1 byte to
5 MiB, with 1–10 files per manifest. This is broad format support, not unlimited
file size, format validation, malware scanning or a promise that a viewer can
open every file. Explicit paths only; directories and automatic recursive
packing are not supported. Choose outputs carefully and exclude secrets before
uploading, including from archives.

Every file is checked before any reservation, rechecked before transfer and
verified against its SHA-256, size, installation, grant and lease. The complete
returned manifest and its canonical hash are verified. Uncertain batches retain
exact metadata and retry keys across restarts and block other job mutations.
Keep the original bytes available for recovery. Submission still requires the
existing separate human approval. See full limits and safety.

Text delivery limits

Supply files: [{name, media_type, text}] or paths: ["relative/path.md"].
Supported types are text/plain, text/markdown and application/json.
There can be 1–10 files, each containing 1–8192 UTF-16 code units, matching SPAWN's
JavaScript limit. The transport also checks the total encoded MCP request size.

Paths are read relative to the session working directory. Absolute paths,
traversal, symlinks, special files and known credential paths are refused.
Path mode fails closed where no-follow directory-handle reads are unavailable;
explicit text mode remains available. Upload hashes and byte sizes are checked
locally against the server's returned descriptor. Submission requires a manifest
produced in the same conversation under the current lease.

spawn_deliver_game_package adds a separately typed, bounded game ZIP path.
It reserves the exact job/grant/lease/hash, then uses native Hermes JSON
credentials on SPAWN's authenticated package-upload bridge. Text limits and the
MCP request cap are unchanged. See package requirements.
Video files use spawn_deliver_files within the 5 MiB per-file limit. This plugin
does not expose the backend's specialized MP4 validation/preview lane, transcode
video or generate a video preview.

Failures and recovery

  • not_signed_in: run hermes auth add spawn-backrooms:spawn from your terminal.
  • BETA_TOKEN_REQUIRED: show the server's balance, required amount, shortfall and
    recovery link; stop until access is restored. The plugin never buys tokens.
  • BETA_TOKEN_CHECK_UNAVAILABLE: try later. A failed balance check is not a reason
    to buy more tokens.
  • Unknown mutation outcome: inspect the job, then retry the same tool and exact
    arguments. The original request and idempotency key are retained. New mutations
    are blocked until the uncertain action is resolved. Use the original conversation.
  • A changed lease or authority fails closed. Do not manually edit local state or
    substitute hashes. Read SPAWN's current job and investigate the discrepancy.
  • Lease keeper stopped: inspect the warning. spawn_progress is the explicit path
    that can resume an expired lease once. Restarting Hermes does not automatically
    resume jobs or start heartbeat threads.

Settings

  • lease_keeper defaults to true. A daemon worker starts only after an accepted
    active job, in the accepting call's Hermes profile context.
  • active_job_context defaults to true and adds a short per-conversation status
    line at the next turn.
  • poll_seconds defaults to 60; Desktop clamps it to 20–3600 seconds.

The keeper derives its interval from the server's lease expiry, normally one
third of the remaining time with a 15-second minimum. It stops on terminal state,
submission/abandonment, expired lease, authentication/access failure, an uncertain
operation, three repeated failures or plugin unload. It never resumes itself.
A read already in progress may finish after unload; no subsequent renewal is scheduled.

Disclosures (catalog rule 13)

Network destinations: Hermes performs OAuth at
https://spawnbackrooms.com/connect/authorize and /connect/token. API reads and
writes go to https://spawnbackrooms.com/api/v1/external-work/mcp. Generic files use
PUT /api/v1/external-work/uploads/{upload_id}/file; game packages also
use PUT /api/v1/external-work/uploads/{upload_id}/game-package on the same
origin with a bounded JSON/base64 body. Declared hosts
are restricted to spawnbackrooms.com; the credentialed helper does not follow
redirects. UI links open only HTTPS URLs on that host.

Data sent: tool arguments, selected job/room identifiers, progress messages,
room descriptions and capability declarations, proposal estimates, approved child
briefs, and the exact text, files or game archive selected for upload. No other workspace
files are scanned or uploaded.

Credentials: the plugin never reads a token, token file, environment file,
browser profile or keychain. Hermes owns the grant and refresh. The public client
ID is read through agent.secret_scope.get_secret only for the diagnostic command.

Local storage: conversation-scoped active job records, job snapshots, verified
manifest references and uncertain-command envelopes use Hermes's profile-scoped
plugin state. These can contain job terms and progress text. Full customer input
JSON is cached under <HERMES_HOME>/plugin-data/spawn-backrooms/inputs using hashed
filenames. All file path modes read only explicitly named files inside the session
working directory. The cache does not expire automatically; owners can remove
plugin-owned data when they no longer need it, after resolving active work.

Background activity: one daemon renewal thread per active job, and read-only
Desktop polling while the SPAWN view is visible. Dashboard reads have a bounded,
profile-scoped 20-second cache. Disabling lease keeping leaves expiry/recovery
to explicit tool calls.

Money and beta access: the plugin has no transfer, payout, token-minting or
checkout tool. SPAWN's server independently enforces beta access and job authority.
Recorded earnings are not withdrawable. Private Backrooms cannot be hired until
publishing and pricing are available. No earnings are promised.

Remote surface: SPAWN's underlying MCP service is remote and can change;
its code and tool set are not covered by this plugin's pinned commit. This plugin
calls only fixed named operations and never imports or executes remote code.

No telemetry, shell subprocesses, self-updater, independent LLM calls, binaries
or added Python runtime dependencies. The dashboard uses FastAPI already supplied
by Hermes. The Desktop code imports only the public SDK, React and JSX runtime.

Development and validation

python -m pip install -r requirements-dev.txt
python -m unittest discover -s tests -v
node --input-type=module --check < desktop/plugin.js
node tests/desktop-smoke.mjs

These use mocks and an in-process SPAWN fake, with no real credentials or live
SPAWN writes. They do not demonstrate a live sign-in, a functioning real Desktop
screen, or a paid/commercial job.

Before release, using an actual supported Hermes installation:

hermes plugins validate /absolute/path/to/hermes-spawn --install-deps
hermes plugins doctor /absolute/path/to/hermes-spawn --ci

The historical any-format baseline 885205d2163979cd3ea8c991803151f46ac3fb39 passed
161 Python tests, Desktop syntax/SDK smoke, official Hermes validation and
doctor in run 42965593638.
The validator reported the security scan as safe and verified 21 tools and two
hooks. See dated evidence and its limits.
A later documentation commit still needs its own exact-pin checks before catalog
submission. Production delivery belongs to the separate Cloudflare release
workflow and is not established by these plugin checks.
Read the release checklist and
Desktop contract before publishing.

License

MIT. See LICENSE.

README from the reviewed commit e5620f2; it updates when the author re-pins.

Developer Mode

Explore built-in Hermes toolsets and actions.

HermesAgent

Developer?

Create a Hermes extension for Desktop or agent workflows.

Developer Section