Skip to content

Commit b4d3d53

Browse files
committed
v1.0.2
1 parent 1b4bc90 commit b4d3d53

File tree

3 files changed

+36
-11
lines changed

3 files changed

+36
-11
lines changed

Dockerfile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,11 @@ RUN LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygi
8787
rm /tmp/lazygit.tar.gz
8888

8989
# ---------- delta (git diff pager) ----------
90-
RUN DELTA_VERSION=$(curl -s "https://api.github.com/repos/dandavison/delta/releases/latest" | jq -r '.tag_name') && \
90+
RUN DELTA_TAG=$(curl -s "https://api.github.com/repos/dandavison/delta/releases/latest" | jq -r '.tag_name') && \
91+
DELTA_VERSION=${DELTA_TAG#v} && \
9192
DELTA_DEB_ARCH=$(case "$TARGETARCH" in arm64) echo "arm64";; *) echo "amd64";; esac) && \
9293
curl -fsSL -o /tmp/delta.deb \
93-
"https://github.com/dandavison/delta/releases/latest/download/git-delta_${DELTA_VERSION}_${DELTA_DEB_ARCH}.deb" && \
94+
"https://github.com/dandavison/delta/releases/download/${DELTA_TAG}/git-delta_${DELTA_VERSION}_${DELTA_DEB_ARCH}.deb" && \
9495
dpkg -i /tmp/delta.deb && \
9596
rm /tmp/delta.deb
9697

README.md

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ services:
110110
- ANTHROPIC_API_KEY=your-key-here
111111
```
112112
113+
In that example, `/home/opencode` is the fixed path **inside** the container. On the host, `./data/opencode` and `./local-cache/opencode` are just example bind-mount paths relative to the folder containing your `docker-compose.yaml`. You can replace them with any host paths you want.
114+
113115
**Step 3.** Start it.
114116

115117
```bash
@@ -120,6 +122,8 @@ Open http://localhost:4096. You're in.
120122

121123
> The shipped `docker-compose.yaml` uses `${ANTHROPIC_API_KEY}` syntax which reads from your shell environment or a `.env` file. Copy `.env.example` to `.env` and fill in your API key.
122124

125+
> `./data/opencode` is only an example host path. If your compose file lives at `/opt/holycode`, that same bind mount becomes `/opt/holycode/data/opencode` on the host.
126+
123127
> Keep `./local-cache/opencode` on local disk. If this project folder lives on NAS/CIFS/SMB storage, change that cache mount to an absolute local host path instead.
124128

125129
<p align="right">
@@ -263,10 +267,14 @@ services:
263267
- "4096:4096" # OpenCode web UI
264268
265269
volumes:
266-
# --- Persistent state (all OpenCode data under home dir) ---
267-
- ./data/opencode:/home/opencode # Config, sessions, plugins, all XDG paths
270+
# --- Main HolyCode data ---
271+
# Pick any host path you want here. This path maps to /home/opencode in the container.
272+
# It can live on local disk or network storage.
273+
- ./data/opencode:/home/opencode
268274
269-
# --- Cache path (keep this on local disk; if this folder lives on NAS/CIFS, replace with an absolute local path) ---
275+
# --- Cache path ---
276+
# Keep this one on LOCAL disk for plugin/cache reliability.
277+
# If your main data path lives on NAS/CIFS/SMB, make this a separate local path.
270278
- ./local-cache/opencode:/home/opencode/.cache/opencode
271279
272280
# --- Workspace ---
@@ -318,7 +326,7 @@ services:
318326
# - ENABLE_CLAUDE_AUTH=true
319327
320328
# --- oh-my-openagent (multi-agent orchestration for OpenCode) ---
321-
# Installs automatically on first boot when enabled
329+
# Enables the plugin through OpenCode config on container start
322330
# Toggle on/off with docker compose down && up -d
323331
# - ENABLE_OH_MY_OPENAGENT=true
324332
```
@@ -362,6 +370,10 @@ services:
362370

363371
> 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`.
364372

373+
> `ENABLE_OH_MY_OPENAGENT=true` enables the plugin through the main OpenCode config at `/home/opencode/.config/opencode/opencode.json`. On the host, that file appears under whatever host path you bind to `/home/opencode`.
374+
375+
> This toggle should not be read as “HolyCode will always auto-create a separate plugin-specific config file on the host.” The guaranteed file to check first is `opencode.json` in the OpenCode config directory.
376+
365377
> `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`.
366378

367379
<p align="right">
@@ -556,15 +568,19 @@ docker exec -it holycode bash -c "opencode providers login"
556568

557569
## 💾 Data and Persistence
558570

559-
Most OpenCode state lives in `./data/opencode`. Plugin cache is mounted separately at `./local-cache/opencode` by default so you can keep that path on local disk.
571+
Most OpenCode state lives under `/home/opencode` inside the container. On the host, that data appears wherever you bind-mount `/home/opencode`. In the default examples below, the host path is `./data/opencode`, but you can replace it with any path you want.
572+
573+
Plugin cache is mounted separately at `./local-cache/opencode` by default so you can keep that cache path on local disk even if your main data path is somewhere else.
560574

561575
| Host Path | Container Path | What's in it |
562576
|-----------|---------------|-------------|
563-
| `./data/opencode/.config/opencode` | `/home/opencode/.config/opencode` | Settings, agents, MCP configs, themes, plugins |
564-
| `./data/opencode/.local/share/opencode` | `/home/opencode/.local/share/opencode` | SQLite sessions database, MCP OAuth tokens |
565-
| `./data/opencode/.local/state/opencode` | `/home/opencode/.local/state/opencode` | Frecency data, model cache, key-value store |
577+
| `./data/opencode/.config/opencode`* | `/home/opencode/.config/opencode` | Settings, agents, MCP configs, themes, plugins |
578+
| `./data/opencode/.local/share/opencode`* | `/home/opencode/.local/share/opencode` | SQLite sessions database, MCP OAuth tokens |
579+
| `./data/opencode/.local/state/opencode`* | `/home/opencode/.local/state/opencode` | Frecency data, model cache, key-value store |
566580
| `./local-cache/opencode` | `/home/opencode/.cache/opencode` | Plugin node_modules, auto-installed dependencies |
567581

582+
\* These `./data/opencode/...` paths are example host paths from the sample compose file. If you bind `/home/opencode` to a different host path, the same subdirectories will appear there instead.
583+
568584
Rebuild the container anytime. Run `docker compose pull && docker compose up -d` and your sessions, settings, and configs come back automatically.
569585

570586
**SQLite WAL note.** The sessions database uses Write-Ahead Logging. Don't copy the `.db` file while the container is running. Stop the container first if you need to back up or migrate the database file.

docs/CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,15 @@ All notable changes to HolyCode will be documented in this file.
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
66

7-
## [1.0.1] - 03/31/2026
7+
## [1.0.2] - 04/03/2026
8+
9+
### Changed
10+
11+
- Clarify that `/home/opencode` is the fixed container path while the host data path depends on the bind mount the user chooses
12+
- Clarify that main data can live on remote storage while the cache path should remain local
13+
- Clarify that `ENABLE_OH_MY_OPENAGENT=true` enables the plugin through `opencode.json` without promising a separate plugin-specific config file on the host
14+
15+
## [1.0.1] - 04/02/2026
816

917
### Fixed
1018

0 commit comments

Comments
 (0)