.env.example: document MEMPALACE_PALACE_PATH and why nothing exports it
Lint / hadolint (push) Successful in 10s
Lint / actionlint (push) Successful in 50s

The only MemPalace variable the template never mentioned, and the one that
moves the feeders' stage as a side effect: the palace root resolves as
$MEMPALACE_PALACE_PATH -> $MEMPAL_PALACE_PATH -> ~/.mempalace/config.json ->
~/.mempalace/palace, and the stage is derived from it (<palace-root>/pi-stage).

The comment states that precedence, records why neither the image nor the
entrypoint exports it (pinning the palace without carrying the stage along
re-creates the split a shared root removed, v1.8.2), warns that a stage whose
persistence differs from the palace makes a scoped `mempalace sync` prune
conversation drawers whose dedup key is the staged path, and notes it is a
path INSIDE the container unlike the host-side WORKSPACE_PATH/SSH_KEY_PATH
above it.

Found while auditing a live host whose .env sets it redundantly to the
default value.
This commit is contained in:
2026-08-23 23:27:42 +02:00
parent 01abda3456
commit 26f223568d
2 changed files with 32 additions and 0 deletions
+13
View File
@@ -18,6 +18,19 @@ SSH_KEY_PATH=~/.ssh
# the staged files and the palace dedup keys pointing at them cannot be # the staged files and the palace dedup keys pointing at them cannot be
# separated. # separated.
# #
# That palace root is resolved with mempalace's own precedence
# ($MEMPALACE_PALACE_PATH -> $MEMPAL_PALACE_PATH -> ~/.mempalace/config.json ->
# ~/.mempalace/palace), and the feeders derive their stage FROM it
# (<palace-root>/pi-stage). Neither the image nor the entrypoint exports it, by
# design: pinning the palace without carrying the stage along re-creates the
# very split that a shared root removed. Override it only to move the palace off
# the default -- e.g. onto a different mount -- and only to a path with the SAME
# persistence as the palace itself. A stage that outlives its palace (or dies
# first) makes a scoped `mempalace sync` prune conversation drawers, because
# their dedup key is the staged path. Setting it to the default buys nothing.
# Unlike WORKSPACE_PATH/SSH_KEY_PATH above, this is a path INSIDE the container.
# MEMPALACE_PALACE_PATH=/home/developer/.mempalace/palace
#
# To instead share ONE MemPalace across containers/harnesses (pi + opencode # To instead share ONE MemPalace across containers/harnesses (pi + opencode
# + native), set the URL below. When set, the extension connects over HTTP # + native), set the URL below. When set, the extension connects over HTTP
# and NO local mempalace-mcp is spawned; the devbox-palace volume is then # and NO local mempalace-mcp is spawned; the devbox-palace volume is then
+19
View File
@@ -11,6 +11,25 @@ Pre-v1.0.0 tags followed the pi npm version (`v{pi_version}[letter]`).
--- ---
## Unreleased
### Documentation
- **`.env.example` documents `MEMPALACE_PALACE_PATH`.** It was the only MemPalace
variable the template never mentioned, while being the one that silently moves
the feeders' stage: the palace root resolves as `$MEMPALACE_PALACE_PATH` →
`$MEMPAL_PALACE_PATH` → `~/.mempalace/config.json` → `~/.mempalace/palace`, and
the stage is derived from it (`<palace-root>/pi-stage`). The comment states the
precedence, says why neither the image nor the entrypoint exports it (pinning
the palace without carrying the stage re-creates the split a shared root
removed — see v1.8.2), warns that a stage whose persistence differs from the
palace makes a scoped `mempalace sync` prune conversation drawers whose dedup
key is the staged path, and notes it is a *container* path unlike the
host-side `WORKSPACE_PATH`/`SSH_KEY_PATH` above it. Found while auditing a live
host whose `.env` sets the variable redundantly to the default.
---
## v1.8.5 — 2026-08-23 ## v1.8.5 — 2026-08-23
Patch release with two fixes in the container's skill wiring — one behavioural, Patch release with two fixes in the container's skill wiring — one behavioural,