Repository navigation
Releases: Ars-Ludus/semcom-install
Release list
v0.5.0 — Claude Code integration
What's new
Claude Code self-instrumentation — semcom now injects its own memories and ingests its own responses when running as a Claude Code agent.
Two hook scripts installed to ~/.local/share/semcom/hooks/claude-code/:
user-prompt-submit.sh— fires onUserPromptSubmit, retrieves relevant memories, injects<semcom_memory>block asadditionalContextbefore the LLM callstop.sh— fires onStop, extracts the last assistant response from the session JSONL, ingests it into memory
Adapter layer — semcom_adapter/claudecode harness handles Claude Code's hook event format. New /hooks/claude route on the semcom server.
Setup
After installing, add to ~/.claude/settings.json:
{
"hooks": {
"UserPromptSubmit": [{"hooks": [{"type": "command", "command": "~/.local/share/semcom/hooks/claude-code/user-prompt-submit.sh"}]}],
"Stop": [{"hooks": [{"type": "command", "command": "~/.local/share/semcom/hooks/claude-code/stop.sh"}]}]
}
}The installer prints this snippet automatically if ~/.claude is detected.
Upgrading from v0.4.x
mkdir -p ~/.local/share/semcom/install && cd ~/.local/share/semcom/install
curl -fsSL https://github.com/Ars-Ludus/semcom-install/releases/latest/download/semcom-release.tar.gz | tar xz
bash install.shv0.4.2 — default path cleanup
What changed
- Default install path changed from
~/.openclaw/semcomto~/.local/share/semcom. Override withSEMCOM_DIR=... bash install.shif needed. semcom-memoryinternal hook removed — it was registering on every message but the body mutation was silently discarded. The Plugin SDK plugin (semcom-memory) handles retrieval correctly viabefore_prompt_build.semcom-starthook now correctly finds the binary and writes logs under the new default path.
Upgrading
mkdir -p ~/.local/share/semcom/install && cd ~/.local/share/semcom/install
curl -fsSL https://github.com/Ars-Ludus/semcom-install/releases/latest/download/semcom-release.tar.gz | tar xz
bash install.shIf you have an existing install at ~/.openclaw/semcom, pass the override:
SEMCOM_DIR=~/.openclaw/semcom bash install.shv0.4.1 — Revert to ~/.openclaw/semcom default
Reverts the v0.4.0 path change. ~/.local/share/semcom requires root on constrained deployments (e.g. HeyRon containers). ~/.openclaw/semcom is the correct default — it's within the agent's own writable directory. All bug fixes from v0.3.2 (mkdirSync, SEMCOM_DIR-aware log path, startup log entry) are retained.
v0.4.0 — Platform-agnostic install
What's new
- Default install path is now
~/.local/share/semcom(XDG standard). No longer tied to openClaw's directory. - openClaw is now one integration among many — auto-detected at install time, not assumed. Other platforms (Claude Code, Hermes, etc.) documented as plain HTTP consumers; dedicated hook integrations planned for future releases.
- Fixed log path bug in
semcom-starthook — log file now correctly followsSEMCOM_DIRinstead of hardcoding~/.openclaw/semcom/. SEMCOM_DIRoverride retained — constrained environments (e.g.SEMCOM_DIR=~/.openclaw/semcom bash install.sh) still work.
Upgrade from v0.3.x
# Stop old server
~/.openclaw/semcom/stop.sh 2>/dev/null || true
# Install new version
mkdir -p ~/.local/share/semcom/install && cd ~/.local/share/semcom/install
curl -fsSL https://github.com/Ars-Ludus/semcom-install/releases/latest/download/semcom-release.tar.gz | tar xz
bash install.sh
# Migrate databases if you want to keep history
cp ~/.openclaw/semcom/memory.db ~/.local/share/semcom/memory.db
cp ~/.openclaw/semcom/personal.db ~/.local/share/semcom/personal.db
cp ~/.openclaw/semcom/.env ~/.local/share/semcom/.env
# Restart openClaw gateway to reload plugin
openclaw restartv0.3.2 — Plugin hardening for container environments
- Log directory is now created automatically —
mkdirSync({ recursive: true })runs before every log write. Previously, if~/.openclaw/semcom/didn't exist yet, all log writes silently failed and the hook appeared to not fire. SEMCOM_DIRenv var respected for log path — log file now resolves viaSEMCOM_DIR(same as the rest of the semcom setup) rather than hardcodinghomedir()/.openclaw/semcom/. Prevents path mismatches in container environments where$HOMEmay differ.- Startup log entry —
register()now logsplugin registeredimmediately, so you can confirm the plugin loaded and the log path is correct before sending any messages.
v0.3.1 — All paths within ~/.openclaw/semcom
Hardening for restricted environments (e.g. containers where only ~/.openclaw/ is writable).
- Log file moved from
~/.openclaw/logs/semcom-hooks.logto~/.openclaw/semcom/semcom-hooks.log— no longer depends on alogs/subdirectory existing - Install staging moved from
/tmp/semcom-installto~/.openclaw/semcom/install— no/tmpaccess required - All installation artifacts now live exclusively within
~/.openclaw/semcom/or~/.openclaw/hooks/semcom-start/(both managed by openClaw)
v0.3.0 — Plugin SDK memory injection
What's new
- Memory injection now works correctly. Switched from an internal
message:preprocessedhook (fire-and-forget, context mutation never reached the agent) to a Plugin SDKbefore_prompt_buildhook, which is awaited and returnsprependContextdirectly into the prompt builder. - New install path:
~/.openclaw/semcom/(was~/.local/share/semcom/). Lives alongside other openClaw state, survives container restarts without root access. - API key persistence:
~/.openclaw/semcom/.envis sourced bystart.shand thesemcom-starthook on every boot. - Plugin replaces the
semcom-memoryinternal hook. Thesemcom-starthook remains for auto-start on gateway boot.
Upgrade from v0.2.x
# Stop old server
~/.local/share/semcom/stop.sh 2>/dev/null || true
# Install new version
mkdir -p /tmp/semcom-v3 && cd /tmp/semcom-v3
curl -fsSL https://github.com/Ars-Ludus/semcom-install/releases/latest/download/semcom-release.tar.gz | tar xz
bash install.sh
# Migrate databases (if you want to keep history)
cp ~/.local/share/semcom/memory.db ~/.openclaw/semcom/memory.db
cp ~/.local/share/semcom/personal.db ~/.openclaw/semcom/personal.db
# Add API key
echo 'GOOGLE_API_KEY=your_key_here' >> ~/.openclaw/semcom/.env
# Activate plugin
openclaw restartv0.2.0
- Default install dir changed to ~/.openclaw/semcom (works on containers without ~/.local)
- Binary now resolves index.bin/memory.db relative to its own location (no need to cd or set env vars)
- Default Gemini model updated to gemini-3.1-flash-lite-preview
- API key persisted via ~/.openclaw/semcom/.env, sourced by start.sh and semcom-start hook on every boot