Merge remote-tracking branch 'origin/ebcc53bc3dd5d01b3948cc60c2500988e6446acd' into ebcc53bc3d
This commit is contained in:
@@ -153,8 +153,8 @@ related:
|
||||
- [ ] Песочный человек
|
||||
- [ ] Киберслав
|
||||
- [ ] Неприличные соседи
|
||||
- [ ] ❓ Kick Ass
|
||||
- [ ] ❓ Вуаеристы
|
||||
- [ ] Kick Ass
|
||||
- [ ] Вуаеристы
|
||||
- [ ] Я буду жить
|
||||
- [ ] 🗓️ Дорогой Санта (2024/2011)
|
||||
- [ ] 🧟♀️ Zombieland
|
||||
@@ -216,6 +216,9 @@ related:
|
||||
- Аллея кошмаров (2021) ★7.0
|
||||
- Аллея кошмаров (1947) ★7.2
|
||||
- Nightmare Alley (2010) ★3.2
|
||||
- Аллея кошмаров (2021) ★7.0
|
||||
- Аллея кошмаров (1947) ★7.2
|
||||
- Nightmare Alley (2010) ★3.2
|
||||
- [ ] The kill room
|
||||
- [ ] The burial
|
||||
- [ ] Past lives
|
||||
@@ -241,6 +244,9 @@ related:
|
||||
- Останься со мной (1986) ★7.8
|
||||
- Stand By Me (2021) ★8.2
|
||||
- Stand by Me (2016) ★8.4
|
||||
- Останься со мной (1986) ★7.8
|
||||
- Stand By Me (2021) ★8.2
|
||||
- Stand by Me (2016) ★8.4
|
||||
- [ ] Вуди вудпекер едет в лагерь
|
||||
- [ ] 🗓️ 12 обезьян (1995/2015)
|
||||
- [ ] Вокзал для двоих
|
||||
@@ -249,7 +255,7 @@ related:
|
||||
- [ ] Я не киллер
|
||||
- [ ] Leave the world behind
|
||||
- [ ] Civil war
|
||||
- [ ] Подземелье вкусностей
|
||||
- [ ] ⬇️ Подземелье вкусностей
|
||||
- [ ] Великолепная афера
|
||||
- [ ] Исчезновение 1988
|
||||
- [ ] Секс и дзен
|
||||
@@ -415,14 +421,17 @@ related:
|
||||
- Фарго (1996) ★7.8
|
||||
- Фарго (2014) ★8.3
|
||||
- Уэллс Фарго (1937) ★5.5
|
||||
- Фарго (1996) ★7.8
|
||||
- Фарго (2014) ★8.3
|
||||
- Уэллс Фарго (1937) ★5.5
|
||||
- [ ] Уолл стрит: деньги не спят
|
||||
- [ ] Место встречи изменить нельзя
|
||||
- [ ] ⬇️ Место встречи изменить нельзя
|
||||
- [ ] ❓ 17 мгновений весны
|
||||
- [ ] Эпидемия
|
||||
- [x] Диктатор
|
||||
- [x] Борат
|
||||
- [x] Бруно
|
||||
- [ ] Хищник
|
||||
- [ ] ⬇️ Хищник
|
||||
- [ ] ⬇️Области тьмы
|
||||
- [ ] Курасава скрытая крепость
|
||||
- [ ] особенности национальной политики
|
||||
@@ -644,7 +653,7 @@ related:
|
||||
- [ ] Принцесса Мононоке
|
||||
- [ ] ⬇️ Твое имя
|
||||
- [ ] ⬇️ Унесённые призраками
|
||||
- [ ] Ходячий замок
|
||||
- [ ] ⬇️ Ходячий замок
|
||||
|
||||
## Новинки👎
|
||||
- [ ] [Супермен](https://www.kinopoisk.ru/film/997647/) (2025) IMDb 7.0 KP 6.7
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
---
|
||||
date: 2026-05-29
|
||||
status: complete
|
||||
---
|
||||
# Wiki Curation — 2026-05-29
|
||||
|
||||
## Done
|
||||
|
||||
- **Conflict scan:** No git conflict markers in ~/obsidian/ ✅
|
||||
- **Previous run (2026-05-28):** status=complete, no Unfinished ✅
|
||||
- **Orientation:** SCHEMA.md, index.md (50 pages), log.md (last 30 lines)
|
||||
- **Sessions:** No sessions for 2026-05-29 (cron run itself — not crystallizable)
|
||||
- **Vault changes since 2026-05-28 02:00:**
|
||||
- `family/how-to/magic4pc-webos.md` — detailed WebOS TV app: build
|
||||
(--openssl-legacy-provider pitfall), deploy.sh flow, auto-launch
|
||||
logic (boot/wake run-state files), Back+keyboard WebOS quirk
|
||||
- `family/how-to/tv-luna-send.md` + `htpc-webos-luna.md` — luna-send
|
||||
SSH workaround (`script(1)` PTY trick), wrapper script location and
|
||||
usage, subscribe-mode limitation
|
||||
- `family/how-to/htpc-migration-plan.md` — EmuDeck Flatpak save paths
|
||||
table (8 emulators), ROM symlink structure from Data partition,
|
||||
non-Steam Windows games library paths
|
||||
- `family/projects/aide-kraken-backend.md` — Hermes Kraken as
|
||||
OpenAI-compatible API backend for Android Aide app via Cloudflare
|
||||
Tunnel (created 2026-05-13, newly surfaced)
|
||||
- `family/schedule/vacation-july-august-2026.md` — personal schedule,
|
||||
skipped (out of scope)
|
||||
- **Inbox:** ~/obsidian/wiki/raw/inbox/ empty (processed/ has 1 old file) ✅
|
||||
|
||||
### Crystallization — new pages
|
||||
|
||||
**tech/tv-luna-send.md** (new) — WebOS TV luna-send via SSH
|
||||
- Sources: `family/how-to/tv-luna-send.md` + `family/how-to/htpc-webos-luna.md`
|
||||
- `script(1)` PTY workaround, `tv-luna-send.sh` wrapper usage, common
|
||||
Luna URIs, subscribe-mode limitation
|
||||
|
||||
**tech/hermes-kraken-api.md** (new) — Hermes Kraken OpenAI API server
|
||||
- Source: `family/projects/aide-kraken-backend.md`
|
||||
- Architecture diagram (Aide → CF Tunnel → hermes-kraken:8642), config,
|
||||
container restart command, Aide Android setup, Cloudflare tunnel
|
||||
reconfiguration
|
||||
|
||||
### Crystallization — updated pages
|
||||
|
||||
**tech/htpc-magic4pc.md** (updated) — WebOS TV app side added
|
||||
- WebOS build section (webpack Node 25 pitfall)
|
||||
- deploy.sh flow + IPK packaging pitfalls
|
||||
- Auto-launch logic (boot/wake run-state files, init.d script)
|
||||
- Back key + system keyboard quirk (`_kbWasOpen` fix)
|
||||
- Added `[[tech/tv-luna-send]]` cross-link
|
||||
|
||||
**tech/htpc-steam-emulators.md** (updated) — EmuDeck paths added
|
||||
- Full EmuDeck Flatpak save paths table (8 emulators)
|
||||
- ROM symlink commands from Data partition to ~/Emulation/roms/
|
||||
- Non-Steam Windows games library paths
|
||||
|
||||
### Synthesis (MANDATORY)
|
||||
|
||||
**concepts/hermes-deployment-patterns.md** (new)
|
||||
- Co-occurrence: `hermes-eagle-mac` + `hermes-docker-kraken` + new
|
||||
`hermes-kraken-api` = 3 Hermes deployment pages, no synthesis existed
|
||||
- Three models compared: Eagle native (claude-proxy, launchd, Zulip
|
||||
transport), Kraken Docker (docker run, no compose), Kraken API server
|
||||
(OpenAI-compat endpoint, Cloudflare Tunnel, mobile clients)
|
||||
- Added backlinks from hermes-docker-kraken + hermes-eagle-mac
|
||||
|
||||
### Navigation updated
|
||||
|
||||
- `index.md`: 3 entries added (tv-luna-send, hermes-kraken-api,
|
||||
hermes-deployment-patterns); count 50→53; date bumped to 2026-05-29
|
||||
- `log.md`: entry appended
|
||||
|
||||
## Validation fixes
|
||||
|
||||
All 5 new/modified wiki pages passed pre-commit validation checks:
|
||||
- NO_FRONTMATTER: ✅
|
||||
- BARE_MULTI_LINK in related: ✅ (all YAML lists, no inline multi-links)
|
||||
- WIKILINK_IN_FIELD: ✅
|
||||
- VARIATION_SELECTOR: ✅
|
||||
- TITLE_LOOKS_LIKE_SLUG: ✅ (all titles human-readable)
|
||||
- ALIASES_MISSING_BILINGUAL: ✅ (no aliases fields on new pages)
|
||||
|
||||
No fixes needed post-validation.
|
||||
|
||||
Also updated hermes-docker-kraken.md and hermes-eagle-mac.md for
|
||||
cross-links — both passed frontmatter validation.
|
||||
|
||||
## Unresolved conflicts
|
||||
|
||||
(none)
|
||||
|
||||
## Unfinished
|
||||
|
||||
(none)
|
||||
|
||||
## Stats
|
||||
|
||||
- Conflicts resolved: 0
|
||||
- Inbox processed: 0 (empty)
|
||||
- Sessions crystallized: 0 / 0 checked (no sessions today)
|
||||
- Pages created: 3 (tv-luna-send, hermes-kraken-api,
|
||||
hermes-deployment-patterns)
|
||||
- Pages updated: 4 (htpc-magic4pc, htpc-steam-emulators,
|
||||
hermes-docker-kraken, hermes-eagle-mac)
|
||||
- Synthesis pages created: 1 (hermes-deployment-patterns)
|
||||
- Lint issues: 0
|
||||
- Validation issues fixed: 0
|
||||
@@ -0,0 +1,82 @@
|
||||
---
|
||||
title: Hermes Deployment Patterns
|
||||
created: '2026-05-29'
|
||||
updated: '2026-05-29'
|
||||
type: concept
|
||||
namespace: personal
|
||||
tags: [hermes, architecture, agent, eagle, kraken, infra]
|
||||
sources: []
|
||||
confidence: medium
|
||||
related:
|
||||
- "[[tech/hermes-eagle-mac]]"
|
||||
- "[[tech/hermes-docker-kraken]]"
|
||||
- "[[tech/hermes-kraken-api]]"
|
||||
- "[[personal-os-architecture]]"
|
||||
---
|
||||
|
||||
# Hermes Deployment Patterns
|
||||
|
||||
Three distinct ways Hermes runs in the Personal OS ecosystem. Each serves
|
||||
a different access model and client type.
|
||||
|
||||
## Pattern 1: Eagle Native (Mac M4)
|
||||
|
||||
**Where:** Eagle Mac M4 Max, native process (not Docker)
|
||||
**Transport:** Zulip (Docker)
|
||||
**Model backend:** `openclaw-claude-proxy` on port 3456 — wraps
|
||||
`claude --print` as an OpenAI-compatible endpoint, preserving tool_use.
|
||||
**Autostart:** launchd (`ai.claude-proxy.plist`)
|
||||
|
||||
**Why native:** Mac file system access, MCP tools (obsidian-mcp), and the
|
||||
cron wiki-curation job all need full host access. Docker would require
|
||||
volume mounts for every integration.
|
||||
|
||||
**Key pitfall:** `claude-proxy` wrapper script must `source ~/.hermes/.env`
|
||||
explicitly — launchd does not inherit login session env. See
|
||||
[[tech/hermes-eagle-mac]].
|
||||
|
||||
## Pattern 2: Kraken Docker (RPi5)
|
||||
|
||||
**Where:** Kraken RPi5, `docker run` (not compose)
|
||||
**Transport:** Zulip (same instance or separate)
|
||||
**Model backend:** Gemini or OpenRouter via Hermes gateway
|
||||
**Autostart:** `--restart unless-stopped` on the container
|
||||
|
||||
**Why docker run, not compose:** explicit restart behavior; avoids accidental
|
||||
`docker compose down` wipes. Config volume: `~/.hermes` on Kraken host.
|
||||
|
||||
See [[tech/hermes-docker-kraken]].
|
||||
|
||||
## Pattern 3: Kraken API Server (OpenAI-compat)
|
||||
|
||||
**Where:** Kraken RPi5, same hermes-kraken container
|
||||
**Transport:** HTTPS via Cloudflare Tunnel (`kraken.qentra.top`)
|
||||
**Model backend:** Gemini / OpenRouter (same gateway)
|
||||
**Clients:** Android Aide app (BYOK → Custom Endpoint), any OpenAI SDK
|
||||
|
||||
**Why Cloudflare Tunnel:** no port-forwarding on home router required.
|
||||
The tunnel terminates at cloudflared running with `network_mode: host`,
|
||||
hitting `localhost:8642` directly.
|
||||
|
||||
See [[tech/hermes-kraken-api]].
|
||||
|
||||
## Comparison
|
||||
|
||||
| Dimension | Eagle Native | Kraken Docker | Kraken API |
|
||||
|-----------|-------------|---------------|-----------|
|
||||
| Model | claude-sonnet via proxy | Gemini/ORouter | Gemini/ORouter |
|
||||
| Transport | Zulip | Zulip | HTTPS REST |
|
||||
| Clients | Cron, MCP tools | Zulip bot clients | Mobile / OpenAI SDK |
|
||||
| External access | No | No | Yes (CF Tunnel) |
|
||||
| MCP/tools | Full (host access) | Docker volumes | Not applicable |
|
||||
| Rate limits | Claude OAuth (proxy workaround) | API keys | API keys |
|
||||
|
||||
## Design Principle
|
||||
|
||||
Hermes deployments follow the client's access model:
|
||||
- **Interactive/tool-heavy** → Eagle native (full host, MCP)
|
||||
- **Always-on background** → Kraken Docker (low-power, 24/7)
|
||||
- **Mobile / external** → Kraken API server (HTTPS, standard protocol)
|
||||
|
||||
This avoids running a single large instance with conflicting requirements.
|
||||
See [[personal-os-architecture]] for the full system overview.
|
||||
@@ -33,8 +33,13 @@ on Proton 8.0.
|
||||
- **Rayman Origins** (fixed 2026-05-23 — GE-Proton10-34 + `WINEDLLOVERRIDES=\"d3d9=b\" %command%`)
|
||||
- Samurai Gunn (works but **gamepad not detected**)
|
||||
- GTA V, Cuphead (assumed; not retested)
|
||||
<<<<<<< HEAD
|
||||
- **VK GameCenter** (GE-Proton10-34, shared prefix c Lutris, авторизация через Lutris + `vk-login-helper`)
|
||||
- **Atomic Heart VK** (через VK GameCenter, 97GB, `Data/gamecenter/atomic heart/`, URL-схема `vkplay://play/0.2015959`)
|
||||
=======
|
||||
- **VK GameCenter** (GE-Proton10-34, `Data/gamecenter/GameCenter/`)
|
||||
- **Atomic Heart VK** (через VK GameCenter, 97GB, `Data/gamecenter/atomic heart/`)
|
||||
>>>>>>> nas/main
|
||||
- **Doom 3 BFG** (через flatpak Classic-RBDOOM-3-BFG)
|
||||
|
||||
## Removed from Steam shortcuts ✅
|
||||
@@ -113,6 +118,10 @@ Proton ломает текстуры — известный регресс. **Ф
|
||||
|
||||
## VK Play / VK GameCenter на Bazzite
|
||||
|
||||
### Аккаунты VK Play
|
||||
- **Основной:** `xxxellam@gmail.com` — Google, залогинен на Bazzite
|
||||
- **Дополнительный:** `mallexxx@mail.ru` — подключён к VK Play
|
||||
|
||||
### Общая схема
|
||||
VK Play версии игр запускаются через лаунчер VK GameCenter (`GameCenter.exe`) поверх Proton. Лаунчер отвечает за авторизацию и лицензирование (в т.ч. Denuvo-эмуляцию).
|
||||
|
||||
|
||||
+4
-1
@@ -7,7 +7,7 @@ updated: '2026-05-25'
|
||||
|
||||
> Content catalog. Every wiki page listed with a one-line summary.
|
||||
> Read this first to find relevant pages for any query.
|
||||
> Last updated: 2026-05-28 | Total pages: 50
|
||||
> Last updated: 2026-05-29 | Total pages: 53
|
||||
|
||||
## Personal OS — Core
|
||||
|
||||
@@ -51,7 +51,9 @@ updated: '2026-05-25'
|
||||
- [[tech/reflect-skip-fuse]] — New SwiftUI View requires manual Kotlin stub in 2 places
|
||||
- [[tech/arr-stack-taiga]] — Taiga arr stack (2026-05-20), config, router.py location
|
||||
- [[tech/hermes-eagle-mac]] — Hermes on Eagle Mac M4; claude-proxy, Zulip setup, known pitfalls
|
||||
- [[tech/hermes-kraken-api]] — Hermes Kraken OpenAI-compat API server; Cloudflare Tunnel, Aide Android client
|
||||
- [[tech/jellyfin-transcode-rpi5]] — Jellyfin RPi5 transcoding pitfalls; PGS/subtitle handling
|
||||
- [[tech/tv-luna-send]] — WebOS TV luna-send via SSH; script(1) PTY workaround, wrapper, common URIs
|
||||
- [[tech/vault-git-sync]] — Vault git sync via Taiga bare repo; setup, pull hooks, pitfalls
|
||||
- [[tech/vps-qentra]] — VPS qentra.top: IP, nginx+Cloudflare stack, subdomain setup
|
||||
- [[tech/xgimi-play6-setup]] — XGIMI Play 6 (GMUI 6): ADB-over-network setup, launcher, keyboard
|
||||
@@ -73,6 +75,7 @@ updated: '2026-05-25'
|
||||
- [[concepts/executor-security-incident]] — Post-mortem: autonomous Asana boundary crossing (May 2026); root causes
|
||||
- [[concepts/agent-memory-architecture]] — LLM agent memory taxonomy (arXiv 2603.07670) applied to personal-os
|
||||
- [[concepts/knowledge-lifecycle]] — How knowledge flows from session to permanent wiki memory
|
||||
- [[concepts/hermes-deployment-patterns]] — Three Hermes deployment models: Eagle native, Kraken Docker, Kraken API server
|
||||
- [[concepts/multi-agent-design-patterns]] — Five reusable patterns: orchestrator/worker, scope tables, memory layers, role specialization
|
||||
|
||||
## Concepts — Vault & Wiki
|
||||
|
||||
+30
@@ -76,6 +76,36 @@ type: meta
|
||||
- Lint: watchlist-automation.md has tags [watchlist, automation, synthesis] not in SCHEMA taxonomy (pre-existing); torrents tag on media-pipeline-pitfalls.md also pre-existing; no broken wikilinks in new/modified pages
|
||||
- Validation: all 4 modified/created pages passed pre-commit checks ✅
|
||||
|
||||
## [2026-05-29] update | Crystallization + synthesis (Hermes deployment patterns)
|
||||
|
||||
- Conflicts: 0 found (scan: all ~/obsidian/**/*.md)
|
||||
- Previous run (2026-05-28): status=complete, no Unfinished ✅
|
||||
- Inbox: empty
|
||||
- Sessions: none for 2026-05-29 (no sessions found)
|
||||
- Vault changes since 2026-05-28 02:00:
|
||||
- `family/how-to/magic4pc-webos.md` — detailed WebOS TV app: build, deploy,
|
||||
auto-launch, Back+keyboard quirk
|
||||
- `family/how-to/tv-luna-send.md` + `htpc-webos-luna.md` — luna-send SSH
|
||||
workaround and wrapper script
|
||||
- `family/how-to/htpc-migration-plan.md` — EmuDeck Flatpak save paths table,
|
||||
ROM symlinks from Data partition
|
||||
- `family/projects/aide-kraken-backend.md` — Hermes Kraken as OpenAI-compat
|
||||
API backend for Android Aide app via Cloudflare Tunnel
|
||||
- `family/schedule/vacation-july-august-2026.md` — personal schedule, skip
|
||||
- Created: tech/tv-luna-send.md (from tv-luna-send.md + htpc-webos-luna.md)
|
||||
- Created: tech/hermes-kraken-api.md (from aide-kraken-backend.md)
|
||||
- Updated: tech/htpc-magic4pc.md — WebOS build/deploy/auto-launch/Back+keyboard
|
||||
- Updated: tech/htpc-steam-emulators.md — EmuDeck save paths + ROM symlinks
|
||||
- Synthesis: concepts/hermes-deployment-patterns.md — 3 deployment models:
|
||||
Eagle native, Kraken Docker, Kraken API server (cross-refs hermes-eagle-mac +
|
||||
hermes-docker-kraken + hermes-kraken-api)
|
||||
- Updated: tech/hermes-docker-kraken.md — added related links to new pages
|
||||
- Updated: tech/hermes-eagle-mac.md — added deployment-patterns cross-link
|
||||
- Updated: index.md — 3 pages added; count 50→53; date 2026-05-29
|
||||
- Lint: all new pages have ≥1 inbound content link; 0 broken wikilinks in
|
||||
new/modified pages; tags all from SCHEMA taxonomy ✅
|
||||
- Validation: all 5 new/modified wiki pages passed pre-commit checks ✅
|
||||
|
||||
## [2026-05-28] update | Crystallization + synthesis + lint fixes
|
||||
- Conflicts: 0 found (scan: all ~/obsidian/**/*.md)
|
||||
- Inbox: empty
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
---
|
||||
title: Hermes Docker on Kraken
|
||||
created: '2026-05-23'
|
||||
updated: '2026-05-23'
|
||||
updated: '2026-05-29'
|
||||
type: tech
|
||||
namespace: personal
|
||||
tags: [hermes, docker, kraken, infra, how-to]
|
||||
related:
|
||||
- "[[tech/kraken-network]]"
|
||||
- "[[concepts/hermes-deployment-patterns]]"
|
||||
- "[[tech/hermes-kraken-api]]"
|
||||
---
|
||||
|
||||
# Hermes Docker on Kraken
|
||||
|
||||
@@ -226,3 +226,4 @@ Claude падает с "Failed to spawn process". Проверить логи:
|
||||
|
||||
- [[tech/hermes-docker-kraken]] — Hermes на Кракене (Docker)
|
||||
- [[tech/kraken-network]] — сетевая топология
|
||||
- [[concepts/hermes-deployment-patterns]] — сравнение трёх моделей деплоя Hermes
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
---
|
||||
title: Hermes Kraken — OpenAI-Compatible API Server
|
||||
created: '2026-05-29'
|
||||
updated: '2026-05-29'
|
||||
type: tech
|
||||
namespace: personal
|
||||
tags: [hermes, kraken, infra, agent, how-to]
|
||||
sources:
|
||||
- family/projects/aide-kraken-backend.md
|
||||
confidence: medium
|
||||
related:
|
||||
- "[[tech/hermes-docker-kraken]]"
|
||||
- "[[tech/vps-qentra]]"
|
||||
---
|
||||
|
||||
# Hermes Kraken — OpenAI-Compatible API Server
|
||||
|
||||
Hermes on Kraken exposes an OpenAI-compatible `/v1/chat/completions`
|
||||
endpoint (`gateway/platforms/api_server.py`). Exposed externally via
|
||||
Cloudflare Tunnel → used by the Android **Aide** app as a Hermes-backed
|
||||
assistant.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
Android (Aide)
|
||||
└── HTTPS → hermes.kraken.qentra.top/v1/chat/completions
|
||||
↓ Cloudflare Tunnel
|
||||
cloudflared (Kraken, host network)
|
||||
↓ localhost:8642
|
||||
hermes-kraken (docker run, network_mode: host)
|
||||
↓
|
||||
Hermes gateway → Gemini / OpenRouter / ...
|
||||
```
|
||||
|
||||
`network_mode: host` means port 8642 is directly on the Kraken host —
|
||||
no port mapping needed.
|
||||
|
||||
## Config (Kraken /opt/data/config.yaml)
|
||||
|
||||
```yaml
|
||||
api_server:
|
||||
enabled: true
|
||||
port: 8642
|
||||
host: "0.0.0.0"
|
||||
key: "<secret>" # openssl rand -hex 32
|
||||
```
|
||||
|
||||
Restart container via Portainer or:
|
||||
```bash
|
||||
BASE=http://localhost:9000
|
||||
KEY="ptr_AJY+Ba9A7f6pcAHZfDD5koU4stkKgJCdbTEXLDLxn0g="
|
||||
EP=3
|
||||
CID=$(curl -s -H "X-API-Key: $KEY" \
|
||||
"$BASE/api/endpoints/$EP/docker/containers/json" \
|
||||
| jq -r '.[] | select(.Names[] | contains("hermes-kraken")) | .Id')
|
||||
curl -s -X POST -H "X-API-Key: $KEY" \
|
||||
"$BASE/api/endpoints/$EP/docker/containers/$CID/restart"
|
||||
```
|
||||
|
||||
Health check: `curl -s http://localhost:8642/health`
|
||||
|
||||
## Cloudflare Tunnel Setup
|
||||
|
||||
Tunnel name: `kraken`. Public hostname (CF Zero Trust dashboard):
|
||||
- **Hostname:** `kraken.qentra.top`
|
||||
- **Type:** HTTP (not SSH)
|
||||
- **URL:** `localhost:8642`
|
||||
|
||||
SSH to Kraken still works via VPS reverse tunnel (port 2223) — the CF
|
||||
hostname change does not affect SSH access.
|
||||
|
||||
## Aide Android Client Config
|
||||
|
||||
Provider: Custom Endpoint
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Base URL | `https://kraken.qentra.top/v1` |
|
||||
| API Key | secret from config.yaml |
|
||||
| Model | `hermes-agent` (maps to Hermes internally) |
|
||||
|
||||
## What Was Not Changed
|
||||
|
||||
- cloudflared container — already running
|
||||
- VPS reverse SSH tunnel — unaffected
|
||||
- `network_mode: host` on hermes-kraken — already set
|
||||
|
||||
## See Also
|
||||
|
||||
- [[tech/hermes-docker-kraken]] — how Hermes runs on Kraken (docker run
|
||||
pattern, no compose)
|
||||
- [[tech/vps-qentra]] — VPS qentra.top: Cloudflare + nginx stack
|
||||
@@ -1,15 +1,18 @@
|
||||
---
|
||||
title: HTPC — magic4pc (LG Magic Remote)
|
||||
created: '2026-05-28'
|
||||
updated: '2026-05-28'
|
||||
updated: '2026-05-29'
|
||||
type: tech
|
||||
namespace: family
|
||||
tags: [htpc, how-to, pitfalls]
|
||||
sources: [family/how-to/htpc-magic4pc.md]
|
||||
sources:
|
||||
- family/how-to/htpc-magic4pc.md
|
||||
- family/how-to/magic4pc-webos.md
|
||||
confidence: medium
|
||||
related:
|
||||
- "[[htpc-bazzite-proton]]"
|
||||
- "[[tech/htpc-steam-emulators]]"
|
||||
- "[[tech/tv-luna-send]]"
|
||||
---
|
||||
|
||||
# HTPC — magic4pc (LG Magic Remote)
|
||||
@@ -96,7 +99,97 @@ Sudoers rule (no-password systemctl):
|
||||
bazzite ALL=(ALL) NOPASSWD: /usr/bin/systemctl
|
||||
```
|
||||
|
||||
## WebOS TV App — Build & Deploy
|
||||
|
||||
The TV-side is a React/Enact WebOS app + Node.js service bundled into
|
||||
an IPK. Sources: `~/Developer/magic4pc/webos/`.
|
||||
|
||||
### Build
|
||||
|
||||
```bash
|
||||
cd ~/Developer/magic4pc/webos
|
||||
NODE_OPTIONS=--openssl-legacy-provider npm run build
|
||||
```
|
||||
|
||||
**Pitfall:** `--openssl-legacy-provider` is required — the old webpack
|
||||
is incompatible with Node.js 25+.
|
||||
|
||||
### Package IPK
|
||||
|
||||
```bash
|
||||
/Users/admin/webOS_TV_SDK/CLI/bin/ares-package dist/ service/ --outdir .
|
||||
```
|
||||
|
||||
**Pitfall:** both `dist/` and `service/` arguments are required —
|
||||
omitting `service/` excludes the Node.js service from the IPK.
|
||||
**Pitfall:** `npm run package` = `ares-package -n` (unsigned) — TV
|
||||
rejects unsigned packages. Use the SDK command directly.
|
||||
|
||||
### Deploy (deploy.sh)
|
||||
|
||||
```bash
|
||||
cd ~/Developer/magic4pc/webos && ./deploy.sh
|
||||
```
|
||||
|
||||
Script flow: build → package → scp → close → remove → install → launch.
|
||||
Uses [[tech/tv-luna-send]] wrapper for close/remove/launch.
|
||||
For install (subscribe mode) — direct `ssh+script` with polling on
|
||||
`"state":"installed"`.
|
||||
|
||||
**Pitfall:** `ares-install` / `ares-launch` are unreliable — they don't
|
||||
wait for completion. Use `luna-send dev/install` via `script` wrapper.
|
||||
|
||||
### Version in UI
|
||||
|
||||
Displayed as `1.1.0 (YYYY-MM-DD HH:MM)` — injected by webpack at
|
||||
build time via `process.env.BUILD_DATE`.
|
||||
|
||||
## Auto-launch on Boot/Wake
|
||||
|
||||
Magic4pc launches a configured app when the TV boots or wakes.
|
||||
|
||||
| File | Location | Purpose |
|
||||
|------|----------|---------|
|
||||
| `magic4pc-settings` | PERSISTENT_DIR | Selected app ID |
|
||||
| `magic4pc-last-app` | PERSISTENT_DIR | Last foreground app |
|
||||
| `magic4pc-run-state` | `/tmp/` | `running` after first launch |
|
||||
|
||||
`PERSISTENT_DIR = /media/developer/apps/usr/palm/services/me.wouterdek.magic4pc.service`
|
||||
|
||||
Logic:
|
||||
- **Boot/wake:** `/tmp` is cleared → no `run-state` → `freshStart=true`
|
||||
→ launches configured app
|
||||
- **Manual launch:** `run-state=running` already present → skips auto-launch
|
||||
|
||||
The `init.d` script on TV (`/var/lib/webosbrew/init.d/magic4pc`) removes
|
||||
`run-state` on suspend so wake triggers fresh launch. Always edit in
|
||||
repo (`tv-scripts/init.d-magic4pc.sh`), never directly on TV.
|
||||
|
||||
## WebOS Back Key + System Keyboard
|
||||
|
||||
When the system keyboard is open, **Back #1** is consumed by the OS
|
||||
(closes keyboard) — the `keydown` DOM event and `onButtonDown` are
|
||||
**not** fired. **Back #2** arrives normally.
|
||||
|
||||
Fix used in `MainPanel.js` (`_kbWasOpen` flag):
|
||||
|
||||
```js
|
||||
// Input.onActivate:
|
||||
this._kbWasOpen = true;
|
||||
|
||||
// onButtonDown on Back:
|
||||
if (this.state.wolMacActive || this._kbWasOpen) {
|
||||
this._kbWasOpen = false;
|
||||
return; // suppress panel close
|
||||
}
|
||||
```
|
||||
|
||||
Approaches that don't work: `Popup.noAutoDismiss`, timeout heuristic,
|
||||
polling `document.activeElement` (keyboard is a system overlay, focus
|
||||
never moves to INPUT).
|
||||
|
||||
## See Also
|
||||
|
||||
- [[htpc-bazzite-proton]] — Proton game compatibility on this HTPC
|
||||
- [[tech/htpc-steam-emulators]] — Steam, emulators, gamepad config
|
||||
- [[tech/tv-luna-send]] — luna-send SSH wrapper for WebOS TV commands
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
---
|
||||
title: HTPC Steam & Emulators
|
||||
created: '2026-05-23'
|
||||
updated: '2026-05-28'
|
||||
updated: '2026-05-29'
|
||||
type: tech
|
||||
namespace: family
|
||||
tags: [htpc, steam, emulators, gamepad, how-to, pitfalls]
|
||||
sources:
|
||||
- family/how-to/htpc-migration-plan.md
|
||||
related:
|
||||
- "[[htpc-kodi-layout]]"
|
||||
- "[[htpc-bazzite-proton]]"
|
||||
- "[[tech/htpc-magic4pc]]"
|
||||
---
|
||||
|
||||
# HTPC Steam & Emulators
|
||||
@@ -43,9 +46,46 @@ only one `/dev/input/js`; Steam sees one controller.
|
||||
`~/controller-profiles/`
|
||||
- Steam shortcuts for non-Steam Windows games: use Proton Experimental
|
||||
|
||||
## Save Locations (approximate)
|
||||
## EmuDeck Save Paths (Flatpak)
|
||||
|
||||
| System | Path |
|
||||
|--------|------|
|
||||
| Steam | `~/.steam/steam/userdata/` |
|
||||
| Emulator | Save path |
|
||||
|----------|-----------|
|
||||
| RetroArch | `~/.var/app/org.libretro.RetroArch/config/retroarch/saves/` |
|
||||
| Dolphin (GC/Wii) | `~/.var/app/org.DolphinEmu.dolphin-emu/data/dolphin-emu/` |
|
||||
| Citra / Lime3DS | `~/.var/app/org.citra_emu.citra/` |
|
||||
| PCSX2 (PS2) | `~/.var/app/net.pcsx2.PCSX2/config/PCSX2/memcards/` |
|
||||
| RPCS3 (PS3) | `~/.var/app/net.rpcs3.RPCS3/config/rpcs3/dev_hdd0/` |
|
||||
| PPSSPP (PSP) | `~/.var/app/org.ppsspp.PPSSPP/config/ppsspp/PSP/SAVEDATA/` |
|
||||
| melonDS (NDS) | `~/.var/app/net.kuribo64.melonDS/` |
|
||||
| Ryujinx (Switch) | `~/.var/app/org.ryujinx.Ryujinx/config/Ryujinx/bis/user/save/` |
|
||||
| Steam | `~/.steam/steam/userdata/` |
|
||||
|
||||
## ROM Symlinks (Data partition → EmuDeck)
|
||||
|
||||
Emulators expect ROMs at `~/Emulation/roms/<system>/`. Symlinks from
|
||||
the Data partition (`/run/media/bazzite/Data/`):
|
||||
|
||||
```bash
|
||||
ln -s "/run/media/bazzite/Data/n64 roms" ~/Emulation/roms/n64
|
||||
ln -s "/run/media/bazzite/Data/snes roms" ~/Emulation/roms/snes
|
||||
ln -s "/run/media/bazzite/Data/gba roms" ~/Emulation/roms/gba
|
||||
ln -s "/run/media/bazzite/Data/3ds roms" ~/Emulation/roms/3ds
|
||||
ln -s "/run/media/bazzite/Data/ps2 roms" ~/Emulation/roms/ps2
|
||||
ln -s "/run/media/bazzite/Data/dolphin roms" ~/Emulation/roms/wii
|
||||
ln -s "/run/media/bazzite/Data/cemu roms" ~/Emulation/roms/wiiu
|
||||
ln -s "/run/media/bazzite/Data/mame roms" ~/Emulation/roms/mame
|
||||
ln -s "/run/media/bazzite/Data/sega roms" ~/Emulation/roms/genesis
|
||||
ln -s "/run/media/bazzite/Data/nes" ~/Emulation/roms/nes
|
||||
```
|
||||
|
||||
After symlinking, run **Steam ROM Manager** (EmuDeck) from Desktop Mode
|
||||
to import ROMs into Steam with cover art.
|
||||
|
||||
## Non-Steam Windows Games
|
||||
|
||||
`/run/media/bazzite/Data/games/` — 38 pre-installed games (Bayonetta,
|
||||
Cuphead, GTA V, Witcher 3, etc.). Add as Non-Steam games with
|
||||
Proton Experimental.
|
||||
|
||||
`/run/media/bazzite/Data/steam/steamapps/common/` — already-Steam games
|
||||
(Gang Beasts, Shovel Knight, etc.). Add as a second Steam library path.
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
title: WebOS TV — luna-send via SSH
|
||||
created: '2026-05-29'
|
||||
updated: '2026-05-29'
|
||||
type: tech
|
||||
namespace: family
|
||||
tags: [htpc, how-to, pitfalls]
|
||||
sources:
|
||||
- family/how-to/tv-luna-send.md
|
||||
- family/how-to/htpc-webos-luna.md
|
||||
confidence: medium
|
||||
related:
|
||||
- "[[tech/htpc-magic4pc]]"
|
||||
- "[[tech/htpc-kodi-layout]]"
|
||||
---
|
||||
|
||||
# WebOS TV — luna-send via SSH
|
||||
|
||||
`luna-send` on WebOS writes output to the TTY, not stdout. SSH without a
|
||||
PTY produces no output. The `script(1)` workaround captures output via a
|
||||
pseudo-TTY.
|
||||
|
||||
TV IP: `192.168.1.75` (aliases: `root@LGwebOSTV`, `root@tv`).
|
||||
|
||||
## The Problem
|
||||
|
||||
```bash
|
||||
ssh root@192.168.1.75 "luna-send -n 1 -f luna://..." # → silent
|
||||
ssh -t root@192.168.1.75 "luna-send -n 1 -f luna://..." # → still silent
|
||||
```
|
||||
|
||||
Root cause: `luna-send` detects whether its stdout is a TTY and refuses to
|
||||
write to a pipe.
|
||||
|
||||
## The Fix: script(1)
|
||||
|
||||
```bash
|
||||
ssh root@192.168.1.75 \
|
||||
"script -q -c \"luna-send -n 1 -f luna://com.webos.applicationManager/running '{}'\" \
|
||||
/tmp/o.txt; cat /tmp/o.txt"
|
||||
```
|
||||
|
||||
`script(1)` allocates a pseudo-TTY and records output to `/tmp/o.txt`.
|
||||
The wrapper then reads the file, filters the Script header/footer lines,
|
||||
and removes the temp file.
|
||||
|
||||
## Wrapper: tv-luna-send.sh
|
||||
|
||||
Location: `~/Automation/tv-luna-send.sh` on Eagle.
|
||||
|
||||
```bash
|
||||
# Usage (same flags as luna-send)
|
||||
~/Automation/tv-luna-send.sh [luna-send flags] luna://service/method 'json'
|
||||
|
||||
# List running apps
|
||||
~/Automation/tv-luna-send.sh \
|
||||
-n 1 -f luna://com.webos.service.applicationmanager/running '{}'
|
||||
|
||||
# Close an app
|
||||
~/Automation/tv-luna-send.sh \
|
||||
-n 1 -f luna://com.webos.service.applicationmanager/closeByAppId \
|
||||
'{"id":"me.wouterdek.magic4pc"}'
|
||||
|
||||
# Launch an app
|
||||
~/Automation/tv-luna-send.sh \
|
||||
-n 1 -f luna://com.webos.applicationManager/launch \
|
||||
'{"id":"me.wouterdek.magic4pc"}'
|
||||
|
||||
# Query magic4pc service status
|
||||
~/Automation/tv-luna-send.sh \
|
||||
-n 1 -f luna://me.wouterdek.magic4pc.service/query '{}'
|
||||
```
|
||||
|
||||
Set `TV_HOST` env to override the default target (`root@LGwebOSTV`).
|
||||
DNS resolves via home router at `192.168.1.1`.
|
||||
|
||||
## Common Luna URIs
|
||||
|
||||
| URI | Purpose |
|
||||
|-----|---------|
|
||||
| `.../applicationmanager/running` | List running apps |
|
||||
| `.../applicationmanager/closeByAppId` | Close app by ID |
|
||||
| `.../appInstallService/dev/install` | Install IPK (subscribe) |
|
||||
| `.../appInstallService/dev/remove` | Remove app |
|
||||
| `.../applicationManager/launch` | Launch app |
|
||||
| `.../applicationManager/getForegroundAppInfo` | Get active app |
|
||||
| `...magic4pc.service/query` | Magic4pc service status |
|
||||
|
||||
Full service prefix: `com.webos.service.applicationmanager`,
|
||||
`com.webos.appInstallService`, `com.webos.applicationManager`.
|
||||
|
||||
## Limitation: Subscribe Mode (-i)
|
||||
|
||||
`luna-send -i` (infinite subscribe, used for `dev/install`) does **not**
|
||||
work through the wrapper — it never terminates normally. The
|
||||
`magic4pc/webos/deploy.sh` handles install directly via `ssh+script` with
|
||||
inline polling for `"state":"installed"`.
|
||||
|
||||
## Where Used
|
||||
|
||||
`magic4pc/webos/deploy.sh` — close, remove, and launch steps in the deploy
|
||||
pipeline. See [[tech/htpc-magic4pc]] for the full magic4pc build and deploy
|
||||
workflow.
|
||||
@@ -0,0 +1,96 @@
|
||||
---
|
||||
## Daily Brief — 2026-05-29
|
||||
|
||||
### ✨ Morning
|
||||
On May 29, 1919, Arthur Eddington photographed stars near the sun during a total solar eclipse and confirmed light bends around massive objects — exactly as Einstein's general relativity predicted. The announcement made Einstein world-famous overnight and changed how we think about gravity, space, and time.
|
||||
🚶 Take a short walk before diving in.
|
||||
|
||||
Today's focus per weekly plan: Close loops + weekly review. New signals since yesterday: 18 task changes, 15 comments — Postmortem COMPLETED ✅ (Jeanna + Jonathan thanked Alex), Full Analysis COMPLETED ✅. Two new TP subtasks due today; PR #5145 CI 🔴; new Monterrey PR task appeared in inbox.
|
||||
|
||||
---
|
||||
|
||||
## Plan for Today
|
||||
|
||||
1. ⚡ **Desktop Browser Feature Owner Survey** — 5-min anonymous survey, 3d overdue, no blocker
|
||||
2. 🔴 **Fix CI on PR #5145** (Ship duck.ai onboarding — CI red, blocks review)
|
||||
3. 🔴 **Triage: PR: Make macOS app Monterrey-only** (1-3d, 1d overdue, needs scoping)
|
||||
4. 🟠 **TP: Hide "stop chat" button [0.5d]** — due today, primary block
|
||||
5. 🟠 **TP: Persist 'You've got this' dialogue [0.5d]** — due today, secondary block
|
||||
6. 🟠 **Nudge Jake on Privacy Triage** — 8d overdue, blocks old TP close
|
||||
7. 🟠 **Ack Alessandro on Project Advisor async** — 2 min
|
||||
8. 📋 **6 PR reviews queued** — batch after TP block
|
||||
9. 📝 **Weekly review write-up** — Fri rhythm, 20-30 min EOD
|
||||
|
||||
---
|
||||
|
||||
### 🔴 Urgent / Overdue
|
||||
|
||||
**[OVERDUE 3d] DRI** — [Desktop Browser Feature Owner Survey](https://app.asana.com/0/0/1214940335721015) (due 2026-05-26)
|
||||
Context: 5-min anonymous survey. Zero content blocker. Carried Mon → Wed → Thu without being completed.
|
||||
Action: Complete in the first 5 minutes of the day.
|
||||
|
||||
**[OVERDUE 1d] DRI** — [PR: Make macOS app Monterrey-only - 1-3d (apple-browsers)](https://app.asana.com/0/0/1215150214975916) (due 2026-05-27)
|
||||
Context: Appeared in inbox since weekly plan; new task, 1-3d estimate. Not in yesterday's brief. Needs scoping.
|
||||
Action: Open and triage — is this an implementation task to author, or a PR review request? 10 min.
|
||||
|
||||
**[OVERDUE 1d] DRI** — [Ship AI onboarding winner (Treatment B) [0.5d]](https://app.asana.com/0/0/1215009192158955) (due 2026-05-28)
|
||||
Context: PR #5145 up but CI 🔴. Costas answered Alex's returning-users question on May 28 12:33. Alessandro reacted this morning (reaction only, no new comment — not a blocker).
|
||||
Action: Read Costas' answer, then fix CI on #5145.
|
||||
|
||||
**[OVERDUE 14d] AOR** — [PR Check is failing on main](https://app.asana.com/0/0/1214797526093576) (due 2026-05-15)
|
||||
Context: Main-branch CI failure, inbox. No activity since May 17. Third brief in a row without progress.
|
||||
Action: Diagnose during AOR buffer. If not fixable in 30 min, post a status comment naming the failing test + ETA. Don't carry unacknowledged into next week.
|
||||
|
||||
**Backlog cluster** (informational — stale dates expected; do_later/quick_wins/aged inbox): CI failing test testWhenTabWithConnectionLost (active, Apr 22) · Pinned tab opens link in background (May 1) · Text selection in address bar (May 1) · Tab preview stuck · Duo login Grafana · Assertion Failure Pixel · Review Overdue Tasks meta · warnBeforeQuit flag · mac_malicious-site-protection. Not actioned today.
|
||||
|
||||
---
|
||||
|
||||
### 🟠 Needs Action Today
|
||||
|
||||
**DRI — TP deep work: Hide "stop chat" button + Persist 'You've got this' dialogue (due today)**
|
||||
[Hide stop chat](https://app.asana.com/0/0/1215009192158954) + [Persist dialogue](https://app.asana.com/0/0/1215009192158950) — Alex's May 28 status: "Next: these two." Primary deep-work block of the day after urgent items.
|
||||
Note: "Disable back button" (1215009192158960, also due today) is WAITING for confirmation from Costas/team — Alex already asked, not the blocker.
|
||||
|
||||
**DRI — Acknowledge Project Advisor async**
|
||||
[DRI ↔ Project Advisor async](https://app.asana.com/0/0/1213551072611261) — Alessandro commented May 28 23:30: "Since you were OOO I created that 🙂" — he proactively created the task while Alex was out.
|
||||
Action: Quick acknowledgment reply. 2 min.
|
||||
|
||||
**DRI — Review experiment enrollment data**
|
||||
[NA Analysis: iOS Duck.ai Onboarding Tracker Demo](https://app.asana.com/0/0/1215186850972358) — Dax bot: enrollment ≈7K per variant (control 7034 / A 7191 / B 7126), no headline metric conversions yet (d5-7 app_use). Alex is listed DRI.
|
||||
Action: Scan for anomalies, confirm tracking looks reasonable. 10 min.
|
||||
|
||||
**PR Reviews — batch (6 queued)**
|
||||
Bump nativeStorage 100% · Enable ad blocking soft launch · Improve value transformer failure observability · Avoid force unwrap crash · Fix maestro tests · Enable iPad toggle iOS 7.211.
|
||||
Action: Single batch pass after TP block.
|
||||
|
||||
**📝 Weekly review write-up**
|
||||
Per Friday plan: write this week's review + catch-up for missing May/22 review.
|
||||
Action: 20-30 min before EOD.
|
||||
|
||||
---
|
||||
|
||||
### 🟡 Delegated — Follow Up Needed
|
||||
|
||||
**OVERDUE 8d** — [Privacy Triage: Apple — iOS: Demo tracker blocking](https://app.asana.com/0/0/1214965405681675) — Jake Abel, due 2026-05-21
|
||||
No activity since May 20. Blocks closing old TP. Nudged in yesterday's brief; no response yet (AFK day intervened).
|
||||
Follow-up: "Hi Jake — following up again. This privacy triage is now 8 days overdue and is the last piece blocking old TP close-out. Any update?"
|
||||
|
||||
**OVERDUE 4d** — [🤖 Check for dependabot PRs](https://app.asana.com/0/0/1215057989642782) — Tom Strba, due 2026-05-25
|
||||
macOS App Maintenance cycle. Tom's cycle is active (maintenance task modified May 28 23:27). Low urgency — Tom likely completing today.
|
||||
|
||||
**Due today** — [Pinned tab activates in other window unpinning](https://app.asana.com/0/0/1210705465887828) — Juan Pereira, due 2026-05-29
|
||||
Gentle reminder if no update from Juan by EOD.
|
||||
|
||||
GitHub ↔ Asana correlation: no merged-but-not-closed delegated tasks detected.
|
||||
|
||||
---
|
||||
|
||||
### 🔵 Rhythms
|
||||
|
||||
**TP:** [iOS Address onboarding conflicts with unified input and ship AI onboarding winner](https://app.asana.com/0/0/1214592943696234) — due 2026-06-05. On track. Two subtasks with PRs up (Hide Free plan #5149 ✅ waiting review; Ship AI onboarding #5145 CI 🔴). Today's block: stop chat + persist dialogue subtasks. Next TP Thread: ✅ already open.
|
||||
|
||||
**Upcoming:**
|
||||
- 📅 Mon 2026-06-01: O-L Weekly Meeting. Dominik OOO begins (LDX3, through Jun 3).
|
||||
- 📅 Tue 2026-06-02: Apple Weekly Team Meeting — Dominik OOO, host needed (Dominik flagged this).
|
||||
- 📅 Wed 2026-06-03: O-N Weekly Meeting.
|
||||
- 📅 Jun 8–12: WWDC'26 partly AFK (10 days out) — flag prep handoffs by end of next week.
|
||||
Reference in New Issue
Block a user