What you can automate
| Lane | Drop | Get |
| :--- | :--- | :--- |
| Incidents | A log from a deployment or support export | A timeline, impact summary, and next steps |
| Handoff | Meeting notes or a design review | Decisions and open questions |
| Screenshots | An error screenshot | A description and next step, using your vision-capable model |
| Your lane | A recurring file export from a script or scanner | A Markdown report shaped by your standing task |
Dropstation adds a native messaging platform to Hermes Agent. It watches while the gateway runs, opens a fresh session for each file, and saves the reply and a receipt to the outbox. A rename or copy of the same bytes within a lane shares the existing job.
Actual results
| Checked on Hermes v0.23.0 with Ollama on macOS | Observed |
| :--- | :--- |
| Two configured lanes | Two reports in separate Hermes sessions |
| Two byte-identical logs in one lane | One incident receipt |
| Forced gateway shutdown during a turn | The active job became interrupted. The queued handoff delivered after restart. |
| Source and report integrity | Both SHA-256 values matched the receipts |
| Validation | Eight spool tests and 16 Hermes plugin checks passed |
Watch the launch film
Download the 47-second film · English captions
Quick start
Use Hermes Agent v0.23.0+ on macOS or Linux with a configured model.
1. Install the plugin.
hermes plugins install https://github.com/satiricalguru/Hermes-dropstation --enable
2. Configure the inboxes. Merge the example config into your Hermes profile's config.yaml. It watches ~/Dropstation and assigns a task to each of two folders. The example leaves Hermes tools disabled for unattended text processing.
3. Run the gateway. Use hermes gateway run, or hermes gateway restart if you run Hermes as a service. Once it starts, drop a file into ~/Dropstation/inbox/incidents/ or run the bundled example.
plugin_dir="$HOME/.hermes/plugins/dropstation"
python3 "$plugin_dir/dropstation.py" --root "$HOME/Dropstation" \
submit incidents "$plugin_dir/demo/checkout.log"
python3 "$plugin_dir/dropstation.py" --root "$HOME/Dropstation" status
The example uses the default Hermes profile. For a named profile, run the Hermes commands in that profile and use its plugin directory.
From the plugin checkout, copy the five runtime files into your active profile.
profile_dir="$HOME/.hermes"
install -d -m 700 "$profile_dir/plugins/dropstation"
cp __init__.py adapter.py spool.py dropstation.py plugin.yaml "$profile_dir/plugins/dropstation/"
hermes plugins enable dropstation
How it works
flowchart LR
A["Drop a file into a lane"] --> B["Snapshot after two matching polls"]
B --> C{"New bytes in this lane?"}
C -->|Yes| D["Open a Hermes session"]
C -->|Already seen| E["Keep the existing receipt"]
D --> F["Save report.md and receipt.json"]
classDef accent fill:#3026cf,stroke:#7b70ff,color:#fff
class A,D,F accent
- Durable queue. Queued work resumes after a restart. A running job left behind becomes
interrupted. Review it before deliberately re-running the input withsubmit <lane> <file> --again. - Inspectable output. Each job has an input SHA-256 and, on delivery, a report SHA-256.
deliveredconfirms that Hermes sent a final reply and Dropstation saved it. The reply may describe a model or gateway error. - One worker per root. Jobs run serially within a spool. Use a distinct private root per Hermes profile. Keep the receipts for as long as you want duplicate detection.
- Input limits. TXT, Markdown, LOG, CSV, JSON, PDF, PNG, JPEG, and WebP up to 10 MiB. Short UTF-8 text is inlined. Other inputs use Hermes attachment handling and need an appropriate vision model or file reader. The watcher skips links, pipes, and unsupported entries.
Data and permissions
Writing to the configured inbox can start a Hermes turn. The adapter uses the filesystem owner boundary and its events skip messaging allowlists and pairing. Keep the root on a private local volume and grant write access only to trusted producers. Use a local reader for attachments when your task needs one, and configure the platform toolsets for the unattended work you intend to allow.
The adapter reads and writes inside the configured spool. Your Hermes provider processes the input and Hermes may retain it in session history. The outbox also stores a private input snapshot in each job's .input/ folder. Remove inputs and old results on your own retention schedule.
Develop
python3 -m unittest discover -s tests -v
hermes plugins validate --install-deps .
Research and design notes · Submission notes · MIT license
README from the reviewed commit e6a5ba6; it updates when the author re-pins.

satiricalguru