Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
274 commits
Select commit Hold shift + click to select a range
31fe6f2
fix: address audit #2 findings (issue #423)
itlackey May 15, 2026
c5ffdc8
refactor(cli): address audit #2 findings (#423)
itlackey May 15, 2026
1380491
fix(admin): consolidate coercion helpers, drop re-export shims
itlackey May 15, 2026
ac96913
fix: address remaining audit #2 items (docs, withAdminBody helper)
itlackey May 15, 2026
0c55405
fix(sdk): askAssistant auto-deletes its session by default
itlackey May 15, 2026
e2c56c1
docs: fix v0.11.0 drift across all docs + add CHANGELOG [0.11.0] entry
itlackey May 15, 2026
a3234ee
feat(akm): align setup wizard, capabilities, and model connections wi…
itlackey May 15, 2026
4f42431
refactor(admin): remove dead capabilities code + write akm config on …
itlackey May 15, 2026
310a3f5
refactor(layout): separate akm operational dirs from stash + remove m…
itlackey May 15, 2026
73dcf90
refactor(layout): eliminate data/ vault/ logs/ registry/ — new direct…
itlackey May 15, 2026
1e02a3b
refactor(layout): finalize directory taxonomy per spec
itlackey May 15, 2026
470ac35
refactor(layout): move stack into config/stack/ — stack.env, guardian…
itlackey May 15, 2026
873ac9c
fix(cli): update io.ts seedOpenPalmDir to write to config/stack/ and …
itlackey May 15, 2026
b60e485
docs: update all documentation for v0.11.0 directory restructuring
itlackey May 15, 2026
26b83f4
fix: correct all path references for v0.11.0 config/stack migration
itlackey May 15, 2026
51f594a
feat(scheduler): replace custom scheduler with akm tasks + OS cron
itlackey May 16, 2026
a212557
feat(admin): Phase 1a + 1b — host admin server + chat UI
itlackey May 16, 2026
b91f494
feat(admin): Phase 2 — route migration, cookie auth, mode cutover
itlackey May 16, 2026
e5aac54
feat(admin): Phase 3 — delete admin container, admin-tools, docker-so…
itlackey May 16, 2026
0478981
chore: post-migration cleanup — remove stale references found by audit
itlackey May 16, 2026
8c272e7
chore: second sweep — remove dead code and fix stale references
itlackey May 16, 2026
42ca006
chore: third sweep — automation endpoints, addon subcommands, docs
itlackey May 16, 2026
168486d
chore: fourth sweep — stale port/service references in components and…
itlackey May 16, 2026
a39f730
chore: fifth sweep — dev scripts, port table, admin addon compose refs
itlackey May 16, 2026
e5d636e
chore: sixth sweep — dockerignore, addon compose refs in docs and run…
itlackey May 16, 2026
86418bc
chore: seventh sweep — dev scripts and remaining addon refs in docs
itlackey May 16, 2026
4bae01c
chore: eighth sweep — fix stale architecture claims in authoritative …
itlackey May 16, 2026
a7017a8
feat(admin): migrate admin from container to host process (v0.11.0)
itlackey May 16, 2026
ddfe3e1
refactor(cli): remove upgrade alias — update is the canonical command
itlackey May 16, 2026
d5766fc
refactor(admin): replace globalThis singleton with module-level variable
itlackey May 16, 2026
0d4ae4c
refactor(guardian): remove unused AKM volume mounts and env vars
itlackey May 16, 2026
edab248
docs: reclassify channel-voice as addon — no guardian pipeline or cha…
itlackey May 16, 2026
28950c2
refactor(admin): unify dual session ID state into single record
itlackey May 16, 2026
db7980b
refactor(admin): inline ContainerRow into ContainersTab — single-use …
itlackey May 16, 2026
8d578a9
test(admin): update paths.vitest.ts to reflect guardian AKM dir removal
itlackey May 16, 2026
71fe5dd
refactor(stack): remove init service — mkdir moved to ensureHomeDirs …
itlackey May 16, 2026
3aa7b03
refactor(lib): remove dead exports ensureAdminToken and rotateAdminToken
itlackey May 16, 2026
425dc60
chore(plan): update simplification plan with execution status
itlackey May 16, 2026
b64ec5a
refactor(admin): remove dead server exports and inline single-use com…
itlackey May 17, 2026
8480193
docs(assistant): update persona docs to reflect host-admin migration …
itlackey May 17, 2026
17dc087
fix: remove dead code across CLI, channels-sdk, guardian, and stack
itlackey May 17, 2026
51f78cf
feat(simplification): stack simplification sweep — dead code removal …
itlackey May 17, 2026
36b5d75
refactor(assistant): replace socat lmstudio proxy with OpenCode provi…
itlackey May 17, 2026
ed2b1a3
refactor(admin): run SvelteKit directly on localhost — remove Bun gat…
itlackey May 17, 2026
8341bca
feat(admin): migrate setup wizard into SvelteKit — auto-redirect on f…
itlackey May 17, 2026
efb4141
fix: remove vault/user/user.env references for v0.11.0 — user secrets…
itlackey May 17, 2026
031733b
fix(skeleton): remove pre-v0.11.0 directories and update documentation
itlackey May 17, 2026
d83cc4b
fix(release/0.11.0): pre-merge sweep — path migrations, dev env, CI, …
itlackey May 17, 2026
9de7f56
fix(release/0.11.0): lockfile, dead code removal, and doc/script cleanup
itlackey May 17, 2026
1d49d29
fix(release/0.11.0): migrate remaining vault/ path references to v0.1…
itlackey May 17, 2026
7e6501a
fix(cli): remove dead admin tar code — no embedded build tarball
itlackey May 17, 2026
fcb675e
fix(docs/scripts): correct script names and dev-setup compose source …
itlackey May 17, 2026
c323488
fix(cleanup): remove dead code, fix gitignore v0.11.0 paths
itlackey May 17, 2026
d648502
fix(gws/comments): update stale vault/user paths to stash/vaults
itlackey May 17, 2026
51c2cb7
fix(v0.11.0): remove admin serve subcommand, fix stale image refs, up…
itlackey May 17, 2026
9c7427d
restore(skeleton): apply dropped .openpalm/ restructure from pre-sess…
itlackey May 17, 2026
2dfa291
restore(test): add skeleton-guardrail.test.ts for .openpalm/ v0.11.0 …
itlackey May 17, 2026
8e2895d
restore(skeleton): add all missing .gitkeep dirs — .openpalm/ now mir…
itlackey May 17, 2026
97f1c67
restore(v0.11.0): apply dropped session edits — full rename, drop emb…
itlackey May 17, 2026
830761b
fix(v0.11.0): assistant chown bug + e2e test isolation + dev-e2e rewrite
itlackey May 17, 2026
f38b45d
refactor(v0.11.0): drop admin subcommand + openpalm-base; rename env …
itlackey May 17, 2026
b9aa8c9
fix(v0.11.0): entrypoint set -e bug + e2e test infrastructure for tie…
itlackey May 18, 2026
3c68b6a
refactor(ui): retire pre-akm admin surface; SecretsTab → akm vault
itlackey May 18, 2026
db6a2d5
feat(voice+akm): wire TTS/STT plumbing; reframe Capabilities as akm
itlackey May 18, 2026
11546aa
feat(ui): make Connections + Addons actually configure OpenCode/channels
itlackey May 18, 2026
9f9a493
refactor(connections): wrap OpenCode auth API; auth.json is sole cred…
itlackey May 18, 2026
26f9fd6
refactor(setup): provider credentials live ONLY in OpenCode's auth.json
itlackey May 18, 2026
fd62c3e
feat(connections+capabilities): trim provider list, register local, a…
itlackey May 18, 2026
f369fca
fix(ui): update default ports for assistant and healthcheck; adjust U…
itlackey May 18, 2026
aedca9d
fix(ports): update assistant port from 3900 to 3800 in core.compose.yml
itlackey May 18, 2026
3dcf85c
feat(connections+capabilities): separate OpenPalm/OpenCode boundary, …
itlackey May 19, 2026
a50da1d
chore(ui): pre-merge cleanup — remove LLM env imports, dead code, css…
itlackey May 19, 2026
c4bfcd5
chore(config): comment out unused environment variables in core.compo…
itlackey May 19, 2026
89ec3f8
feat(voice): speaker = global TTS toggle, mic = capture + auto-send t…
itlackey May 19, 2026
8e44436
feat(voice): make mic + TTS work from any page via global chat service
itlackey May 19, 2026
d03eaaf
fix(voice): don't cancel TTS on page navigation
itlackey May 19, 2026
4723e20
feat(voice): icon + spinner state for recording, processing, speaking
itlackey May 19, 2026
56a504a
feat(voice): move backend selector into the Navbar voice toolbar
itlackey May 19, 2026
991f20e
feat(voice): add endpoint URL support for TTS/STT engines
itlackey May 19, 2026
0e15d86
feat(admin): add AKM configuration tab
itlackey May 20, 2026
1677aa1
fix(admin/akm): tighten PATCH validation and align tokenStored guard
itlackey May 20, 2026
514b7da
feat(admin/akm): full config form — editable connections, features, a…
itlackey May 21, 2026
27d8f64
feat(admin/akm): complete config coverage — profiles, all LLM/embeddi…
itlackey May 21, 2026
81dda45
fix(admin/akm): stable profile IDs, optNum/optInt type guard, clear s…
itlackey May 21, 2026
b08e44a
feat(admin/akm): drop v1 LLM connection, full v2 features tree, prope…
itlackey May 21, 2026
38224f0
test(admin/akm): Playwright e2e tests for AKM config API
itlackey May 21, 2026
bad3efa
feat(admin): move TTS/STT to dedicated Voice tab
itlackey May 21, 2026
f374228
refactor(capabilities): remove capabilities system, migrate to akm-na…
itlackey May 21, 2026
7d95008
docs: add akm/capabilities refactoring audit
itlackey May 21, 2026
7ae9a46
fix(auth): use /admin/akm as session probe instead of missing /admin/…
itlackey May 21, 2026
ed2ab95
fix(health): add /admin/health endpoint; use it as session probe
itlackey May 21, 2026
827b870
test(e2e): add health+providers stack tests; fix opencode port
itlackey May 21, 2026
8e1ebc5
docs: add guide for testing the stack in isolation
itlackey May 21, 2026
a3e9d10
fix(connections): resolve OpenCode URL from OP_ASSISTANT_PORT at runtime
itlackey May 21, 2026
802341f
feat(install): ship UI build as state/ui/, fix compiled binary self-s…
itlackey May 21, 2026
662c572
fix(install): resolve local UI build from binary location in compiled…
itlackey May 21, 2026
2614c94
fix(install): resolve local .openpalm/ dir from binary location in co…
itlackey May 21, 2026
6f60a5c
fix(ui): bundle all SSR deps for standalone state/ui/ deployment
itlackey May 21, 2026
2ea2c6f
refactor(lib): move UI asset seeding and path resolution to @openpalm…
itlackey May 21, 2026
c5f348a
docs: clarify harness+stack architecture in README
itlackey May 21, 2026
72bec26
docs: align all docs with v0.11.0 harness/stack mental model
itlackey May 21, 2026
ea31724
feat(electron): scaffold Electron harness for OpenPalm desktop app
itlackey May 21, 2026
c152cb5
fix(electron): add tray/app icon assets, enable fail-fast, fix packaging
itlackey May 21, 2026
6ff2b2a
feat(release): add dry_run option — builds everything, publishes nothing
itlackey May 21, 2026
4e6291d
fix(electron): pin electron to 34.5.8 — electron-builder requires exa…
itlackey May 21, 2026
eb10bc4
fix(electron): run electron-builder under Node.js, not bun
itlackey May 21, 2026
9f74004
fix(electron): bundle deps with bun build to avoid npm workspace: error
itlackey May 22, 2026
2006c87
feat(electron): auto-update UI build on startup from GitHub releases
itlackey May 22, 2026
61e0e8c
feat(cli): use checkAndUpdateUiBuild on upgrade for backup + clean re…
itlackey May 22, 2026
9a57e77
fix(lib): cross-platform tar extraction + SHA-256 checksum verification
itlackey May 22, 2026
cb881e7
fix(wizard): fix OAuth, unblock skipping, drop embedding requirement
itlackey May 22, 2026
8a1133e
feat: Update deployment and configuration steps for OpenPalm
itlackey May 22, 2026
8c76e47
Add persistence patterns for assistant-installed tools and implement …
itlackey May 22, 2026
7803fd1
fix(setup-wizard): UX bugs, failsafe gaps, and provider/deploy reliab…
itlackey May 23, 2026
ae0ec88
chore(release+electron): idempotent tag, prerelease propagation, dev …
itlackey May 23, 2026
93ce1a4
fix(release): resolve electron-builder via require.resolve
itlackey May 23, 2026
87c644a
fix(release): embed GITHUB_TOKEN in origin URL for prepare-tag git push
itlackey May 23, 2026
8997031
chore: bump platform version to 0.11.0-beta.1
github-actions[bot] May 23, 2026
869a3f5
Revert "chore: bump platform version to 0.11.0-beta.1"
itlackey May 23, 2026
1bb7022
fix(release): prereleases (beta/rc) actually work end-to-end
itlackey May 23, 2026
5b6addd
chore: bump platform version to 0.11.0-beta.1
github-actions[bot] May 23, 2026
c0121a3
fix(release): let softprops handle all electron uploads, drop electro…
itlackey May 23, 2026
68aa9e5
fix(electron): inject OP_OPENCODE_URL into UI server env
itlackey May 23, 2026
519b1b1
feat(ui): switchable assistant endpoints
itlackey May 23, 2026
56c1315
docs(refactor): plan for auth + proxy refactor (v0.12.0)
itlackey May 23, 2026
a6c6fbe
docs(refactor): retarget plan from v0.12.0 to v0.11.0
itlackey May 23, 2026
a34e06c
refactor(phase-0): prep work for auth + proxy refactor
itlackey May 23, 2026
5c17cb2
refactor(phase-1): stream the assistant proxy; delete dead admin proxy
itlackey May 23, 2026
3052ca4
refactor(phase-2): requireAdmin is cookie-only; rename ADMIN_TOKEN → …
itlackey May 23, 2026
33f36a0
refactor(phase-3): ephemeral local OpenCode via Electron + admin-tool…
itlackey May 23, 2026
50e3cb8
refactor(phase-4): delete OP_UI_TOKEN / OP_ASSISTANT_TOKEN system
itlackey May 23, 2026
776e641
refactor(phase-5): move endpoints.json from state/ to config/
itlackey May 23, 2026
b65b48f
refactor(phase-6): HTTPS-for-remote enforcement + delete all audit ma…
itlackey May 23, 2026
d0fa384
refactor(migration): OP_UI_TOKEN → OP_UI_LOGIN_PASSWORD for existing …
itlackey May 23, 2026
343da73
fix(0.11.0): Basic-auth username; endpoint labels; navlink; window mi…
itlackey May 23, 2026
81c32c2
feat(ui): icon-only nav buttons + responsive endpoint switcher
itlackey May 23, 2026
3208c1b
fix(ui): markdown chat messages, body scroll, voice toast, voice sett…
itlackey May 23, 2026
b2bb7e1
docs(ux): design for per-endpoint session history + picker
itlackey May 23, 2026
17eb8e0
feat(chat): per-endpoint session history + session picker
itlackey May 23, 2026
af2a685
feat(chat): live SSE updates for session list
itlackey May 23, 2026
ab94be2
fix(ui): admin-page scroll, dropdown clipping, voice button gating
itlackey May 24, 2026
ba1a069
feat(voice): MediaRecorder STT + 3-engine voice picker
itlackey May 24, 2026
9431841
docs(voice): OpenPalm Voice addon design
itlackey May 24, 2026
111c28b
feat(voice): openpalm/voice container — Kokoro TTS + Whisper STT (Ope…
itlackey May 24, 2026
5c9cfa4
feat(voice): pre-bake Kokoro model into image; default voice bf_isabella
itlackey May 24, 2026
8a3de64
feat(voice): pre-bake default Whisper model into image
itlackey May 24, 2026
464dd17
chore(scripts): add ui:dev:isolated for .dev/ HMR development
itlackey May 24, 2026
d659288
fix(dev): ui:dev:isolated works end-to-end against .dev/
itlackey May 24, 2026
d403540
docs(ui): document ui:dev:isolated + .dev workflow
itlackey May 24, 2026
32c3cd3
refactor(voice): consolidate voice addon — voice/ is now the openpalm…
itlackey May 24, 2026
5e9609b
fix(dev-setup): write registry catalog to .dev/state/registry/, not .…
itlackey May 24, 2026
900343e
refactor(dev-setup): mirror .openpalm/ via rsync — single source of t…
itlackey May 24, 2026
367289a
fix(admin): surface per-service compose failures in the update response
itlackey May 24, 2026
66e2176
feat(voice): OpenPalm Voice is selectable + mic appears in supported …
itlackey May 24, 2026
0c8a6ea
chore(dev): build openpalm/voice:dev-cpu via dev-setup + drop stale o…
itlackey May 24, 2026
f917bc0
feat(voice): auto-enable + start voice addon on save with toast progress
itlackey May 24, 2026
104f6a5
fix(voice): probe with GET, not HEAD — silences 405s in voice logs
itlackey May 24, 2026
061f944
feat(import-host): restart services after import to refresh provider …
itlackey May 24, 2026
21b7cd6
chore: bump platform version to 0.11.0-beta.2
github-actions[bot] May 24, 2026
4031c2c
ci(release): widen CLI smoke-test budget to 450s
itlackey May 24, 2026
d4b01dd
feat(voice): hardware profile selector via compose profiles
itlackey May 24, 2026
1805925
ci(release): drop post-publish CLI smoke test
itlackey May 24, 2026
ac97b8f
chore: bump platform version to 0.11.0-beta.3
github-actions[bot] May 24, 2026
41226ce
fix(voice): make TTS work end-to-end on CDI hosts, with hardened env …
itlackey May 24, 2026
1709eb3
chore(voice): drop migrateVoiceVars
itlackey May 24, 2026
20392ff
fix(voice): cross-system reliability — capability probe, autoplay, im…
itlackey May 24, 2026
5a00a02
fix(install): auto-detect operator UID/GID instead of hard-coding 1000
itlackey May 24, 2026
bf34c29
fix(voice): round-2 cross-system reliability fixes from review audit
itlackey May 24, 2026
5417429
fix(release): address the 3 deferred reliability issues
itlackey May 24, 2026
41a62db
test(voice): e2e suite mirroring the manual stack-test pass
itlackey May 25, 2026
e4752ae
feat(setup-wizard): bring OpenPalm Voice flow into the wizard
itlackey May 25, 2026
7e8188f
test(setup-wizard): API + browser walkthrough e2e suites
itlackey May 25, 2026
8b640ef
fix: pre-existing test failures + product gaps surfaced by wizard e2e
itlackey May 25, 2026
0f66088
fix(setup-wizard): port-check recognises our own containers + scope-c…
itlackey May 25, 2026
4fae556
test(setup-wizard-api): compose down the wizard-installed stack in af…
itlackey May 25, 2026
222fd39
test(e2e): rename stack-dependent scripts to .manual.ts (not tests)
itlackey May 25, 2026
7fceec8
test(e2e): migrate the rest of the .pw.ts files to .manual.ts
itlackey May 25, 2026
5d85893
fix(env): close remaining host-side env-name leaks with OP_ prefix
itlackey May 25, 2026
e6e3493
refactor(stack): make guardian network-only + collapse port/URL surface
itlackey May 25, 2026
6b21bf6
fix(lib): correct two stale paths in control-plane
itlackey May 25, 2026
f1162b9
refactor: drop dead exports + stale docs after architecture audit
itlackey May 25, 2026
8fffa5d
refactor(lib): delete four dead modules
itlackey May 25, 2026
3694f2c
refactor(wizard): rip wizard-side owner-name/email plumbing
itlackey May 25, 2026
9a0deb3
fix(electron+ui): unblock audio playback + preload + guardian health
itlackey May 25, 2026
4027a4c
fix(voice): phantom MediaError on teardown surfaced as playback failed
itlackey May 25, 2026
063c3ef
chore(ui): reorder navbar — speaker before mic, drop sign-out button
itlackey May 25, 2026
6a49a9c
refactor(ui): delete dead requireAuth, barrel, results.ts; fix automa…
itlackey May 25, 2026
b451edf
refactor(channels): delete session.ts, inline forwardToGuardian, shar…
itlackey May 25, 2026
bce1713
refactor(lib): remove dead code, duplicate lock, and unexport internals
itlackey May 25, 2026
b574ecf
refactor(ui): delete dead requireAuth, barrel, results.ts; fix automa…
itlackey May 25, 2026
82b0719
refactor(cli+tools): delete service.ts, fix health-check refs, remove…
itlackey May 25, 2026
0847bb2
refactor(channels): delete session.ts, inline forwardToGuardian, shar…
itlackey May 25, 2026
aca9f35
fix(assistant-tools): resolve stash-pop conflict marker in src/index.ts
itlackey May 25, 2026
8e75036
fix(infra): S4 dockerignore paths, P1-P5 packaging, U4 setup.sh version
itlackey May 25, 2026
2196f06
fix(lib): B1/B2/B3 — version default, seed-only persona files, no-clo…
itlackey May 25, 2026
4039c2d
docs: B4/B5 — remove stale auth token refs, update wizard walkthrough
itlackey May 25, 2026
f630e6b
fix(ui): S1-S3 session token + setup auth, U1-U3/U5 UX fixes
itlackey May 25, 2026
3bdd028
fix(lib): B1/B2/B3 — version default, seed-only persona files, no-clo…
itlackey May 25, 2026
f9c2aa6
fix(infra): S4 dockerignore paths, P1-P5 packaging, U4 setup.sh version
itlackey May 25, 2026
c58a66d
docs: B4/B5 — remove stale auth token refs, update wizard walkthrough
itlackey May 25, 2026
06868fb
docs: add release-blockers-0.11.0 audit findings
itlackey May 25, 2026
1c29690
chore: bump to 0.11.0-beta.4
itlackey May 25, 2026
b25d986
fix(lib): defer package.json read in resolveAssetVersion — crash in a…
itlackey May 25, 2026
1ed45a6
style(chat): remove max-width and center margin from chat layout
itlackey May 25, 2026
973c390
fix(electron): embed UI build in AppImage extraResources, resolve fro…
itlackey May 25, 2026
152e23b
fix(electron): embed ui build in extraResources, prefer local over ca…
itlackey May 25, 2026
4f20ad5
fix(electron): prefer disk ui if newer than bundled, fallback to extr…
itlackey May 25, 2026
8cc91a2
chore: bump to 0.11.0-beta.5
itlackey May 25, 2026
8de0188
style(ui): adjust layout and styling in ChatInput and Navbar components
itlackey May 26, 2026
dc3d813
fix(release): close all 0.11.0 pre-release blockers
itlackey May 26, 2026
fe9fb3f
chore: bump to 0.11.0-beta.6
itlackey May 26, 2026
ce670d9
fix(release): stamp electron + setup scripts to 0.11.0-beta.6
itlackey May 26, 2026
edade20
feat(admin): version management panel + Electron image tag default
itlackey May 26, 2026
b04b3d6
fix(pre-release): address audit findings before stable cut
itlackey May 26, 2026
970420a
fix(core-assets): protect opencode.jsonc from upgrade overwrites
itlackey May 26, 2026
2340386
chore: bump to 0.11.0-beta.7
itlackey May 26, 2026
71ab3aa
fix(setup): suppress false port-conflict when wizard runs on admin port
itlackey May 26, 2026
bb0a8df
chore: bump to 0.11.0-beta.8
itlackey May 26, 2026
0fa3175
fix(tests): fix 124 failing UI unit tests after session-store refactor
itlackey May 26, 2026
a4e0f09
chore: bump to 0.11.0-beta.9
itlackey May 26, 2026
8da5004
chore: bump to 0.11.0-beta.10
itlackey May 26, 2026
55471a1
Add comprehensive tests for UI components and server routes
itlackey May 27, 2026
c683d52
feat: add admin tools plugin for OpenCode with Docker Compose commands
itlackey May 27, 2026
552b589
chore: bump platform version to 0.11.0-beta.11
github-actions[bot] May 27, 2026
89d099a
fix: setup wizard shown on upgrade + voice GPU profiles hidden
itlackey May 27, 2026
ef371d1
fix: setup wizard and voice GPU selection for users with prior installs
itlackey May 27, 2026
1e23330
fix(electron): correct version comparison for pre-release tags in UI …
itlackey May 27, 2026
f69069b
chore: bump @openpalm/lib peer range to >=0.11.0-beta.11
itlackey May 27, 2026
ae3265c
feat(admin): enhance UI version management and release fetching
itlackey May 28, 2026
58e7315
fix: update setup completion logic to require explicit OP_SETUP_COMPL…
itlackey May 28, 2026
45012f7
feat(setup): enhance voice capabilities and Ollama integration
itlackey May 28, 2026
92e5075
feat: Enhance addon management and profile handling
itlackey May 29, 2026
3d0c8cf
refactor: move stack secrets to file-based grants
itlackey May 29, 2026
0c228fc
Refactor provider management and import functionality
itlackey May 30, 2026
56d228d
Refactor rollback and setup processes; update addon handling
itlackey May 30, 2026
33287e5
Refactor stack configuration management
itlackey May 30, 2026
b891764
Refactor OpenPalm directory structure: consolidate state and cache paths
itlackey May 30, 2026
5f8a137
WIP more skeleton cleaning
itlackey May 30, 2026
54ecd07
Add empty addons section to stack.yml; remove start.sh; add .gitkeep …
itlackey May 30, 2026
82e072d
Refactor directory structure: replace 'cache' and 'state' with 'data'…
itlackey May 30, 2026
e23e1b2
Rename OP_HOME/stash to OP_HOME/knowledge
itlackey May 30, 2026
8e5c222
Add openpalm.sh / openpalm.ps1 power-user helper scripts
itlackey May 30, 2026
2cab11b
Move auth.json to config/stack/ and share it with the guardian
itlackey May 30, 2026
551a289
Ship OpenCode in the guardian with config/guardian as /etc/opencode
itlackey May 30, 2026
8178c62
Add opt-in content validation to the guardian
itlackey May 30, 2026
a230369
Update architecture docs and fix alignment gaps
itlackey May 31, 2026
9e05210
chore: bump platform version to 0.11.0-beta.12
github-actions[bot] Jun 1, 2026
d05f051
fix(assistant): COPY AGENTS.md from repo root — core/assistant/AGENTS…
itlackey Jun 1, 2026
6e7a8d2
fix: complete stash→knowledge / state→data refactor sweep
itlackey Jun 1, 2026
bcddb0d
fix: complete stash/state/cache→knowledge/data sweep in docs and scripts
itlackey Jun 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 7 additions & 7 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@ node_modules
.opencode
.state
# core/ layout (post-refactor)
core/admin/node_modules
core/admin/.svelte-kit
core/admin/build
core/guardian/node_modules
# channels
channels/chat/node_modules
Expand All @@ -23,12 +20,15 @@ admin/.svelte-kit
admin/build
docs/
*.md
!AGENTS.md
!core/**/*.md
!packages/**/*.md
!.openpalm/**/*.md
# Vault secrets — never send to Docker build context
.openpalm/vault/**/stack.env
.openpalm/vault/**/guardian.env
.openpalm/vault/**/user.env
# Secrets — never send to Docker build context
# Stack/channel secrets (OP_HOME/config/stack/)
.openpalm/config/stack/*.env
# User secrets (OP_HOME/knowledge/vaults/)
.openpalm/knowledge/vaults/user.env
# Auth tokens
.openpalm/vault/**/auth.json
.openpalm/vault/**/managed.env
86 changes: 41 additions & 45 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,35 +19,34 @@ Repo layout convention:
```bash
./scripts/dev-setup.sh --seed-env

cd packages/admin
bun install
bun run dev
cd packages/ui
npm install
npm run dev
```

Admin UI + API runs on `http://localhost:8100`.

From the repo root, convenience scripts are available:

```bash
bun run admin:dev # packages/admin dev server
bun run admin:check # svelte-check + TypeScript
bun run ui:dev # packages/ui dev server
bun run ui:check # svelte-check + TypeScript
bun run guardian:dev # core/guardian server
bun run guardian:test # guardian tests
bun run sdk:test # packages/channels-sdk tests
bun run cli:test # packages/cli tests
bun run channel:chat:dev # chat channel dev server
bun run channel:api:dev # api channel dev server
bun run channel:api:dev # api channel dev server (also serves the chat addon when CHANNEL_ID=chat)
bun run channel:discord:dev # discord channel dev server
bun run dev:setup # seed .dev/ dirs and configs
bun run dev:stack # start dev stack (pull images)
bun run dev:build # start dev stack (build from source)
bun run test # all non-admin tests (sdk, guardian, channels, cli)
bun run check # admin:check + sdk:test
bun run test # all non-UI tests (sdk, guardian, channels, cli)
bun run check # ui:check + sdk:test
```

`dev:stack` pulls pre-built images from the configured container registries — use it for quick starts and testing admin apply flows. `dev:build` compiles all images from local source using `compose.dev.yml` — use it when developing services or testing Dockerfile changes.

`dev-setup.sh --seed-env` seeds `.dev/vault/user/user.env` and `.dev/vault/stack/stack.env` and sets the `OP_*_HOME` variables to absolute `.dev/` paths. The UI dev server picks these up automatically — no additional environment setup needed.
`dev-setup.sh --seed-env` seeds `.dev/knowledge/vaults/user.env` and `.dev/config/stack/stack.env` and sets the `OP_*_HOME` variables to absolute `.dev/` paths. The UI dev server picks these up automatically — no additional environment setup needed.

## 1. Clone and bootstrap

Expand All @@ -60,18 +59,18 @@ bun run dev:setup # Creates .dev/ dirs, seeds vault env files

`dev:setup` runs [`scripts/dev-setup.sh --seed-env`](../scripts/dev-setup.sh), which:

- Creates the `.dev/config`, `.dev/vault`, `.dev/data`, and `.dev/logs` directories
- Seeds `.dev/vault/user/user.env` and `.dev/vault/stack/stack.env` with dev-safe defaults
- Creates the `.dev/config`, `.dev/knowledge`, `.dev/state`, and `.dev/logs` directories
- Seeds `.dev/knowledge/vaults/user.env` and `.dev/config/stack/stack.env` with dev-safe defaults

After setup, edit `.dev/vault/user/user.env` to add your LLM provider keys.
After setup, edit `.dev/knowledge/vaults/user.env` to add your LLM provider keys.

## 2. Run the admin UI (no Docker needed)
## 2. Run the UI (no Docker needed)

```bash
cd packages/admin && npm install && npm run dev
cd packages/ui && npm install && npm run dev
```

Admin UI + API starts on `http://localhost:8100`. The dev server reads `.env` (copy from [`.env.example`](../packages/admin/.env.example)) and the seeded `.dev/` paths automatically.
UI + API starts on `http://localhost:8100`. The dev server reads `.env` and the seeded `.dev/` paths automatically.

## 3. Start the full stack

Expand All @@ -82,15 +81,15 @@ Two options depending on what you're working on:
| `bun run dev:stack` | Pulls pre-built images from the configured container registries. Fast start for testing admin workflows. |
| `bun run dev:build` | Builds all images from local source via [`compose.dev.yml`](../compose.dev.yml). Use when developing services or testing Dockerfile changes. |

Both scripts read env files from `.dev/vault/`.
Both scripts read env files from `.dev/config/stack/` and `.dev/knowledge/vaults/`.

## 4. Run tests and checks

```bash
# Type check the admin UI
bun run admin:check
# Type check the UI
bun run ui:check

# Non-admin tests (sdk, guardian, channels, cli)
# Non-UI tests (sdk, guardian, channels, cli)
bun run test

# Both of the above
Expand All @@ -100,20 +99,19 @@ bun run check
bun run guardian:test # Guardian security tests
bun run sdk:test # Channels SDK unit tests
bun run cli:test # CLI tests
bun run admin:test:unit # Admin Vitest (unit + browser components)
bun run admin:test:e2e # Admin Playwright integration tests (no-skip enforced locally)
bun run admin:test:e2e:mocked # Admin Playwright mocked browser contract tests
bun run ui:test:unit # UI Vitest (unit + browser components)
bun run ui:test:e2e # UI Playwright integration tests (no-skip enforced locally)
bun run ui:test:e2e:mocked # UI Playwright mocked browser contract tests
```

> Admin uses Vitest and Playwright, not Bun's test runner. Use `bun run test` (not bare `bun test`) from the repo root — the script filters to non-admin directories.
> UI uses Vitest and Playwright, not Bun's test runner. Use `bun run test` (not bare `bun test`) from the repo root — the script filters to non-UI directories.

## 5. Run individual services

```bash
bun run admin:dev # Admin SvelteKit dev server (:8100)
bun run ui:dev # UI SvelteKit dev server (:8100)
bun run guardian:dev # Guardian Bun server
bun run channel:chat:dev # Chat channel
bun run channel:api:dev # API channel
bun run channel:api:dev # API channel (CHANNEL_ID=chat reuses this image to serve the chat addon)
bun run channel:discord:dev # Discord channel
```

Expand All @@ -123,25 +121,24 @@ All scripts are defined in the root [`package.json`](../package.json):

| Script | Description |
|--------|-------------|
| `bun run admin:dev` | Admin dev server (packages/admin) |
| `bun run admin:build` | Admin production build |
| `bun run admin:check` | svelte-check + TypeScript |
| `bun run admin:test` | Vitest + Playwright (requires build) |
| `bun run admin:test:unit` | Vitest only (CI-friendly) |
| `bun run admin:test:e2e` | Playwright integration only (no browser route mocks) |
| `bun run admin:test:e2e:mocked` | Playwright mocked browser contracts |
| `bun run ui:dev` | UI dev server (packages/ui) |
| `bun run ui:build` | UI production build |
| `bun run ui:check` | svelte-check + TypeScript |
| `bun run ui:test` | Vitest + Playwright (requires build) |
| `bun run ui:test:unit` | Vitest only (CI-friendly) |
| `bun run ui:test:e2e` | Playwright integration only (no browser route mocks) |
| `bun run ui:test:e2e:mocked` | Playwright mocked browser contracts |
| `bun run guardian:dev` | Guardian server |
| `bun run guardian:test` | Guardian tests |
| `bun run sdk:test` | Channels SDK tests |
| `bun run channel:chat:dev` | Chat channel dev server |
| `bun run channel:api:dev` | API channel dev server |
| `bun run channel:api:dev` | API channel dev server (also serves chat addon via `CHANNEL_ID=chat`) |
| `bun run channel:discord:dev` | Discord channel dev server |
| `bun run cli:test` | CLI tests |
| `bun run dev:setup` | Seed `.dev/` dirs and configs |
| `bun run dev:stack` | Start dev stack (pull images) |
| `bun run dev:build` | Start dev stack (build from source) |
| `bun run test` | All non-admin tests |
| `bun run check` | admin:check + sdk:test |
| `bun run test` | All non-UI tests |
| `bun run check` | ui:check + sdk:test |

## Dev directory layout

Expand All @@ -150,8 +147,8 @@ Dev mode mirrors the production [filesystem contract](../docs/technical/foundati
```
.dev/
├── config/ # User-editable, non-secret configuration
├── vault/ # Secrets: vault/user/user.env, vault/stack/stack.env
├── data/ # Service-managed persistent data
├── knowledge/ # AKM knowledge (skills, vaults, agents)
├── state/ # Service-managed persistent data
└── logs/ # Consolidated audit/debug output
```

Expand All @@ -167,23 +164,22 @@ See [docs/technical/foundations.md](../docs/technical/foundations.md) for the fu
bun run guardian:test # Guardian security tests
```

3. **Docker builds** must follow the patterns in [docs/technical/docker-dependency-resolution.md](../docs/technical/docker-dependency-resolution.md) (no Bun in admin Docker, no symlink-based node_modules).
3. **Docker builds** — Guardian and channel Dockerfiles must install `packages/channels-sdk` deps with `bun install --production` after copying sdk source (no symlink-based node_modules). UI is a host binary — no Docker build. The assistant **and guardian** images ship the OpenCode binary; keep `OPENCODE_VERSION` in lockstep between `core/assistant/Dockerfile` and `core/guardian/Dockerfile`.
4. **No secrets** in client bundles or logs.
5. **No new dependencies** that duplicate a built-in Bun or platform capability.

## npm Package Releases

OpenPalm publishes npm packages on an independent release cycle from Docker images and the platform. Each publishable package (`packages/channels-sdk`, `packages/assistant-tools`, `packages/channel-*`) has its own GitHub Actions workflow that publishes to npm when its version field changes on `main`. Platform packages (`packages/admin`, `core/guardian`, `packages/cli`) share a coordinated version managed by `scripts/release.sh`.
OpenPalm publishes npm packages on an independent release cycle from Docker images and the platform. Each publishable package (`packages/channels-sdk`, `packages/assistant-tools`, `packages/channel-*`) has its own GitHub Actions workflow that publishes to npm when its version field changes on `main`. Platform packages (`packages/ui`, `core/guardian`, `packages/cli`) share a coordinated version managed by `scripts/release.sh`.

## Key docs for contributors

| Document | What you'll find |
|----------|-----------------|
| [docs/technical/core-principles.md](../docs/technical/core-principles.md) | **Must-read.** Security invariants, filesystem contract, architectural rules |
| [docs/technical/code-quality-principles.md](../docs/technical/code-quality-principles.md) | TypeScript strictness, module design, error handling |
| [docs/technical/docker-dependency-resolution.md](../docs/technical/docker-dependency-resolution.md) | **Mandatory.** How Docker builds resolve deps across the monorepo |
| [docs/technical/api-spec.md](../docs/technical/api-spec.md) | Admin API endpoint contract |
| [docs/technical/api-spec.md](../docs/technical/api-spec.md) | API endpoint contract |
| [docs/technical/bunjs-rules.md](../docs/technical/bunjs-rules.md) | Bun-specific patterns (guardian, channels, SDK) |
| [docs/technical/sveltekit-rules.md](../docs/technical/sveltekit-rules.md) | SvelteKit patterns (admin UI) |
| [docs/technical/sveltekit-rules.md](../docs/technical/sveltekit-rules.md) | SvelteKit patterns (UI) |
| [docs/community-channels.md](../docs/community-channels.md) | BaseChannel SDK for building custom channel adapters |
| [docs/technical/environment-and-mounts.md](../docs/technical/environment-and-mounts.md) | All environment variables and volume mounts |
8 changes: 4 additions & 4 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ We follow coordinated disclosure — we'll work with you on timing before any de

| Version | Supported |
|---------|-----------|
| 0.9.x (current RC) | ✅ Active development |
| < 0.9.0 | ❌ No backports |
| 0.11.x (current) | ✅ Active development |
| < 0.11.0 | ❌ No backports |

Once v1.0.0 ships, this table will be updated with a formal support window.

Expand All @@ -37,11 +37,11 @@ OpenPalm uses defense-in-depth with multiple independent layers. For the full br

Key boundaries:

- **Network isolation** — Caddy reverse proxy restricts admin access to LAN by default; all inter-service traffic stays on private Docker networks.
- **Network isolation** — Admin and assistant services bind to localhost by default; all inter-service traffic stays on private Docker networks.
- **Signed messages** — Every channel message is HMAC-SHA256 signed and verified by the guardian before reaching the assistant.
- **Rate limiting** — Per-user (120 req/min) and per-channel (200 req/min) throttling with replay detection.
- **Assistant isolation** — The assistant container has no Docker socket access. All stack operations go through the authenticated admin API.
- **Docker socket proxy** — Only the admin container communicates with Docker, and only through a filtered socket proxy (Tecnativa) — never a direct socket mount.
- **Host-only admin** — The admin process runs on the host and accesses Docker directly; containers cannot reach it via the network.
- **Secret protection** — Secrets are never stored in memory. The admin token is required for all non-health API endpoints after setup completes.

## Scope
Expand Down
11 changes: 5 additions & 6 deletions .github/release-package-groups.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,16 @@
"platformManifests": [
"package.json",
"packages/lib/package.json",
"packages/admin/package.json",
"packages/ui/package.json",
"core/guardian/package.json",
"packages/cli/package.json",
"packages/channels-sdk/package.json"
"packages/channels-sdk/package.json",
"packages/electron/package.json",
"packages/electron/admin-tools/package.json"
],
"independentNpmPackages": [
"packages/channel-api",
"packages/channel-discord",
"packages/channel-slack",
"packages/channel-voice",
"packages/assistant-tools",
"packages/admin-tools"
"packages/channel-slack"
]
}
4 changes: 2 additions & 2 deletions .github/roadmap/0.10.0/fs-layout.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@
- memory - mounts to memory container data directory
- ... - each container can have its own subdirectory(ies) for specific data storage needs
- stash - mounts to assistant ~/.akm
- workspace - mounts to assistant,admin /work directory
- workspace - mounts to assistant/admin workspace directory
- logs
- various log files for assistant, admin, scheduler and memory containers
- backups - used for the rollback and long term backups

$HOME/.cache/openpalm
- assets - core assets from report
- registry - mounts to assistant,admin /cache/registry
- registry - mounts to assistant,admin /cache/registry
12 changes: 6 additions & 6 deletions .github/roadmap/0.10.0/fs-mounts-refactor.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,10 @@ $HOME/.openpalm/ Root of all OpenPalm state
│ ├── assistant/ Mounts to assistant at $HOME/.opencode
│ ├── admin/ Mounts to admin at $HOME/.node (or similar)
│ ├── memory/ Mounts to memory at /data
│ ├── guardian/ Mounts to guardian at /app/data
│ ├── guardian/ Mounts to guardian at /opt/openpalm/guardian
│ ├── caddy/ Caddy TLS certs, runtime config, Caddyfile
│ ├── stash/ Mounts to assistant at ~/.akm
│ └── workspace/ Mounts to assistant, admin at /work
│ └── workspace/ Mounts to assistant at /work
└── logs/ Audit and debug logs
├── guardian-audit.log
Expand Down Expand Up @@ -419,12 +419,12 @@ All host paths are relative to `~/.openpalm/` unless noted.
| Host Path | Container Path | Mode | Purpose |
|-----------|---------------|------|---------|
| `config/` | `/etc/openpalm` | ro | Non-secret stack config, extensions |
| `config/assistant/` | `/home/opencode/.config/opencode` | rw | User OpenCode extensions |
| `config/assistant/` | `/etc/opencode` | rw | User OpenCode extensions |
| `vault/user.env` | `/etc/openpalm/user.env` | ro | Hot-reload LLM keys and provider config |
| `data/assistant/` | `/home/opencode/.opencode` | rw | OpenCode data + system config |
| `data/stash/` | `/home/opencode/.akm` | rw | AKM shared stash |
| `data/workspace/` | `/work` | rw | Working directory |
| `logs/opencode/` | `/home/opencode/.local/state/opencode` | rw | OpenCode state/logs |
| `state/assistant/` | `/home/opencode` | rw | OpenCode home/state/logs |
| `~/.cache/openpalm/registry/` | `/cache/registry` | rw | Cached registry index |

**Admin:**
Expand All @@ -441,8 +441,8 @@ All host paths are relative to `~/.openpalm/` unless noted.

| Host Path | Container Path | Mode | Purpose |
|-----------|---------------|------|---------|
| `data/guardian/` | `/app/data` | rw | Guardian runtime data |
| `logs/` | `/app/audit` | rw | Audit log output |
| `data/guardian/` | `/opt/openpalm/guardian` | rw | Guardian runtime data |
| `state/logs/` | `/opt/openpalm/logs` | rw | Audit log output |

**Memory:**

Expand Down
2 changes: 2 additions & 0 deletions .github/roadmap/0.10.0/knowledge-system-roadmap.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# OpenPalm 0.10.0 — Knowledge System Roadmap (Revised)

> **Superseded by [#382](https://github.com/itlackey/openpalm/issues/382):** The OpenViking-based knowledge system has been cancelled. Knowledge browsing is now covered by `akm wiki` + `akm search --type knowledge` once the AKM migration lands. This document is preserved for historical context only; do not implement anything described here.

> **Scope Update (2026-03-18):** Agent review consensus (3/5 agents) narrowed the 0.10.0 scope to **Priority 1 only** (Phases 1A-1D: OpenViking as addon + assistant tools). Priorities 2-4 (MCP server, eval framework, MemRL feedback loop) are deferred to 0.11.0 and are included below only as "deferred" context. See `../0.11.0/knowledge-system.md` for the deferred work.
>
> **Filesystem context:** This plan uses the `~/.openpalm/` single-root layout defined in [fs-mounts-refactor.md](fs-mounts-refactor.md). The old three-tier XDG references (`DATA_HOME`, `CONFIG_HOME`, `STATE_HOME`) are replaced by subdirectories under `~/.openpalm/`.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Issue #298 - Add OpenViking integration

> **Superseded by [#382](https://github.com/itlackey/openpalm/issues/382):** The OpenViking integration has been cancelled. Knowledge browsing is now covered by `akm wiki` + `akm search --type knowledge` once the AKM migration lands. This plan is preserved for historical context only; do not implement anything described here.

## Scope

- Deliver only roadmap Phases 1A-1D for 0.10.0: OpenViking as an optional component, assistant-side Viking tools, session-memory hooks, and token-budget utilities.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ The following are intentionally out of scope for #315 and should not be smuggled
- resource group;
- ACA environment;
- storage account;
- Azure Files shares for config/data/work;
- Azure Files shares for config/data/workspace;
- Azure Container Registry dependency inputs or documented assumption that images are public/pre-pushed;
- Key Vault;
- user-assigned managed identity.
Expand Down
Loading
Loading