You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OpenCode running in a container with everything already installed. 30+ dev tools, 10+ AI providers, headless browser, persistent state. Drop it on any machine and pick up exactly where you left off.
29
+
OpenCode running in a container with everything already installed. 50+ dev tools, 10+ AI providers, headless browser, persistent state, and two serious upgrades on top: Hermes Agent and Paperclip. Drop it on any machine and pick up exactly where you left off.
30
+
31
+
**Hermes Agent turns HolyCode into a meta-agent runtime.** You get a smarter planning layer on top of OpenCode, an API surface on port `8642`, MCP support, messaging adapters, and a clean way to let a "brain" delegate code work into the local container instead of bolting that together yourself.
32
+
33
+
**Paperclip turns HolyCode into an agent board.** You get a dashboard on port `3100` where you create a company, hire OpenCode-backed workers, wake them on heartbeat, and manage agent work from a real UI instead of hand-rolling scripts around `opencode run`.
30
34
31
35
**Works with your Claude subscription.** Enable the Claude Auth plugin and use your existing Claude Max/Pro plan. No separate API key needed.
32
36
33
37
**Multi-agent orchestration built in.** Enable oh-my-openagent and turn OpenCode into a coordinated agent system with parallel execution.
34
38
35
-
**You were going to spend an hour getting your environment back. Or you could just `docker compose up`.**
39
+
**You were going to spend an hour getting your environment back. Or you could just `docker compose up` and get a coding workstation, a meta-agent, and an agent board in one shot.**
36
40
> **Don't want to self-host?**[HolyCode Cloud](https://holycode.coderluii.dev/cloud) is coming. Same tools, zero setup. Early access is free.
37
41
38
42
---
@@ -49,7 +53,7 @@ It wraps [OpenCode](https://opencode.ai), an AI coding agent with a built-in web
49
53
50
54
It's the same idea as [HolyClaude](https://github.com/coderluii/holyclaude) but wrapping OpenCode instead of Claude Code. And here's the thing: OpenCode isn't locked to one provider. Point it at Anthropic, OpenAI, Google Gemini, Groq, AWS Bedrock, or Azure OpenAI. Same container, your choice of model.
51
55
52
-
30+ dev tools, two language runtimes, a headless browser stack, and process supervision. All wired up, all ready on first boot. I've been running this on my own server. Every bug has been hit, diagnosed, and fixed.
56
+
50+ dev tools, two language runtimes, a headless browser stack, process supervision, and two bundled orchestration layers. All wired up, all ready on first boot. I've been running this on my own server. Every bug has been hit, diagnosed, and fixed.
53
57
54
58
You pull it. You run it. You open your browser. You build.
55
59
@@ -68,16 +72,17 @@ You pull it. You run it. You open your browser. You build.
| 12 |[Data and Persistence](#-data-and-persistence)|
74
-
| 13 |[Permissions](#-permissions)|
75
-
| 14 |[Upgrading](#-upgrading)|
76
-
| 15 |[Troubleshooting](#-troubleshooting)|
77
-
| 16 |[Building Locally](#-building-locally)|
78
-
| 17 |[Contributing](#-contributing)|
79
-
| 18 |[Support](#-support)|
80
-
| 19 |[License](#-license)|
75
+
| 10 |[Bundled Services](#-bundled-services)|
76
+
| 11 |[Architecture](#-architecture)|
77
+
| 12 |[CLI Usage](#-cli-usage)|
78
+
| 13 |[Data and Persistence](#-data-and-persistence)|
79
+
| 14 |[Permissions](#-permissions)|
80
+
| 15 |[Upgrading](#-upgrading)|
81
+
| 16 |[Troubleshooting](#-troubleshooting)|
82
+
| 17 |[Building Locally](#-building-locally)|
83
+
| 18 |[Contributing](#-contributing)|
84
+
| 19 |[Support](#-support)|
85
+
| 20 |[License](#-license)|
81
86
82
87
---
83
88
@@ -136,7 +141,7 @@ Open http://localhost:4096. You're in.
136
141
137
142
Don't want to self-host? We're building a managed version of HolyCode.
138
143
139
-
Same 30+ tools. Same 10+ providers. Same persistent state. No Docker. No terminal. Just open your browser and code.
144
+
Same 50+ tools. Same 10+ providers. Same persistent state. No Docker. No terminal. Just open your browser and code.
140
145
141
146
**What you get with Cloud:**
142
147
- Zero setup. No Docker, no config files, no terminal commands.
@@ -367,6 +372,12 @@ services:
367
372
| `OPENCODE_SERVER_USERNAME` | `opencode` | Username for web UI basic auth |
368
373
| `ENABLE_CLAUDE_AUTH` | (none) | Set to `true` to use Claude subscription instead of API key |
369
374
| `ENABLE_OH_MY_OPENAGENT` | (none) | Set to `true` to enable multi-agent orchestration plugin |
375
+
| `ENABLE_PAPERCLIP` | (none) | Set to `true` to start the Paperclip dashboard and agent board |
376
+
| `PAPERCLIP_PORT` | `3100` | Override the container port used by Paperclip |
377
+
| `PAPERCLIP_INSTANCE_ID` | `default` | Local Paperclip instance name for isolated state |
378
+
| `PAPERCLIP_DEPLOYMENT_MODE` | `authenticated` | Docker-safe Paperclip startup mode; HolyCode defaults this away from `local_trusted` |
379
+
| `ENABLE_HERMES` | (none) | Set to `true` to start Hermes as a bundled meta-agent API |
380
+
| `HERMES_PORT` | `8642` | Override the container port used by Hermes |
370
381
| `HOLYCODE_PLUGIN_UPDATE` | `manual` | Plugin update mode: `manual`(install if missing) or `auto` (install and update on boot) |
371
382
372
383
> Plugin toggles (`ENABLE_CLAUDE_AUTH`, `ENABLE_OH_MY_OPENAGENT`) take effect on container restart. Set the env var and run `docker compose down && up -d`.
@@ -377,6 +388,14 @@ services:
377
388
378
389
> `ENABLE_OH_MY_OPENAGENT=true` enables the plugin and exposes the built-in `/oh-my-openagent-setup` skill. The skill only appears when the plugin is enabled. Use it to create or update the plugin-specific config file at `~/.config/opencode/oh-my-openagent.jsonc`.
379
390
391
+
> `ENABLE_PAPERCLIP=true` starts Paperclip on port `3100` inside the container. Open the dashboard, create a company, then hire OpenCode-backed agents there. Paperclip persists under `~/.paperclip` automatically.
392
+
393
+
> HolyCode forces `PAPERCLIP_DEPLOYMENT_MODE=authenticated` by default because Paperclip's upstream `local_trusted` mode only allows loopback binding. In Docker, that would block port publishing on `0.0.0.0`.
394
+
395
+
> `ENABLE_HERMES=true` starts Hermes on port `8642` inside the container. Hermes persists under `~/.hermes`, uses the already-installed `opencode` binary, and can expose an OpenAI-compatible API while delegating code work back into HolyCode.
396
+
397
+
> Hermes is an API service, not a landing page. A `404` at `http://localhost:8642/` is expected. The important signal is that the port is listening and the process stays healthy.
398
+
380
399
> `GIT_USER_NAME` and `GIT_USER_EMAIL` are only applied on first boot. To re-apply, delete the sentinel file and restart: `docker exec holycode rm /home/opencode/.config/opencode/.holycode-bootstrapped` then `docker compose restart`.
381
400
382
401
<p align="right">
@@ -456,6 +475,17 @@ Includes Liberation, DejaVu, Noto, and Noto Color Emoji fonts for correct page r
@@ -474,29 +504,95 @@ s6-overlay supervises OpenCode and Xvfb. If a process crashes, it restarts autom
474
504
475
505
---
476
506
507
+
## 🧩 Bundled Services
508
+
509
+
HolyCode now ships with two optional layers on top of OpenCode. You do **not** need them to use the container. But if plain OpenCode gives you the hands, these two give you a brain and a control room.
510
+
511
+
- **Hermes Agent** is for when you want a smarter coordinator sitting above OpenCode.
512
+
- **Paperclip** is for when you want a board, a workflow, and actual agent management instead of just one-off prompts.
513
+
514
+
Flip the env var, restart the container, and the service comes up alongside the normal web UI.
515
+
516
+
### Hermes Agent
517
+
518
+
Hermes is the "smarter brain" option. It runs as a bundled meta-agent, exposes an API service on port `8642`, and delegates coding work by calling the local `opencode` binary that HolyCode already ships.
519
+
520
+
Why that matters:
521
+
522
+
- **Planning above execution.** OpenCode does the hands-on coding. Hermes gives you a layer that can reason, coordinate, and delegate down into that local worker.
523
+
- **API-ready agent runtime.** You can point other tooling at Hermes instead of wiring your own service around OpenCode.
524
+
- **MCP and messaging in the same box.** HolyCode already solves the dev-environment side. Hermes adds the "agent platform" layer on top.
525
+
- **Persistent agent state.** Its data lives under `~/.hermes`, so rebuilds don't wipe the runtime you just configured.
526
+
527
+
If you want HolyCode to feel less like "a container with a coding tool" and more like "an AI runtime you can build systems on top of," Hermes is the part that changes that.
528
+
529
+
Turn it on with:
530
+
531
+
```yaml
532
+
environment:
533
+
- ENABLE_HERMES=true
534
+
- HERMES_PORT=8642
535
+
```
536
+
537
+
Hermes state lives under `/home/opencode/.hermes`, so it follows the same persistence story as the rest of HolyCode.
538
+
539
+
### Paperclip
540
+
541
+
Paperclip is the "agent board" option. It gives you a local dashboard on port `3100` where you create a company, hire agents, and let those agents wake up on schedule. Under the hood it spawns `opencode run` processes, so the workers are still HolyCode.
542
+
543
+
Why that matters:
544
+
545
+
- **A real control surface.** You stop treating agents like random shell commands and start treating them like a team with roles, tasks, and wake cycles.
546
+
- **OpenCode-backed workers, not a toy layer.** The board is Paperclip. The actual worker execution is still HolyCode doing real coding work.
547
+
- **Faster delegation experiments.** Create a company, assign work, and see how an agent workflow feels without building the orchestration stack yourself.
548
+
- **Persistent board state.** Data, config, storage, and embedded Postgres all live under `~/.paperclip`.
549
+
550
+
If Hermes is the brain, Paperclip is the control room. It's the thing you turn on when you want to manage agent work, not just launch it.
551
+
552
+
Turn it on with:
553
+
554
+
```yaml
555
+
environment:
556
+
- ENABLE_PAPERCLIP=true
557
+
- PAPERCLIP_PORT=3100
558
+
- PAPERCLIP_DEPLOYMENT_MODE=authenticated
559
+
```
560
+
561
+
Paperclip state lives under `/home/opencode/.paperclip`. HolyCode bootstraps it in `authenticated` mode so Docker port publishing works cleanly. Open the dashboard, set up your company, and hire OpenCode-backed employees from there.
562
+
563
+
<p align="right">
564
+
<a href="#top">back to top</a>
565
+
</p>
566
+
567
+
---
568
+
477
569
## 🏗 Architecture
478
570
479
571
```mermaid
480
572
graph TD
481
573
A[docker compose up -d] --> B[entrypoint.sh]
482
574
B --> C[UID/GID Remap]
483
-
C --> D[Plugin Toggles]
575
+
C --> D[Plugin and Service Toggles]
484
576
D --> E{First Boot?}
485
577
E -->|Yes| F[bootstrap.sh]
486
578
E -->|No| G[s6-overlay /init]
487
579
F --> G
488
580
G --> H[Xvfb :99]
489
581
G --> I[opencode web :4096]
582
+
G --> Q[Hermes API :8642]
583
+
G --> R[Paperclip UI :3100]
490
584
I --> J[Web UI]
491
585
J --> K[Your Browser]
492
586
I --> L[CLI Access]
493
587
L --> M[docker exec -it holycode bash]
494
588
M --> N[opencode TUI]
495
589
M --> O[opencode run 'message']
496
590
M --> P[opencode attach localhost:4096]
591
+
Q --> S[Meta-agent API clients]
592
+
R --> T[Agent board and CEO invite]
497
593
```
498
594
499
-
The entrypoint handles user remapping, plugin toggles, and first-boot setup. s6-overlay supervises both Xvfb (headless display) and the OpenCode web server. If either crashes, s6 restarts it automatically. Access the web UI at port 4096 or exec into the container for the full CLI experience.
595
+
The entrypoint handles user remapping, plugin toggles, optional bundled-service toggles, and first-boot setup. s6-overlay supervises Xvfb, the OpenCode web server, and any optional bundled services you enabled. If a supervised process crashes, s6 restarts it automatically. Access the web UI at port 4096, Hermes on 8642, or Paperclip on 3100 when those services are enabled.
0 commit comments