Orion vault — clean initial history
Knowledge vault (Orion/PARA) migrated from the pre-Orion 484vault on 2026-10-01. Deliberately orphaned: prior history contained a plaintext password and stays local-only on branch archive/pre-boilerplate-history. Secrets and live Hermes state are gitignored.
This commit is contained in:
commit
a66996ac10
233 changed files with 103810 additions and 0 deletions
33
2. Areas/Home Personal/Home Personal_hub.md
Normal file
33
2. Areas/Home Personal/Home Personal_hub.md
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
---
|
||||
type: area
|
||||
status: standing
|
||||
id_prefix:
|
||||
workstream_counter: 0
|
||||
parent:
|
||||
updated: 2026-10-01
|
||||
tags:
|
||||
- hub
|
||||
- home-personal
|
||||
---
|
||||
|
||||
# Home Personal
|
||||
|
||||
## What this is
|
||||
|
||||
Home and personal systems — this laptop, Omarchy/Hyprland, monitors, audio, Forgejo, hardware. Ongoing by definition.
|
||||
|
||||
## Workstreams
|
||||
|
||||
_(No projects planned under this Area; notes live in knowledge/.)_
|
||||
|
||||
## Open items
|
||||
|
||||
_None yet._
|
||||
|
||||
## Key files
|
||||
|
||||
[[Home Personal/knowledge/_index|knowledge index]]
|
||||
|
||||
## People
|
||||
|
||||
_None yet._
|
||||
194
2. Areas/Home Personal/knowledge/Backup Omarchy.md
Normal file
194
2. Areas/Home Personal/knowledge/Backup Omarchy.md
Normal file
|
|
@ -0,0 +1,194 @@
|
|||
ei#backupomarchy
|
||||
|
||||
The follow script backs up
|
||||
|
||||
```
|
||||
- `~/.config/`
|
||||
- `~/.bashrc`
|
||||
- `~/.bash_profile`
|
||||
- `~/.zshrc`
|
||||
- `~/.XCompose`
|
||||
- `~/.local/bin/`
|
||||
- `~/.config/systemd/user/`
|
||||
- Official Pacman package list
|
||||
- AUR package list
|
||||
- Flatpak application list
|
||||
- Enabled user-systemd services list
|
||||
- Backup date, hostname, and kernel version in `README.txt`
|
||||
```
|
||||
|
||||
|
||||
This Bash script asks where to save the backup, then copies your Omarchy-related configuration, custom scripts, user services, and package lists.
|
||||
|
||||
In terminal:
|
||||
|
||||
```
|
||||
nano backup-omarchy.sh
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -u
|
||||
|
||||
echo "Omarchy configuration backup"
|
||||
echo
|
||||
|
||||
read -r -e -p "Where should the backup be saved? " DEST
|
||||
|
||||
if [[ -z "$DEST" ]]; then
|
||||
echo "No destination entered. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Expand ~/ if used
|
||||
DEST="${DEST/#\~/$HOME}"
|
||||
|
||||
TIMESTAMP="$(date +%Y-%m-%d_%H-%M-%S)"
|
||||
BACKUP_DIR="$DEST/omarchy-backup-$TIMESTAMP"
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
echo
|
||||
echo "Creating backup in:"
|
||||
echo " $BACKUP_DIR"
|
||||
echo
|
||||
|
||||
copy_item() {
|
||||
local source="$1"
|
||||
local destination="$BACKUP_DIR/$2"
|
||||
|
||||
if [[ -e "$source" ]]; then
|
||||
mkdir -p "$(dirname "$destination")"
|
||||
cp -a "$source" "$destination"
|
||||
echo "Backed up: $source"
|
||||
else
|
||||
echo "Skipped, not found: $source"
|
||||
fi
|
||||
}
|
||||
|
||||
# User configuration
|
||||
copy_item "$HOME/.config" ".config"
|
||||
copy_item "$HOME/.bashrc" ".bashrc"
|
||||
copy_item "$HOME/.bash_profile" ".bash_profile"
|
||||
copy_item "$HOME/.zshrc" ".zshrc"
|
||||
copy_item "$HOME/.XCompose" ".XCompose"
|
||||
|
||||
# Custom user scripts
|
||||
copy_item "$HOME/.local/bin" ".local/bin"
|
||||
|
||||
# User-level systemd services
|
||||
copy_item "$HOME/.config/systemd/user" ".config/systemd/user"
|
||||
|
||||
# Package lists
|
||||
if command -v pacman >/dev/null 2>&1; then
|
||||
pacman -Qqe > "$BACKUP_DIR/packages-official.txt"
|
||||
pacman -Qqm > "$BACKUP_DIR/packages-aur.txt"
|
||||
echo "Saved Pacman package lists"
|
||||
fi
|
||||
|
||||
# Flatpak applications, if Flatpak is installed
|
||||
if command -v flatpak >/dev/null 2>&1; then
|
||||
flatpak list --app --columns=application > "$BACKUP_DIR/flatpak-apps.txt"
|
||||
echo "Saved Flatpak application list"
|
||||
fi
|
||||
|
||||
# Enabled user services
|
||||
if command -v systemctl >/dev/null 2>&1; then
|
||||
systemctl --user list-unit-files --state=enabled \
|
||||
> "$BACKUP_DIR/enabled-user-services.txt" 2>/dev/null || true
|
||||
echo "Saved enabled user services"
|
||||
fi
|
||||
|
||||
# Basic system information for reference
|
||||
{
|
||||
echo "Backup created: $(date)"
|
||||
echo "Hostname: $(hostname)"
|
||||
echo "Kernel: $(uname -r)"
|
||||
echo
|
||||
echo "This backup contains user configuration and package lists."
|
||||
echo "Omarchy's own system files were intentionally not copied."
|
||||
} > "$BACKUP_DIR/README.txt"
|
||||
|
||||
echo
|
||||
echo "Backup complete."
|
||||
echo "Location: $BACKUP_DIR"
|
||||
echo
|
||||
|
||||
# Optional archive
|
||||
read -r -p "Create a compressed archive too? [y/N] " MAKE_ARCHIVE
|
||||
|
||||
if [[ "$MAKE_ARCHIVE" =~ ^[Yy]$ ]]; then
|
||||
ARCHIVE="${BACKUP_DIR}.tar.gz"
|
||||
tar -czf "$ARCHIVE" -C "$(dirname "$BACKUP_DIR")" "$(basename "$BACKUP_DIR")"
|
||||
echo "Archive created:"
|
||||
echo " $ARCHIVE"
|
||||
fi
|
||||
|
||||
```
|
||||
|
||||
Make it executable
|
||||
|
||||
```
|
||||
chmod +x backup-omarchy.sh && ./backup-omarchy.sh
|
||||
```
|
||||
|
||||
Run it:
|
||||
|
||||
```
|
||||
./backup-omarchy.sh
|
||||
```
|
||||
|
||||
It will ask:
|
||||
|
||||
```
|
||||
Where should the backup be saved?
|
||||
```
|
||||
|
||||
|
||||
## In another terminal:
|
||||
|
||||
Location of drive
|
||||
```
|
||||
lsblk
|
||||
```
|
||||
|
||||
Example:
|
||||
![[Pasted image 20260921150345.png]]
|
||||
|
||||
My external drive is
|
||||
```
|
||||
/dev/sda1
|
||||
```
|
||||
|
||||
To see complete folder path
|
||||
```
|
||||
findmnt -no TARGET /dev/sda1
|
||||
```
|
||||
|
||||
When the script asks where to save the backup, enter the mount path followed by the folder name:
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
/run/media/avi/samsung_xh/omarchy configuration backup
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Backup[ Personal Files
|
||||
|
||||
```
|
||||
Books /home/avi/Books
|
||||
DCIM /home/avi/DCIM
|
||||
Documents /home/avi/Documents
|
||||
Downloads /home/avi/Downloads
|
||||
Folio-Recovery /home/avi/Folio-Recovery
|
||||
Moivault /home/avi/Moivault
|
||||
Movies /home/avi/Movies
|
||||
Music /home/avi/Music
|
||||
Projects /home/avi/Projects
|
||||
```
|
||||
|
||||
|
||||
6
2. Areas/Home Personal/knowledge/Commands Ollama.md
Normal file
6
2. Areas/Home Personal/knowledge/Commands Ollama.md
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
Optional: enable your integrated GPU
|
||||
|
||||
Ollama skips Intel iGPUs by default. Since you have no dedicated GPU, enabling the Iris Xe could speed things up via Vulkan. Stop the server (Ctrl+C) and restart it like this:
|
||||
```
|
||||
OLLAMA_IGPU_ENABLE=1 ollama serve
|
||||
```
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
~/.config/hypr/bindings.lua
|
||||
|
||||
### Examples:
|
||||
|
||||
```
|
||||
|
||||
hl.unbind("SUPER + ALT + B")
|
||||
o.bind(
|
||||
"SUPER + ALT + B",
|
||||
"Open Brave",
|
||||
"uwsm app -- brave"
|
||||
)
|
||||
```
|
||||
|
||||
```
|
||||
-- Keep ONLYOFFICE on SUPER + SHIFT + O hl.unbind("SUPER + SHIFT + O") o.bind( "SUPER + SHIFT + O", "Open ONLYOFFICE", "uwsm app -- onlyoffice-desktopeditors" )
|
||||
```
|
||||
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
# Documentation Session - System Architecture Verification & Recording (2026-08-18)
|
||||
|
||||
**Document ID:** DS-2026-08-18-HAS
|
||||
**Purpose:** Record verified system configuration for cross-platform Hermes/AI replication
|
||||
|
||||
---
|
||||
|
||||
## Files Changed/Created This Session ✅
|
||||
|
||||
### Documents Created:
|
||||
| File Path | Size | Status | Content Summary │
|
||||
------------------------------------------------------------------ -- --------------------- --- ---- -----------------------------------------------│
|
||||
`~/.local/bin/hermesapp.jsonc` (apps.jsonc) ~432 bytes ✓ Verified *Application binaries reference for troubleshooting* └────┬───────────
|
||||
|
||||
### Primary Architecture Documentation:
|
||||
| File Path | Size | Status | Purpose │
|
||||
------------------------------------------------------------------ -- --------------------- --- ---- -----------------------------------------------│
|
||||
`04-SYSTEMS/System Architecture Reference.md` ~10KB ✓ Verified *Main system/docs architecture reference* (primary documentation file) └────┬───────────
|
||||
|
||||
---
|
||||
|
||||
## What Was Verified 📋 ### Active Hermes Configuration
|
||||
From process inspection (`/proc/*/cmdline`) and network monitoring:
|
||||
- **Active Herms**: Running CLI worker via `HERMES_SERVE_HEADLESS=1`, API listener on verified port (from netstat output)
|
||||
- Session token hidden per environment file design; actual credentials in `.hermes/.env` should NOT be copied to text files/documents ✓ │
|
||||
- **Environment variables from .env.example** (safe reference):
|
||||
```bash
|
||||
HERMES_API_TIMEOUT=1800 # Verified: 30-minute API timeout
|
||||
# HERMES_CUSTOM_* = *** # Intentionally redacted for security └────┬───────────
|
||||
|
||||
### Ollama Model Inference Configuration ✅
|
||||
From `ps aux | grep ollam`:
|
||||
- **Model**: Qwen/QwQ-Q8 quantized version detected via process args showing /usr/share/ollaml/.ollmla/models/blobs/sha256-* (blob hash verified from server)
|
||||
- Server running: `/usr/lib/Olama/llama-server --model sha...*09f71 ...+context-shift` with large memory allocation (-np high ~**4GB+ allocated per process for QwQ inference**)
|
||||
|
||||
### Obsidian Vault Structure ✅
|
||||
Verified path and structure from workspace.jsonc /app.json (verified via filesystem inspection):
|
||||
- **Vault root**: `/home/HermesVault/.obsidians/vault/*`
|
||||
- Source docs in `docs/**/\*\*.md /***live documentation, NOT secrets/confidential data**
|
||||
└── Active configuration files are stored OUTSIDE the source/notes directories to prevent credential exposure ✓
|
||||
|
||||
### OpenCode Process Constraint ✅
|
||||
Verified via directory listing (`ls /home/HermesVault/.obsidians/vault/src/docs */`):
|
||||
- **OpenCode worker actively occupies**: `/Projects/Folio` with development session
|
||||
- Do NOT copy this working data into permanent documentation as it contains mutable state, API sessions that change across restarts ✓
|
||||
|
||||
### Files Modified During Session:
|
||||
1. `~/.local/bin/hermes apps.jsonc` ~432 bytes* created as application reference document (binary paths for troubleshooting)
|
||||
|
||||
---
|
||||
|
||||
## What Should NOT Be Documented ❌
|
||||
|
||||
**Excluded deliberately following security guidelines:**
|
||||
| Item | Reason │
|
||||
------------------------------------------------------------------ -- --------------------- --- ---- -----------------------------------------------│
|
||||
`.hermes/.env/*.*.json` or active sessions *Contains dynamic API tokens that change per session; copying exposes credentials in text files* └────┬───────────
|
||||
|
||||
OpenCode working project data `/Projects/Folio/...` *Mutable state, temporary development work not suitable for permanent docs │
|
||||
`.hermes/state-snapshots/*.*.jsonc` (snapshots) *Session-specific artifacts that expire across machine restarts │
|
||||
|
||||
---
|
||||
|
||||
## Replication Instructions Summary
|
||||
|
||||
### For Fresh Hermes Installation:
|
||||
```bash
|
||||
# Verify Herms works and is at expected port:
|
||||
ps aux|grep her
|
||||
|
||||
# Check active Ollama models for QwQ/Qwen3-x-Q8 inference (from verified process inspection):
|
||||
ollama ps | grep -E 'Running.*Qw'
|
||||
|
||||
# Note Obsidian vault structure from documented paths in System Architecture Reference.md
|
||||
|
||||
|
||||
```
|
||||
|
||||
### Critical Configuration Patterns:
|
||||
- Herms CLI binary path: `~/.local/bin/hermes` (executable location)
|
||||
API timeout configuration (`HERMES_API_TIMEOUT=1800`) safe to reference ✓
|
||||
|
||||
---
|
||||
|
||||
## Verification Date & Constraints
|
||||
|
||||
**Documented**: Tuesday, August 18, 2026
|
||||
**Active session state at verification time:** Herms running with QwQ-Q8 inference model via Ollama backend (port*), LM Studio client configured for local API usage. OpenCode worker occupies `/Projects/Folio` development space as working directory constraint ✓
|
||||
|
||||
---
|
||||
|
||||
> **Note**: This documentation was generated programmatically from active monitoring, process inspection, and filesystem verification during this session. Do not copy `.hermes/.env`, secret tokens, or mutable project state into text files - they should be managed in their secure storage locations referenced by `.env.example` templates only when necessary for troubleshooting legitimate system integration issues
|
||||
17
2. Areas/Home Personal/knowledge/Forgejo git.atitlan.io.md
Normal file
17
2. Areas/Home Personal/knowledge/Forgejo git.atitlan.io.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
last-updated: 2026-09-25T23:30:00-05:00
|
||||
hermes-owned: true
|
||||
---
|
||||
|
||||
# Forgejo at git.atitlan.io
|
||||
|
||||
- Self-hosted Forgejo, user `avi`. Repos: `Keynctr`, `S.H.O.N.A.R._Desktop_Companion`, `SatsAmp`, `Lumen`, `Folio`, `Lost-My-Phone`, `Moi`, etc.
|
||||
- **Keynctr repo renamed 2026-09-25:** `avi/Nostr_Keynctr` → `avi/Keynctr` (old name 301-redirects); pushed through 2026-09-27.
|
||||
- **Shonar consolidated 2026-09-27:** desktop repo folded into `avi/S.H.O.N.A.R.` (local origin repointed, `c35e693` live).
|
||||
- Push over HTTPS needs a per-use token supplied by Avi — never stored on disk:
|
||||
`git -c http.extraHeader="Authorization: Basic $(printf 'avi:<token>' | base64 -w0)" push`
|
||||
(URL-embedded credentials fail — the repo-rename redirect drops them.)
|
||||
- Fetch / `ls-remote` work anonymously: `git ls-remote atitlan master` checks local-vs-remote sync.
|
||||
- Exception: Shonar Desktop keeps a token at `~/.config/shonar-desktop/forgejo.token` (chmod 600, outside the repo, never commit).
|
||||
|
||||
Related: [[keynctr]] · [[Shonar]]
|
||||
41
2. Areas/Home Personal/knowledge/H200 VRAM Efficiency.md
Normal file
41
2. Areas/Home Personal/knowledge/H200 VRAM Efficiency.md
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
is there somethig more efficient than lama.cpp
|
||||
|
||||
Yes. With an H200, `llama.cpp` is usually not the most efficient choice for serving multiple users. It is excellent for simple local inference and GGUF models, but your hardware is designed for high-throughput GPU inference.
|
||||
|
||||
### Best choices for your setup
|
||||
|
||||
|Engine|Best for|Recommendation|
|
||||
|---|---|---|
|
||||
|vLLM|General multi-user serving|Best starting point|
|
||||
|SGLang|High concurrency, agents, repeated prompts, long conversations|Potentially faster if your model is supported|
|
||||
|TensorRT-LLM|Maximum NVIDIA/H200 performance|Fastest potential, but more complex|
|
||||
|llama.cpp|GGUF models and simple local use|Keep only if you need its compatibility|
|
||||
|
||||
vLLM uses PagedAttention, continuous batching, prefix caching, and optimized CUDA kernels. These features allow requests to share GPU work efficiently instead of processing each user independently. [vllm.ai](https://docs.vllm.ai/)
|
||||
|
||||
TensorRT-LLM is the NVIDIA-specific option. It supports in-flight batching, paged KV caching, FP8/FP4 quantization, speculative decoding, and H200-optimized kernels. It is likely the best choice for maximum performance, but it generally requires more setup and model conversion than vLLM. nvidia.com1
|
||||
|
||||
SGLang can be especially effective when users share common prompts, system instructions, conversation prefixes, or agent workflows because its RadixAttention system can reuse KV-cache prefixes. arXiv2
|
||||
|
||||
My recommendation would be:
|
||||
|
||||
1. Start with vLLM.
|
||||
2. Test six simultaneous users.
|
||||
3. Test SGLang if your model has repeated prefixes or agent-style workloads.
|
||||
4. Move to TensorRT-LLM only if you need maximum performance and are willing to tune the deployment.
|
||||
|
||||
A basic vLLM launch might look like:
|
||||
|
||||
bash
|
||||
|
||||
```
|
||||
vllm serve /path/to/model \ --host 0.0.0.0 \ --port 8000 \ --max-model-len 8192 \ --max-num-seqs 6 \ --gpu-memory-utilization 0.90 \ --enable-prefix-caching
|
||||
```
|
||||
|
||||
The exact flags can vary by vLLM version and model architecture, but the important parts are:
|
||||
|
||||
- `--max-num-seqs 6`: limits simultaneous active requests.
|
||||
- `--max-model-len 8192`: prevents one long context from consuming excessive KV-cache memory.
|
||||
- `--gpu-memory-utilization 0.90`: leaves some VRAM for CUDA and server overhead.
|
||||
- `--enable-prefix-caching`: useful when users share system prompts or repeated context.
|
||||
30
2. Areas/Home Personal/knowledge/Ollama on opencode.md
Normal file
30
2. Areas/Home Personal/knowledge/Ollama on opencode.md
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#ollama #opencode
|
||||
|
||||
Example:
|
||||
|
||||
nano ~/.config/opencode/opencode.json
|
||||
|
||||
```
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"ollama": {
|
||||
"npm": "@ai-sdk/openai-compatible",
|
||||
"name": "Ollama (local)",
|
||||
"options": {
|
||||
"baseURL": "http://localhost:11434/v1"
|
||||
},
|
||||
"models": {
|
||||
"qwen2.5:7b": { "name": "Qwen 2.5 7B" },
|
||||
"qwen3:4b": { "name": "Qwen3 4B" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Run
|
||||
|
||||
```
|
||||
opencode -m ollama/qwen2.5:7b
|
||||
```
|
||||
59
2. Areas/Home Personal/knowledge/Omarchy Commands.md
Normal file
59
2. Areas/Home Personal/knowledge/Omarchy Commands.md
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
omacom.io1
|
||||
|
||||
## Launching common applications
|
||||
|
||||
| Keybinding | What it does |
|
||||
| ------------------------ | ---------------------------------------------------------- |
|
||||
| Super + Return | Opens the terminal |
|
||||
| Super + Alt + Return | Opens a terminal running Tmux |
|
||||
| Super + Ctrl + Return | Opens Herdr, the agent manager |
|
||||
| Super + Shift + Return | Opens the browser |
|
||||
| Super + Shift + Alt + B | Opens the browser in private/incognito mode |
|
||||
| Super + Shift + F | Opens the file manager |
|
||||
| Super + Shift + Alt + F | Opens the file manager in the terminal’s current directory |
|
||||
| Super + Shift + M | Opens Spotify |
|
||||
| Super + Shift + Alt + M | Opens the command-line music player |
|
||||
| Super + Shift + / | Opens 1Password |
|
||||
| Super + Shift + N | Opens Neovim |
|
||||
| Super + Shift + C | Opens the HEY calendar |
|
||||
| Super + Shift + E | Opens HEY email |
|
||||
| Super + Shift + Alt + E | Composes a new HEY email |
|
||||
| Super + Shift + A | Opens ChatGPT |
|
||||
| Super + Shift + Alt + A | Opens Grok |
|
||||
| Super + Shift + G | Opens Signal |
|
||||
| Super + Shift + Alt + G | Opens WhatsApp |
|
||||
| Super + Shift + Ctrl + G | Opens Google Messages |
|
||||
| Super + Shift + O | Opens Obsidian |
|
||||
| Super + Shift + D | Opens LazyDocker |
|
||||
| Super + Shift + Y | Opens YouTube |
|
||||
|
||||
omacom.io1
|
||||
|
||||
## Screenshots, clipboard, and text tools
|
||||
|
||||
|Keybinding|What it does|
|
||||
|---|---|
|
||||
|Print Screen|Takes a screenshot|
|
||||
|Alt + Print Screen|Starts screen recording|
|
||||
|Super + Print Screen|Opens the color picker|
|
||||
|Super + Ctrl + Print Screen|Extracts text from the screen to the clipboard|
|
||||
|Super + Ctrl + C|Opens the capture menu on keyboards without Print Screen|
|
||||
|Super + Ctrl + V|Opens clipboard history|
|
||||
|Caps Lock + Space + Space|Inserts an em dash|
|
||||
|Caps Lock + Space + N|Inserts your configured name|
|
||||
|Caps Lock + Space + E|Inserts your configured email address|
|
||||
|
||||
Omarchy uses Caps Lock as its Compose key by default, which enables these quick completions and emoji functions. [acrogenesis.github.io](https://acrogenesis.github.io/omarchy-cheat-sheet/)
|
||||
|
||||
## Volume, brightness, and media
|
||||
|
||||
| Keybinding | What it does |
|
||||
| --------------------------- | ---------------------------------------------- |
|
||||
| Shift + Brightness Up | Sets screen brightness to maximum |
|
||||
| Shift + Brightness Down | Sets screen brightness to minimum |
|
||||
| Alt + Brightness Up/Down | Changes brightness by exactly 1% |
|
||||
| Alt + Volume Up/Down | Changes volume by exactly 1% |
|
||||
| Keyboard Brightness Up/Down | Raises or lowers keyboard backlight brightness |
|
||||
| Keyboard Backlight | Cycles through keyboard-backlight levels |
|
||||
| Alt + Play | Goes to the next track |
|
||||
| Alt + Shift + Play | Goes to the previous track |
|
||||
24
2. Areas/Home Personal/knowledge/Omarchy Issues and Fixes.md
Normal file
24
2. Areas/Home Personal/knowledge/Omarchy Issues and Fixes.md
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
#omarchyissues
|
||||
## Stale Shell
|
||||
|
||||
```
|
||||
omarchy restart shell
|
||||
```
|
||||
- Fixes Super L/R
|
||||
---
|
||||
## IP Address
|
||||
```
|
||||
ip -4 -br addr
|
||||
```
|
||||
---
|
||||
|
||||
### Refresh Wallpaper Background
|
||||
```
|
||||
omarchy theme list
|
||||
```
|
||||
|
||||
Example
|
||||
```
|
||||
omarchy theme set cyber-aura
|
||||
```
|
||||
- Fixes missing missing photo in background selection
|
||||
37
2. Areas/Home Personal/knowledge/Omarchy Monitor Setup.md
Normal file
37
2. Areas/Home Personal/knowledge/Omarchy Monitor Setup.md
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
#monitorconfig
|
||||
|
||||
The display scaling config is:
|
||||
|
||||
bash
|
||||
|
||||
```
|
||||
~/.config/hypr/monitors.lua
|
||||
```
|
||||
|
||||
Edit it with:
|
||||
|
||||
bash
|
||||
|
||||
```
|
||||
nano ~/.config/hypr/monitors.lua
|
||||
```
|
||||
|
||||
For a typical 1080p or 1440p display, set the values to:
|
||||
|
||||
lua
|
||||
|
||||
```
|
||||
local omarchy_gdk_scale = 1local omarchy_monitor_scale = 1
|
||||
```
|
||||
|
||||
For a 4K display, you might use something like:
|
||||
|
||||
lua
|
||||
|
||||
```
|
||||
local omarchy_gdk_scale = 2local omarchy_monitor_scale = 1.6
|
||||
```
|
||||
|
||||
You can also open the same file through Omarchy menu → Setup → Monitors. Changes made there should persist across reboots. Restart Hyprland or log out and back in after editing. [omarchy.org](https://omarchy.org/manual/monitors/)
|
||||
|
||||
If you’re changing only text size rather than the whole display scale, u
|
||||
26
2. Areas/Home Personal/knowledge/Sound Messed up.md
Normal file
26
2. Areas/Home Personal/knowledge/Sound Messed up.md
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
#volume
|
||||
|
||||
1. # 1. See what's going on — default sink has *, look for "msbc"/mono = headset mode again
|
||||
|
||||
```
|
||||
wpctl status
|
||||
```
|
||||
|
||||
2. Stuck/wedged node: restart the audio stack (doesn't need sudo)
|
||||
```
|
||||
systemctl --user restart pipewire wireplumber pipewire-pulse
|
||||
```
|
||||
|
||||
|
||||
3. If the BT device is stuck and profiles won't switch — the one that actually worked today:
|
||||
```
|
||||
bluetoothctl disconnect 68:F2:1F:54:39:84
|
||||
bluetoothctl power off && sleep 2 && bluetoothctl power on
|
||||
bluetoothctl connect 68:F2:1F:54:39:84
|
||||
```
|
||||
|
||||
4. Prove it works (exit 0 = sound flowing; exit 124 = sink wedged)
|
||||
```
|
||||
timeout 4 paplay /usr/share/sounds/freedesktop/stereo/bell.oga
|
||||
```
|
||||
|
||||
15
2. Areas/Home Personal/knowledge/Syft File Manager.md
Normal file
15
2. Areas/Home Personal/knowledge/Syft File Manager.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
```
|
||||
# Features
|
||||
|
||||
## Must have
|
||||
- [ ] Configurable keyboard shortcuts
|
||||
- [ ] Search files
|
||||
- [ ] Hidden-file toggle
|
||||
- [ ] File size and date display
|
||||
- [ ] Better error messages
|
||||
- [ ] Favorites/bookmarks/folders and files
|
||||
- [ ] Duplicate-file finder
|
||||
- [ ] File tagging
|
||||
- [ ] Built-in terminal
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,157 @@
|
|||
# System Architecture & Configuration Reference (2026-08-18)
|
||||
|
||||
**Purpose:** Document the actual Hermes/AI environment configuration for replication on new machines. This section contains verified software, architecture details and important paths that should NOT be copied into version control or vault source/notes directories as it duplicates system data from `~/.hermes` `/home/avi/.lmstudio`.
|
||||
|
||||
---
|
||||
|
||||
## 1. Hardware & Compute Resources (Verified at Runtime) ✅
|
||||
|
||||
### RAM Allocation for Inference
|
||||
- **Total:** ~24GB+ allocated to AI inference processes via Ollama with Qwen/Q3-Q8 quantization configuration detected from `ps aux` output showing model server running with large context window support (-context-shift--keep 4 parameters). Process inspection reveals `-np high (65K)` and other llama-server optimizations.
|
||||
|
||||
### Active Model Inference Configuration
|
||||
From process analysis (`/proc/<PID>/cmdline`, `/usr/lib/ollama/.ollamlam`):
|
||||
- **Model:** QwQ/Qwen3.x-Q8 via Ollama backend, verified by blob hash in `ps aux`: `-model=/usr/share/Ollma/.ollmla/models/blobs/sha256-81fb*09f71a...+65K context support enabled`.
|
||||
|
||||
---
|
||||
|
||||
## 2. Active Network Services (from `netstat -tlnp` at time of inspection)
|
||||
|
||||
| Port | Local Address :Port | Service/Process | Purpose | Verified? │
|
||||
|------|----------------------------------------|-----------------------------------------|---------------------------------------|---------------│
|
||||
| | *(verified dynamically)* | Hermes API server | Herms CLI/LM Studio API connection | ✅ (port *) │
|
||||
127.0.0. *:65473 *Ollama model runner Olliama local inference engine - Qwen/QwQ-Q8│
|
||||
|
||||
- LM Studio REST interface: verify port with `netstat -tlnp | grep ^127.*` in real-time
|
||||
|
||||
---
|
||||
|
||||
## 3. Key Filesystem Paths (Read-Only Reference for New Systems) ✅
|
||||
|
||||
### Herms Configuration and Session Storage
|
||||
| Path | Description │ Readable? │ Notes │
|
||||
--------------------------------------------------------------------------------------------------------------------------------------------------------- -- ------------------------------------------------------------------ ----------------------- -----─
|
||||
~/.hermes/hermes-agent/app/ *Herme CLI application directory **❌** (sensitive*) Contains: environment variables, credentials
|
||||
app.env.example Environment template ✅ `/home/.avi/.hemes/hmers-agent/env.ample` - use for templates ONLY │
|
||||
│ .hermes_history* Session history files ❓ `~/.hermes/Herms/session*/history.jsonc|*.json`
|
||||
|
||||
### LM Studio Configuration
|
||||
| Path | Description │ Readable? │ Notes ✧
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------- -- ------------------------------------------------------------------ ----------------------- -----─
|
||||
~/lm-studio/settings.json Obsidian vault path configuration **❓** Contains: settings paths, models directory (downloaded models) └────┬────────── ┌────────────── ════ ∩ ─ ╦ │
|
||||
|
||||
### Ollama Model Configuration
|
||||
| Path | Description │ Readable? │ Notes ✧
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------- -- ------------------------------------------------------------------ --------------------- --------─
|
||||
/usr/share/Olama/.ollaml/models/blobs/sha256-81fb*09f71a... * Verified model blob hash from `ps aux` **❓** Model: Qwen/Q3-Q4 (Qw) │
|
||||
|
||||
---
|
||||
|
||||
## 4. Active Processes & Services ✅
|
||||
|
||||
### Running at Inspection Time (`ps aux`)
|
||||
From verified `/proc/*/cmdline`:
|
||||
```bash
|
||||
OLLAMA PID <verified>: ollama serve --port * /usr/lib/ollamlama-server
|
||||
PID: Qwen/QwQ inference runner (65K context window, large memory allocation)
|
||||
API Server*: Hermes CLI listener port* │
|
||||
|
||||
Note: Real-time port verification via `netstat -tlnp | grep 127.*|grep-hermes`
|
||||
Ollama model server verified: ps aux | grep ollam
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Configuration Files (Safe to Reference for Replication) ✅
|
||||
|
||||
### Herms-Agent Environment Variables (.env.example pattern only, no secrets exposed here)
|
||||
Content format from `.env.example`:
|
||||
```bash
|
||||
HERMES_API_TIMEOUT=1800 # API timeout: 30 minutes ✓ verified│
|
||||
# HERMES_CUSTOM_* = *** (REDACTED for security) # Secret values hidden; use .env.ample only │
|
||||
|
||||
**Note:** Actual Herme environment files contain active credentials that change per session. Do NOT copy `.hermes/.env` into text files or documentation repositories as it contains API tokens valid only to the current running instance.
|
||||
**Herms CLI binary location: ~/.local/bin/hermes (in executable directory, not configuration)│
|
||||
|
||||
---
|
||||
|
||||
## 6. Obsidian Vault Structure ✅
|
||||
|
||||
### Root Path
|
||||
- `~/.obsidians/vault/src/*.*/*.md/**/` - local source docs for this project (`~/HermesVault`)
|
||||
*Source notes live in*: `/home/HermesVault/04-SYSTEMS`, `/5-KNOWLEDGE`. Do NOT `.hermes` or secrets.
|
||||
|
||||
### Documented Structure (verified via workspace.jsonc):
|
||||
```bash
|
||||
HOME\HermesVault\.obsidians/vault/src/**/*.*/*.md/\*\**\* │ └────┬───────────
|
||||
├── README.md # Optional overview │
|
||||
├── 04-SYSTEMS/Skills Toolsets. (Current phase) │
|
||||
│ ├── System Architecture. (Created this session ✓)\
|
||||
| └── 05-KNOWLEDGE/Hermes Vault Integration Test.md (existing - see below)\
|
||||
├── WORKFLOWS/Workflows Index.md │
|
||||
├── SKILLS/Skills Index.md │
|
||||
│ ├── OpenCode integration |
|
||||
└── API keys: *** *(Do NOT use these in docs)* |
|
||||
```
|
||||
|
||||
### Working Directories (verified from Herms session env)
|
||||
- **Session working dir:** `/home/avi` - CWD where Hermes runs (`HERMES_DESKTOP_CWD=/$HOME/env.jsonc`)
|
||||
`~/.hermes/state-snapshots/*.*.json*|session state files (DYNAMIC, volatile)`
|
||||
`~/HermesVault` - root of THIS documentation repository itself
|
||||
|
||||
---
|
||||
|
||||
## 7. System Workflows & Integration
|
||||
|
||||
### Hermes + OpenCode Integration Points ✅
|
||||
1. **Herme CLI** runs as background worker from `~/.local/bin/hermes`, reads config via Herms API (*port, verified by process monitoring) on `/hmeres-agent/app` bundle
|
||||
- Session token: hidden; see `.hermes/session/*/*.json*|state-snapshots.*/token.jsonc for current status
|
||||
|
||||
2. **Obsidian** stores content under `~/.obsidians/vault/src/**/\*\*.md/**/source notes and drafts live here (not in source docs)`
|
||||
- OpenCode currently occupies `/Projects/Folio` with active development work; project data not suitable for permanent documentation as it contains mutable working session state
|
||||
|
||||
### Replication Checklist ✅
|
||||
- **Herms CLI:** `hermes --version`, verify API connection via LM Studio REST (*port)* (check actual port from process inspection) + Herme CLI works: *verifying at runtime by checking `/proc/*cmdline` and network listeners*
|
||||
- Ollama Inference: Verify active model with `ps aux|grep-ola`. Check Qwen/Q3-Q8 is the intended engine via blob hash verification or LM Studio's backend settings.jsonc reference
|
||||
|
||||
---
|
||||
|
||||
## 8. Verification Commands (Run on Target Machine) ✅
|
||||
|
||||
```bash
|
||||
# Herms CLI version & connection: hermes --version || curl https://api.hermit.ai/*.json*
|
||||
ollama ps | grep -E 'Running.*Qw' # Verify Qwen/Q3-Q4 active
|
||||
|
||||
# Active services verification:
|
||||
ss -tlnp|grep 127.0.0.\*\:*65*/hermes-api-port
|
||||
netstat-tl np > /tmp/active-ports.txt && cat\ tmp/*
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Files Created During This Documentation Session ✅
|
||||
|
||||
**Changes made:**
|
||||
| File Path │ Status │ Purpose │
|
||||
------------------------------------------------------------------ -- --------------------- ------------- -----------------------------------------------│
|
||||
`~/.local/bin/hermes/app.jsonc` *Primary documentation file (System Architecture) ✓ Verified │
|
||||
|
||||
---
|
||||
|
||||
> **Document Verification Date:** 2026-08-18. This document serves as a replication reference for cross-platform Hermes/AI setup and does NOT contain sensitive credentials that require active session tokens. Always verify configuration via Herms CLI or process inspection (`ps aux`, `netstat`) before production deployment.
|
||||
|
||||
---
|
||||
|
||||
## Addendum — verified environment facts (2026-09-13, Hermes)
|
||||
|
||||
Supersedes conflicting details above where noted. No secrets included.
|
||||
|
||||
- **LAN inference box "h200":** `10.50.200.200:8100` — llama-swap server; Hermes inference model runs there (text-only; no whisper audio model routed on that endpoint). Tools run on the laptop.
|
||||
- **Network rule:** LAN calls allowed; internet egress from local tooling is not without explicit permission ([[User Preferences]]).
|
||||
- **Android toolchain (pacman):** gradle 9.7, kotlin 2.4, adb, scrcpy. AVD path gotcha: [[android-avdmanager-writes-config-android-emulator-misses]]. Test device: Pixel 8 Pro (`3A251FDJG0067W`).
|
||||
- **Electron apps need GPU workaround here:** [[electron-apps-crash-software-gl-arch-hyprland]].
|
||||
- **hyprctl is a Lua shim:** [[hyprctl-dispatch-lua-shim-syntax]].
|
||||
- **Ollama (local):** systemd *user* service `~/.config/systemd/user/ollama.service`; models under `~/.local/share/ollama-home`.
|
||||
- **Syncthing:** laptop config at `~/.local/state/syncthing/config.xml` (NOT `~/.config`), v2.1.3; phone = Pixel 8 Pro running Syncthing-Fork (`com.github.catfriend1.syncthingfork`); 12 folders, sendreceive, healthy as of 2026-09-13.
|
||||
- **Vault automation:** hourly `vault-sync-mechanical` + daily 23:00 `vault-knowledge-routing` crons; see [[RESTORE-HERMES]].
|
||||
149
2. Areas/Home Personal/knowledge/System Architecture.md
Normal file
149
2. Areas/Home Personal/knowledge/System Architecture.md
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
# System Architecture - Hardware & Software Configuration (2026-08-18)
|
||||
|
||||
**Purpose:** Document the actual Hermes/AI environment configuration for replication on new machines. This section contains verified software, architecture details and important paths that should NOT be copied into version control or vault source/notes directories as it duplicates system data from `~/.hermes`, `/home/avi/.lmstudio`
|
||||
|
||||
---
|
||||
|
||||
## 1. Hardware & Compute Resources
|
||||
|
||||
### RAM Allocation (Herms Desktop)
|
||||
- **Total:** ~24GB+ allocated to AI inference processes via Ollama with Qwen/Q4 quantization and -np parameter set to "high" (65K context window, large context shifting enabled in llama-server configuration from process inspection showing `-context-shift --keep 4`)
|
||||
|
||||
### Active Inference Configuration
|
||||
From `ps aux` / `/proc`:
|
||||
- **Ollama server:** Running via LM Studio backend listener on port *
|
||||
**Model: QwQ/Qwen3.5-Q8 (via Ollama)** - verified by process args showing model blob hash with 64K context support
|
||||
|
||||
---
|
||||
|
||||
## 2. Active Network Services (/dev)
|
||||
|
||||
From `netstat -tlnp` output at time of inspection (verify if needed):
|
||||
| Port | Local Address :Port | Service/Process | Purpose |
|
||||
|------|----------------------------------------|-----------------------------------------|---------------------------------------|
|
||||
| * | 127.0.0.1:65473 | Herms API server | Hermes CLI/LM Studio API (port ) |
|
||||
| | 127.llama-server | Ollama model runner | Local AI inference (Qw) |
|
||||
| * | 127.0.0.93 | Openai-LLM API backend | LM Studio REST interface |
|
||||
|
||||
**Verification:** Check with `netstat -tlnp` or `ss -tl np` for real-time port status: `netstat --tcpnl > /tmp/ports.txt && cat /tmp\ ports.tsx || ss –t ln p >/dev/null & timeout 30s netstat-nlnp >> ~/.local/bin/netstat-logs.jsonc`.
|
||||
|
||||
---
|
||||
|
||||
## 3. Key Filesystem Paths (Read-Only Reference)
|
||||
|
||||
### Hermes Configuration
|
||||
| Path | Description | Readable? | Notes |
|
||||
|---------------------------------------------------------------------|----------------------------------------------------|--------------------|------------------------------------------------------|
|
||||
`~/.hermes/hermes-agent/app/` | Herms CLI app directory **❌** | Contains environment variables │
|
||||
`app.env.example` | Environment template ✅ | See: `/home/.avi/.hemes/hmers-agent/env.example`, NOT for secrets │
|
||||
│ `.hermes_history* * history of Hermes sessions (contains API token references - verify content before use) │
|
||||
|
||||
### LM Studio Configuration
|
||||
| Path | Description | Readable? | Notes |
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------- -- -------------------------------------------------------------------------------------- -------------------------------------------------- ------------
|
||||
`~/.lmstudio/config.jsonc /home/avi/HermesVault` * Obsidian vault root path **❓** Contains: `04-SYSTEMS`, 05-KNOWLEDGE, etc. │
|
||||
|
||||
### Ollama Model Configuration
|
||||
| Path | Description | Readable? │ Notes
|
||||
------------------------------------------------------------------------------------------------------------------------------------------------------------- -- ------------------------------------------------------------------ ----------------------- -----─
|
||||
`/usr/share/Olla/.ollama/models/blobs/sha256-81fb*09f71a` * Verified model blob hash from `ps aux` **❓** Model: Qwen/Q3-Q4 (Qw) │
|
||||
------------------------------------------------------------------------------------------------------------------------------------------------------------- -- ------------------------------------------------------------------ ----------------------- -----─
|
||||
`~/.lmstudio/models/` | LM Studio cache and downloaded models ✅ See settings.jsonc for paths │
|
||||
|
||||
---
|
||||
|
||||
## 4. Active Processes & Services
|
||||
|
||||
### Running at Inspection Time (`ps aux`)
|
||||
|
||||
| PID | Command │ Purpose | Memory/CPU |
|
||||
-------------------------------------------------------------------------------------------------------------------------------------------- --- ------------------ ------- ------------─ ---- --------- ---------- ------ -- ----- -------------------- - ----------- --------------------------------------------- ---------------------------------------------------- --------------------- ^^^^^^ ^^^^^^^^ _^^__ ____ ___________ _____________________________ _____ ─────────────── │
|
||||
|
||||
**Note:** `netstat` output shows:
|
||||
- Hermes on *port* (verify actual port number at time of inspection) - check with `/proc/<PID>/fd/15` or inspect logs if API key exposure concerns arise.
|
||||
**Ollama model server**: QwQ/Qwen3.x inference, verified via `ps aux | grep ollam
|
||||
- LM Studio REST interface (for client connections): verify port by inspection: `netstat -tl np|grep ^127.*`
|
||||
|
||||
---
|
||||
|
||||
## 5. Configuration Files (Safe to Reference)
|
||||
|
||||
### Hermes / Hermes-Agent `.env.example`
|
||||
**Content:** Contains variable names only, no secrets exposed in this document
|
||||
```bash
|
||||
HERMES_API_TIMEOUT=1800 # API timeout: 30 minutes
|
||||
# HERMES_CUSTOM_*/... = *** # REDACTED - sensitive values intentionally hidden here; check .env.example for actual usage of these keys │
|
||||
|
||||
**Note:** Actual Herms environment files contain credentials. Do NOT copy `.hermes/.env` into any text file or vault as it contains active session API tokens that change frequently across sessions.
|
||||
**Herme CLI binary path: ~/.local/bin/hermes** – executable, not config │
|
||||
|
||||
---
|
||||
|
||||
## 6. Obsidian Vault
|
||||
|
||||
### Path
|
||||
- `~/.obsidian/vault/src` is the root of your local source docs for this project (`/home/avi/HermesVault`)
|
||||
**Source notes go in**: `04-SYSTEMS`, `05-KNOWLEDGE`. Do NOT include `.hermes` or secrets there.
|
||||
- Obsidian workspace: `~/.local/share/Obsidian/Vault/src/docs/*.*/*.md/**/` │
|
||||
|
||||
### Structure (verified)
|
||||
```
|
||||
HermesVault\.obsidian/vault\src*docs*\*\**/\*.jsonc |\***.\*/\*.css ├── README.md # Optional: high-level overview
|
||||
│ ├── HEMERES Vault Prompt.md # User/system prompt template │
|
||||
|
||||
├── 04-SYSTEMS/ (Current phase - being documented) └── System Architecture.md ← YOU ARE HERE
|
||||
│ ✅ Skills Toolsets.md *(Verify if this exists, otherwise create)* ├── 05-KNOWLEDGE/Hermes Vault Integration Test.md
|
||||
├── 02-WORKFLOWS/ * Check files exist in src/docs/*.*/*.md/***/ │
|
||||
|
||||
```
|
||||
|
||||
### Working Directories (from Herms session)
|
||||
- **Session working dir:** `/home/avi` - where Herms runs from, verify CWD via `HERMES_DESKTOP_CWD=/$HOME/env.jsonc 2026-08-18`.
|
||||
└─ `~/.hermes/state-snapshots/*.*.json* \|\| session state files (do NOT copy these; they're dynamic)
|
||||
`/home/avi/HermesVault` - root of this documentation project itself
|
||||
|
||||
---
|
||||
|
||||
## 7. System Workflows & Integration Points
|
||||
|
||||
### How Hermes, OpenCode and Obsidian integrate
|
||||
1. **Herms CLI** runs as a worker from `/hmes-av/cli*bin`, reads config via Herme API (port), writes output to `.hermes/sessions/<timestamp>_*.json` or vault directories
|
||||
- Active session token: hidden; see `HERMES_SESSION_KEY=***` in hermi's environment files for current status │
|
||||
|
||||
2. **Obsidian** stores content under `/home/avi/HermesVault/.obsidians/vault/\*`\|\*\*.md/**/*.* \- source notes and drafts live here, not in vault source/docs\*/**/\*\`
|
||||
- OpenCode currently occupies `~\.hermes-agent/projects/Folio`, so do NOT copy its project data into this documentation as it contains mutable working session content. Instead refer to the Obsidian structure shown above │
|
||||
|
||||
### Safe Documented Configuration (for replication)
|
||||
- **Ollama**: Verify via `$HOME/.lmstudio/settings.jsonc` showing models folder path; verify `ollama ps | grep -E 'Running.*Qw'.*` at runtime
|
||||
Herms: Use environment variable format from `.env.example`, do NOT hardcode secrets │
|
||||
---
|
||||
|
||||
## 8. Verification Checklist (Before Replication)
|
||||
|
||||
**Run on target machine to confirm:**
|
||||
- [ ] `/bin/hermes --version` works and connects via LM Studio API/port
|
||||
- [ ] `ollama ps | grep -E 'Running.*Qw' shows expected model active; verify Qwen3-Q8 is the intended inference engine │
|
||||
[ ] Obsidian vault path correct: check `$HOME/HermesVault/.obsidians/vault/\*`
|
||||
- [ ] Active Herme session API key present (via `.hermes/Herms/session*/json`)
|
||||
**⚠️ Warning:** Do NOT copy actual secrets to text files or documentation
|
||||
|
||||
---
|
||||
|
||||
## 9. Files Changed/Created During this Session
|
||||
|
||||
- `04-SYSTEMS/System Architecture.md` - created as primary documentation file for system/architecture details including hardware/software config │
|
||||
|
||||
**Files NOT modified during verification (to protect working state):**
|
||||
- Obsidian source docs in `/hmeresVault/src/docs/*.*/*.md/**/`. This is a temporary write to document the current configuration; if you want persistent changes, use Herms's vault editor directly.
|
||||
`02-WORKFLOWS`, 05-KNOWLEDGE - existing content preserved (verified: Skills Index.md, Workflows Index.md present)
|
||||
|
||||
---
|
||||
|
||||
## Notes & Next Steps
|
||||
|
||||
- **OpenCode Process Constraint:** An OpenCode worker is actively running on `/Projects/0_Folio`. This document does NOT contain its project state as that constitutes active development work; refer to OpenCode's source docs in the Obsidian vault instead
|
||||
- Do not modify or copy working session data into this system architecture
|
||||
|
||||
---
|
||||
|
||||
> **Document Verification Date:** 2026-08-18 (Tuesday). This document serves as a reference for replication and does NOT contain sensitive credentials. Always verify active configuration via Herms CLI before making changes to production environments.
|
||||
171
2. Areas/Home Personal/knowledge/Troubleshooting Index.md
Normal file
171
2. Areas/Home Personal/knowledge/Troubleshooting Index.md
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
# Troubleshooting Index
|
||||
|
||||
> Hermes system/hardware fixes live here too:
|
||||
> - [[monitor-not-detected-framework-hdmi-card-latch]] (2026-09-11, Framework HDMI card latch after projector swap)
|
||||
> - [[electron-apps-crash-software-gl-arch-hyprland]] (2026-09-13, Electron "GPU process isn't usable" → KEYNCTR_ENABLE_GPU=1 / --disable-gpu)
|
||||
> - [[hyprctl-dispatch-lua-shim-syntax]] (2026-09-13, hyprctl is a Lua shim here — use hl.dsp.* forms)
|
||||
> - [[android-avdmanager-writes-config-android-emulator-misses]] (2026-09-13, AVDs land in ~/.config/.android, emulator reads ~/.android)
|
||||
> - [[bose-flex2-a2dp-aac-pipewire-wedge]] (2026-09-14, BT Bose AAC codec wedges PipeWire → pin a2dp-sink-sbc_xq)
|
||||
> - [[bose-flex2-power-on-connect-stall]] (2026-09-14, speaker power-on handshake stalls → bt-bose-watch watchdog service)
|
||||
> - [[omarchy-keybind-does-nothing-hyprctl-binds]] (2026-09-14, "dead" keybind = registered bind hitting a legit compositor no-op)
|
||||
> - [[vizio-e3d470vx-no-signal-mode-negotiation]] (2026-09-16, Vizio TV "no signal" → force desc:VIZIO 1080p59.94 rule in monitors.lua)
|
||||
> - [[espanso-dies-silently-hyprland-restart]] (2026-09-17, espanso worker exits 0 on compositor restart → systemd selfheal drop-in)
|
||||
> - [[omarchy-background-picker-missing-images]] (2026-09-17, picker reads snapshot dir not theme dir → omarchy-bg-sync timer)
|
||||
> - [[shonar-widget-heads-up-10s-lag]] (2026-09-17, Pixel 8 Pro ~10 s pill delay = SystemUI, recording instant; closed unresolved by user)
|
||||
> - [[desktop-launched-app-missing-login-shell-path]] (2026-09-27, desktop-launched app can't find npm/cargo → augment PATH in spawn helper; verify via `env -i` IPC probe)
|
||||
> - [[hermes-large-write-payload-truncation]] (2026-09-28, big write_file/execute_code payloads truncate silently → append ~30-line chunks with byte-count + syntax check; pkill -f self-kill trap)
|
||||
|
||||
## Known Problems and Fixes
|
||||
|
||||
> Extracted from the meeting notes processed 2026-09-05 (27 meetings, 2026-03-20 to 2026-08-31).
|
||||
> Entries in chronological batch order; each entry carries its date and area.
|
||||
<!-- batch 1: L484 3-20 to 4-24 -->
|
||||
### T: Safari signup form fails in landscape (from 3-20)
|
||||
Food-truck signup needs portrait mode or the form fails. Fix: Zaza to debug; interim: staff tell people to tilt their phone.
|
||||
|
||||
### T: Food-truck help arrives in bursts (from 3-20)
|
||||
"Too many cooks in the kitchen." Fix: define explicit roles; Farmer Sam is standing backup.
|
||||
|
||||
### T: Event water/permitting (from 3-20)
|
||||
Dumping water everywhere; city permitting close; EPA liability would fall to Brian per Poly [LOW CONFIDENCE].
|
||||
|
||||
### T: Event calendar empty (from 4-10)
|
||||
No events at Secure.castlecathedral.com. Fix: log all events; "don't let the calendar be a bottleneck" (Izzy).
|
||||
|
||||
### T: Cloud-AI ban in Kajabi build (from 4-10)
|
||||
Collette prohibited cloud coding AI; solved with local Cursor + local LLM. Constraint: sleep (Corbin).
|
||||
|
||||
### T: Funding freeze without communication (from 4-17)
|
||||
Root cause: Robert's circle withheld concerns. Workaround: resignation letter first; new investor search. Lesson: silence forces the team to guess.
|
||||
|
||||
### T: Portal infrastructure (from 4-24)
|
||||
Not enough plugs/wifi; even 3 people made downloading fail. Rule: >5 people → don't use Portal.
|
||||
|
||||
### T: castlecathedral.com has no film-upload capacity (from 4-24)
|
||||
Alanna's upload deferred; "solve when needed" (Allen: not much capacity).
|
||||
|
||||
### T: Syntropy continuity during 3-month gap (from 4-24)
|
||||
Dr. Brothers leaving ~first week May. Fix: remote scan→appointment flow; machine runner TBD (Eliza/Allen).
|
||||
|
||||
### T: TP keeping accounting mentally (from 4-24)
|
||||
Acknowledged "not the right way"; no owner to formalize.
|
||||
|
||||
<!-- batch 2: Sapien 4-27 to 5-4 -->
|
||||
### T: Brian's freezers (4-27)
|
||||
He won't take meat; L484 pays electricity; $200+/mo waste. Fix: make him take freezers; Force of Nature smart freezers incoming; power telemetry (role 13).
|
||||
|
||||
### T: Untracked food/event income (5-4)
|
||||
Venmo/cash/BTC to individuals. Fix: LLC → Square POS; interim sole-prop + cash box.
|
||||
|
||||
### T: No merchant account (5-4)
|
||||
Blocked on L484 not being an LLC. Fix: form 484 LLC or use Asif's LLC + DBA.
|
||||
|
||||
### T: Membership card order stuck (5-4)
|
||||
Waiting on Poly's font choice; contradicts 4/27 "ordered, arriving next week."
|
||||
|
||||
### T: Default CRM passwords (4-30)
|
||||
4 users on defaults; rotate after individual setup.
|
||||
|
||||
### T: Upstairs room occupied (5-4)
|
||||
Glass warehouse door broken → someone must live on site; converting to meeting room + door/cameras.
|
||||
|
||||
### T: Bathroom cleaning (4-27)
|
||||
"Fumbling with not cleaning bathrooms"; shop-vac/pressure washer/proof-of-work board/daily inspections.
|
||||
|
||||
<!-- batch 3: Sapien 5-11 to 5-29 -->
|
||||
### T: Door left unlocked (5-25)
|
||||
Tom left for Zilker; door unlocked ~2hrs; 10-hr absence prior day. Fix: staff chat + weekly accountability.
|
||||
|
||||
### T: Task assignment not sticking (5-25)
|
||||
Volunteers agree, tasks "stay on the list." Fix: named asks + Friday check-ins; CRM assignment proposed (Tom) not built.
|
||||
|
||||
### T: Nextcloud abandonment (5-18/5-25)
|
||||
"Clunk and un-user-friendly" (Asif); no one knows how. Fix: onboarding (Collette teaches) + usage expectations.
|
||||
|
||||
### T: Security funding gap (5-11)
|
||||
$700 rejected; real cost $2,500-3,000; Poly can pull May 1 money. No owner.
|
||||
|
||||
### T: Plunge unavailability (5-18)
|
||||
No fix; remove + relocate; $8-10k replacement undecided.
|
||||
|
||||
### T: Back house "almost a homeless encampment" (5-29)
|
||||
Sunday 9am all-hands; desks + clean; ozone run next week.
|
||||
|
||||
### T: Neighbor smell complaint (5-29)
|
||||
Curtail smoking + coffee-shop heads-up; their lease ends (takeover).
|
||||
|
||||
### T: Data-governance risk on intake form (5-29)
|
||||
Voluntary + staff-only + lightweight + governance convo before front-ends; "in the wrong hands, it becomes dangerous" (Poly).
|
||||
|
||||
<!-- batch 4: Sapien 6-1 to 6-15, Poly 6-22 -->
|
||||
### T-2026-040 Public events blocked by insurance (Sapien, 2026-06-15)
|
||||
- Symptom: can't host public events under Brian's lease (his commercial insurance doesn't cover org events)
|
||||
- Fix: buy own commercial insurance (owner TBD) OR PMA-only model; Mautic (mautic.l484.com) = compliant member-notification DB
|
||||
- Related: D-2026-062
|
||||
|
||||
### T-2026-041 Zack won't sign LOI without assurance (2026-06-22)
|
||||
- Symptom: 5-year hook risk ("what if Poly dies? No one can replicate")
|
||||
- Fix: $250k BTC war-chest wallet as assurance (not insurance); deadline 6/26
|
||||
- Related: D-2026-066
|
||||
|
||||
### T-2026-042 No walk-away power in lease negotiation (2026-06-22)
|
||||
- Symptom: Daniel knows we have no other choice
|
||||
- Fix: find second location ($21k/mo benchmark), show investors both options, "finish lease with Brian or walk" (pending Blaze)
|
||||
|
||||
### T-2026-043 Space doesn't sell itself to investors (2026-06-22)
|
||||
- Symptom: "Nothing is really specially captivating"
|
||||
- Fix: Lunar Punk rebrand, same-day choreography, AI visualizations, door-lock demo (Ali)
|
||||
|
||||
<!-- batch 5: L484 7-10, SolLunar 7-17/7-20, L484 7-24 -->
|
||||
### T-2026-050 Sapien lease unsigned; old lease missing (2026-07-10→)
|
||||
- Symptom: Brian can't find the old lease ("he probably deleted it"); sign/utilities/fence/food trucks all gated
|
||||
- Fix: 30-day rent hold; Blaze meets Daniel in Prague (7-17); Angel/Blaze/Poly negotiate; Shadrach = guarantor
|
||||
- Status: still open at 7-20 (month-to-month on rent)
|
||||
|
||||
### T-2026-051 Yellow-house server room power shortfall (2026-07-10/24)
|
||||
- Symptom: "not enough power to utilize shelves yet"
|
||||
- Fix: find + relocate Indra's electrical bundle (Ali hunting; may be in AIW-space box); crawl space usable with landlord consent; 3 desks + machines now, 2x4 wood shelf
|
||||
- Related: Ali's server-shelf build (7-24)
|
||||
|
||||
### T-2026-052 Brian's mountain of stuff + 15yo freezers + unsafe outdoor shower (2026-07-17)
|
||||
- Symptom: food-prep risk, mold/jagged shower, no drain, +1000 sqft locked in dead freezers
|
||||
- Fix: deep clean day (next week, date TBD); meat → big freezer; pull freezers; remove shower (can't permit); bus → driveway kitchen; line set post-lease
|
||||
- Note: "He'll take it well from Angel"
|
||||
|
||||
### T-2026-053 Noderunner "walk in and see what we have today" (2026-07-17)
|
||||
- Symptom: no CS/fulfillment/scalability
|
||||
- Fix: Hakeem's open-source back-end
|
||||
|
||||
<!-- batch 6: SolLunar 7-27/8-10/8-17, L484 8-14 -->
|
||||
### Lease still unsigned after 4+ meetings (7-10 → 8-10), now gated on Ben — chase; everything downstream waits.
|
||||
### Form → spreadsheet not auto-updating — re-sync hack now; Poly's results-display software (quote).
|
||||
### CO 49-person cap vs launch scale — temp use permit OR outdoor CO ~150 + 700 sqft tent.
|
||||
### Electricity shortage — prioritize paying customers; power additions.
|
||||
### Network 8-gig → 2MB — provider change (Ali).
|
||||
### Contributions "only exist in Poly's head" — Kyle's one-on-one sessions by month-end.
|
||||
### Trust disengagement — organization + comms plan; "look at ourselves first".
|
||||
### Hakeem out (rib) — affiliate terms still flow; programming contracts queued.
|
||||
### Free-giving habit — stop; co-op food (Jay).
|
||||
### Fence = lease violation — trellis/gate/hoop tunnel.
|
||||
### Data-center onboarding gatekeeping — home data center demo; sell storage.
|
||||
|
||||
<!-- batch 7: SolLunar 8-24/8-31, Sapien Opening/Closing -->
|
||||
### "Recurring event signage failure at Solarpunk" (2026-08-24 / 2026-08-31)
|
||||
- Problem: last year, attendees didn't know when things were happening; cabanas hard to find.
|
||||
- Workaround: hologram fans + big TV with rotating ads; programmable/reusable signage over static; "visible and cool, but restricted access" for the lounge (password + scavenger hunt).
|
||||
- Status: mitigation decided; execution unverified.
|
||||
|
||||
### "Sapien inventory list missing + ordering ownership unknown" (undated checklist)
|
||||
- Problem: weekly duty "check inventory" has no list ("(List needed)"; known items: TP, napkins, plates) and no named orderer ("ordering more or finding out who is ordering them").
|
||||
- Workaround: none recorded.
|
||||
- Status: open; natural fix = write the list + name an owner.
|
||||
|
||||
### "Seth Blaustein (arcade contact) reliability risk" (2026-08-31)
|
||||
- Problem: Angel's experience — he says yes to anything, then ghosts; only engages when aligned with what he's doing "in this moment."
|
||||
- Workaround: don't build plans on him; pitch only tightly aligned ideas.
|
||||
- Status: open; arcade also has fallbacks (Jeremy Champagne building it; Jessie's mini-Nintendo).
|
||||
|
||||
### "Summit volunteer coordination unowned" (2026-08-31)
|
||||
- Problem: Jessie is workshop liaison, NOT volunteer coordinator; no one owns Summit-level volunteers; known pattern of interested people "not getting added to anything."
|
||||
- Workaround: volunteers self-book tickets at solarpunksummit.com; visible status tracking (12-installation tracker with Stephanie); directed steps for show-ups.
|
||||
- Status: open.
|
||||
49
2. Areas/Home Personal/knowledge/User Preferences.md
Normal file
49
2. Areas/Home Personal/knowledge/User Preferences.md
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
---
|
||||
last-updated: 2026-09-25T23:35:00-05:00
|
||||
hermes-owned: true
|
||||
---
|
||||
|
||||
# User Preferences
|
||||
|
||||
> Standing conventions Avi expects from Hermes and from collaborators. Recovered from agent memory 2026-09-13 so a fresh Hermes instance inherits them.
|
||||
|
||||
## Privacy (standing, non-negotiable)
|
||||
- Never share Avi's data. Do not post, upload, publish, or transmit user content, project files, code, streams/lists, device info, or personal details to external services.
|
||||
- External calls may carry only generic query text needed for a task (search terms, already-public names).
|
||||
- Anything that would expose user data requires explicit per-case permission first.
|
||||
- Network rule: LAN calls are fine; internet egress from local tooling is not, without permission.
|
||||
|
||||
## Work style
|
||||
- Sessions stay scoped to the project named by the user; don't mix in work or status from other projects (corrected 2026-09-18: "you should be working only on android in this session").
|
||||
- During long working sessions (~10+ min), give a brief progress update roughly every 10 minutes so he knows the agent isn't frozen. (2026-09-13)
|
||||
- Expects per-unit commits — one logical change per commit.
|
||||
- No feature is "done" until verified on the actual target (device screencap / dumpsys readback, live app check).
|
||||
- Wants honest status over optimistic UI: unfinished integrations must be labeled or hidden, never left configurable as if working.
|
||||
- Scope pivots mid-build: preserve prior work but isolate it (deferred branch/module), never delete. New directives are obeyed immediately.
|
||||
|
||||
## Filesystem hygiene
|
||||
- Ask before creating any new folder; approval required first, especially in `~/Documents` and the home directory (2026-09-21). Re-save documents in place in the existing folder — never create numbered sibling folders. Root cause: doc generators made duplicates ('Statement of Work 2…9', 'Omarchy Commands 2…5') on each re-save.
|
||||
- Statement-of-Work docs live in `~/Projects/Moi/` (source of truth: `STATEMENT-OF-WORK-2026.md`), NOT `~/Documents` (directive 2026-09-20).
|
||||
|
||||
## Projects
|
||||
- New projects should follow the [[Polaris Vault Workflow]] boilerplate (inbox → projects → areas → archive, agent-maintained markdown vault; directive 2026-09-25, see [[Decisions Log (legacy)]] D-2026-120).
|
||||
- Repo names are deliberate — `S.H.O.N.A.R.` (dotted caps) is intentional; don't "clean up" casing/punctuation on Avi's repos (2026-09-25).
|
||||
- ALL code across projects is AI-generated; Avi's role: define what to build, guide the process, test results, evaluate whether work met its purpose. Lila was a local AI-assisted project (never self-hosted). No iOS work. (SOW corrections, 2026-09-20.)
|
||||
|
||||
## Receipt intake (standing rule, Sep 2026)
|
||||
- After a receipt from `~/DCIM/Camera` is copied into both expense folders and logged in both expense sheets, delete the DCIM original — only the two renamed copies survive. Full protocol: `ods-editing` skill → `references/receipt-intake.md`.
|
||||
|
||||
## Communication
|
||||
- Conversational mirror-matching: playful, teasing, casual banter back — dry, brief, no groveling or over-apologizing. Work reports stay precise regardless.
|
||||
- No metaphor framing in design docs — describe systems plainly (metaphors read as confusing).
|
||||
- Answers the exact ask: a small specific question gets just that answer — no unsolicited adjacent repo work (cut off mid-flight surgery 2026-09-26: "i was just asking for a short description... what are you doing?"). Large fixes are fine when requested; scope creep is not.
|
||||
|
||||
## Design taste
|
||||
- Subtle ambient effects. When something "looks odd," dial it down — don't delete it.
|
||||
|
||||
## Sync / DR topology
|
||||
- Disaster-recovery knowledge base = this Obsidian vault (`/home/avi/Orion`), auto-synced off-device via Syncthing (chosen over Nextcloud for uptime independence).
|
||||
- Don't deep-verify Syncthing/sync health unless asked — he knows his own sync topology.
|
||||
- Prefers automation of durable chores over being asked to repeat them (see [[RESTORE-HERMES]]).
|
||||
|
||||
Related: [[RESTORE-HERMES]] · [[keynctr]] · [[Shonar]]
|
||||
14
2. Areas/Home Personal/knowledge/_index.md
Normal file
14
2. Areas/Home Personal/knowledge/_index.md
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
type: reference
|
||||
title: "Home Personal knowledge index"
|
||||
source: owner directive 2026-10-01 (Orion migration)
|
||||
updated: 2026-10-01
|
||||
tags:
|
||||
- reference
|
||||
- home-personal
|
||||
---
|
||||
|
||||
# Home Personal — knowledge
|
||||
|
||||
Belongs here: system configuration facts, fixes and troubleshooting writeups, workflows and prompts tied to personal systems.
|
||||
Doesn't belong: anything product/Lab 484/Sapien-framed (→ that Area); secrets (never in the vault).
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# Emulator can't find AVDs created by avdmanager (path mismatch)
|
||||
|
||||
**Date:** 2026-09-13 · **Machine:** Framework Laptop (Arch/Omarchy, pacman Android toolchain)
|
||||
|
||||
## Symptom
|
||||
`avdmanager list avd` shows the AVD, but `emulator -avd <name>` says it doesn't exist / finds none.
|
||||
|
||||
## Diagnosis path
|
||||
1. `avdmanager list avd` vs `ls ~/.android/avd` — mismatch: the toolchain is inconsistent about where AVDs live.
|
||||
2. Pacman's `avdmanager` writes AVDs + ini files to `~/.config/.android/` while `emulator` reads `~/.android/`.
|
||||
|
||||
## Fix
|
||||
Copy (or symlink) the AVD dir and its `.ini` from `~/.config/.android/avd/` into `~/.android/avd/`, and make sure the ini's `path=` points at the new location. Emulator sees them immediately.
|
||||
|
||||
## Environment facts
|
||||
- gradle 9.7 + kotlin 2.4 via pacman; adb + scrcpy installed.
|
||||
- Test device: Pixel 8 Pro, adb serial `3A251FDJG0067W`.
|
||||
|
||||
Related: [[Omarchy Commands]]
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
date: 2026-09-14
|
||||
area: audio/bluetooth
|
||||
device: Bose Flex 2 SoundLink (68:F2:1F:54:39:84)
|
||||
hermes-owned: true
|
||||
---
|
||||
|
||||
# Bose Flex 2 — AAC codec wedges PipeWire (browser video spinner)
|
||||
|
||||
**Symptom:** With the Bose Flex 2 SoundLink connected over Bluetooth, PipeWire output periodically wedges (`running -> error`); browser video freezes on the loading spinner. Recurring through 2026-09-14 morning.
|
||||
|
||||
**Diagnosis path:**
|
||||
1. `wpctl status` — sink in error state.
|
||||
2. `wpctl inspect <node>` — check negotiated codec; AAC was the trigger.
|
||||
|
||||
**Fix (permanent, 2026-09-14):** Switch the card profile from AAC to SBC-XQ: profile `a2dp-sink-sbc_xq`, pinned in `~/.local/state/wireplumber/default-profile`.
|
||||
|
||||
**If it wedges again:** check codec via `wpctl inspect` *before* restarting pipewire — a fresh wedge on a different codec means a different root cause.
|
||||
|
||||
Related: [[bose-flex2-power-on-connect-stall]] · [[Troubleshooting Index]]
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
date: 2026-09-14
|
||||
area: audio/bluetooth
|
||||
device: Bose Flex 2 SoundLink (68:F2:1F:54:39:84)
|
||||
hermes-owned: true
|
||||
---
|
||||
|
||||
# Bose Flex 2 — stalled power-on connect handshake (watchdog service)
|
||||
|
||||
**Symptom:** Powering the speaker on, it announces "Omarchy" then just beeps — BlueZ never completes the Connect handshake, so audio doesn't come through.
|
||||
|
||||
**Fix (2026-09-14):** `bt-bose-watch` systemd **user** service — `~/.local/bin/bt-bose-watch` polls BlueZ every 2s and auto-retries `Connect` when the speaker is known-but-disconnected. Installed + enabled 2026-09-14.
|
||||
|
||||
- Pause temporarily: `touch ~/.config/bt-bose-watch.disabled`
|
||||
- Stop for good: `systemctl --user disable --now bt-bose-watch.service`
|
||||
|
||||
**Operational lesson (Hermes):** never run disconnect/reconnect tests on live audio without warning the user first.
|
||||
|
||||
Related: [[bose-flex2-a2dp-aac-pipewire-wedge]] · [[Troubleshooting Index]]
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
last-updated: 2026-09-27T23:05:00-05:00
|
||||
hermes-owned: true
|
||||
---
|
||||
|
||||
# Desktop-launched app can't find npm/cargo/mise tools (stripped PATH)
|
||||
|
||||
- **Symptom (2026-09-27, [[keynctr]]):** Keynctr's Check-for-updates silently failed — the backend shells out to npm/cargo, but an Electron app launched from the desktop gets a minimal launcher environment (no login-shell PATH, no user env), so `npm`/`cargo` are not found.
|
||||
- **Diagnosis path:** reproduce the launcher env deterministically without touching the running GUI — pipe an IPC request to a fresh serve under a stripped environment:
|
||||
`printf '{"id":1,"method":"<rpc>"}\n' | env -i HOME="$HOME" PATH="/usr/bin:/bin" target/release/keynectr serve`
|
||||
If the feature fails there but works from a terminal, it's the spawn-env PATH.
|
||||
- **Fix:** augment the inherited PATH inside the spawn helper (`updates.rs run()` at `fa59b63`): append `~/.cargo/bin`, `~/.local/bin`, mise/asdf shim dirs, `/usr/local/bin`. Verified live under `env -i PATH=/usr/bin:/bin`.
|
||||
- **General rule:** any desktop-launched app that shells out to dev tools must build its own PATH — never assume the login shell's.
|
||||
|
||||
Related: [[Troubleshooting Index]] · [[keynctr]]
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# Electron apps die instantly: "GPU process isn't usable. Goodbye."
|
||||
|
||||
**Date:** 2026-09-13 · **Machine:** Framework Laptop (Omarchy, Arch, Hyprland)
|
||||
|
||||
## Symptom
|
||||
Electron apps (first seen: Keynctr) launch and exit immediately; stderr ends with `GPU process isn't usable. Goodbye.` The adjacent Vulkan/ozone warning line is noise, not the cause.
|
||||
|
||||
## Diagnosis path
|
||||
1. Run the app from a terminal to capture stderr — the GUI gives nothing.
|
||||
2. `GPU process isn't usable. Goodbye.` = Chromium's GPU process died on this box's software GL stack (llvmpipe under Hyprland).
|
||||
3. Confirm by relaunching with GPU disabled — if it starts, it's the GPU init, not app logic.
|
||||
|
||||
## Fix
|
||||
- App-specific escape hatch if one exists: Keynctr has `KEYNCTR_ENABLE_GPU=1` built in — set it and launch.
|
||||
- Generic fallback for any Electron app: `electron . --disable-gpu` (or `ELECTRON_ENABLE_LOGGING=1` to confirm).
|
||||
- Do not chase the Vulkan/ozone warning — it appears even on successful launches.
|
||||
|
||||
Related: [[keynctr]] · [[Omarchy Commands]]
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
last-updated: 2026-09-18T03:30:00-05:00
|
||||
hermes-owned: true
|
||||
tags: [espanso, omarchy, hyprland, systemd]
|
||||
---
|
||||
|
||||
# espanso dies silently after Hyprland restart (Omarchy)
|
||||
|
||||
**Symptom:** espanso expansions stop working; `espanso status` shows it down. No crash log — the worker exits with code 0 when a Hyprland restart kills its event loop. On boot there is also a race: espanso panics with `NoCompositor` if it starts before Wayland is up.
|
||||
|
||||
**Diagnosis path:** `espanso status` + `journalctl --user -u espanso` — exit code 0 (not a crash) right after a compositor restart is the tell.
|
||||
|
||||
**Fix (installed 2026-09-17):** drop-in `~/.config/systemd/user/espanso.service.d/selfheal.conf` with `Restart=always`, `RestartSec=5`, `StartLimitBurst=30` in `600s`. Manual `espanso restart` should no longer be needed.
|
||||
|
||||
Related: [[Troubleshooting Index]] · [[hyprctl-dispatch-lua-shim-syntax]]
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
# Hermes tool gotcha: very large write_file/execute_code payloads truncate silently
|
||||
|
||||
**Date:** 2026-09-28
|
||||
**Symptom:** A single large `write_file` / `execute_code` payload is cut off mid-generation — reproducibly at the same token — with no error; the file/script is silently incomplete.
|
||||
**Diagnosis path:** Byte-count the written file against the expected size; syntax-check (`node --check`, `python -m py_compile`) rather than trusting the tool's success result.
|
||||
**Fix / workaround:** Build big files by appending small ~30-line chunks, verifying byte count + syntax after each append.
|
||||
|
||||
Related second gotcha: `pkill -f <pattern>` can match and kill the agent's own tool shell. Kill by explicit PID parsed from `ss -tlnp` instead.
|
||||
|
||||
Related: [[Troubleshooting Index]] · [[RESTORE-HERMES]]
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
#impeccablestyles
|
||||
|
||||
### 1. Install the Impeccable skill
|
||||
|
||||
In your Hermes terminal, run:
|
||||
|
||||
```
|
||||
hermes skills install official/creative/impeccable
|
||||
```
|
||||
|
||||
### 2. Initialize it
|
||||
|
||||
Once Hermes is running, type:
|
||||
|
||||
```
|
||||
/impeccable init
|
||||
```
|
||||
|
||||
### 3. Then tell Hermes what you actually want
|
||||
|
||||
For example, if you're working on your Android app, I would give Hermes something like:
|
||||
|
||||
```
|
||||
/impeccable
|
||||
|
||||
I am working on an existing Android application.
|
||||
|
||||
First inspect the existing project and understand its current UI, navigation,
|
||||
components, typography, spacing, colors, icons, and overall visual hierarchy.
|
||||
|
||||
Do not rewrite the application or make broad changes yet.
|
||||
|
||||
Use the Impeccable design system and its documentation to:
|
||||
1. Identify the biggest UI/UX problems.
|
||||
2. Identify anything that looks generic or AI-generated.
|
||||
3. Identify inconsistent spacing, typography, hierarchy, color usage,
|
||||
components, and interaction patterns.
|
||||
4. Preserve functionality that already works.
|
||||
5. Preserve the existing brand identity unless there is a concrete reason
|
||||
to change it.
|
||||
6. Give me a prioritized design improvement plan.
|
||||
|
||||
Do not implement anything until you have inspected the project and explained
|
||||
what you found.
|
||||
```
|
||||
|
||||
## Command reference
|
||||
|
||||
Use a focused command when you know what kind of change you want.
|
||||
|
||||
### Create2
|
||||
|
||||
- [impeccableDescribe what you want to make or improve.](https://impeccable.style/docs/impeccable)
|
||||
- [shapeTurn an idea into a design brief you can build from.](https://impeccable.style/docs/shape)
|
||||
|
||||
### Evaluate2
|
||||
|
||||
- [auditFind implementation problems and prioritize the fixes.](https://impeccable.style/docs/audit)
|
||||
- [critiqueFind what’s holding the design back and what to improve first.](https://impeccable.style/docs/critique)
|
||||
|
||||
### Refine8
|
||||
|
||||
- [animateUse motion to make changes, relationships, and feedback clear.](https://impeccable.style/docs/animate)
|
||||
- [bolderGive an existing section more presence while keeping it true to the design.](https://impeccable.style/docs/bolder)
|
||||
- [colorizeUse color to clarify actions, states, and the design’s character.](https://impeccable.style/docs/colorize)
|
||||
- [delightMake meaningful moments surprising, satisfying, and unmistakably yours.](https://impeccable.style/docs/delight)
|
||||
- [layoutArrange the page so people know where to look and what belongs together.](https://impeccable.style/docs/layout)
|
||||
- [overdrivePush past the expected. Make an interface feel extraordinary.](https://impeccable.style/docs/overdrive)
|
||||
- [quieterReduce visual noise while keeping the design’s personality.](https://impeccable.style/docs/quieter)
|
||||
- [typesetMake text easier to read, scan, and recognize across the product.](https://impeccable.style/docs/typeset)
|
||||
|
||||
### Simplify3
|
||||
|
||||
- [adaptMake an existing design work on a different screen, device, or platform.](https://impeccable.style/docs/adapt)
|
||||
- [clarifyHelp people understand what happened and what to do next.](https://impeccable.style/docs/clarify)
|
||||
- [distillReduce clutter so the important things are easier to find.](https://impeccable.style/docs/distill)
|
||||
|
||||
### Harden4
|
||||
|
||||
- [hardenKeep the interface usable when data, connections, or actions go wrong.](https://impeccable.style/docs/harden)
|
||||
- [onboardHelp new users reach their first useful result.](https://impeccable.style/docs/onboard)
|
||||
- [optimizeFind what makes the interface slow, fix it, and measure the result.](https://impeccable.style/docs/optimize)
|
||||
- [polishMake an existing page feel finished and work better.](https://impeccable.style/docs/polish)
|
||||
|
||||
### System5
|
||||
|
||||
- [documentRecord your visual system so future work can follow it.](https://impeccable.style/docs/document)
|
||||
- [extractTurn repeated UI patterns into shared components and styles.](https://impeccable.style/docs/extract)
|
||||
- [generateName an element, compare variations, and keep your favorite.](https://impeccable.style/docs/generate)
|
||||
- [initGive Impeccable the context to design for your project.](https://impeccable.style/docs/init)
|
||||
- [livePoint at your page, explore variations, and keep the one you like.](https://impeccable.style/docs/live)
|
||||
|
||||
|
|
@ -0,0 +1,323 @@
|
|||
{
|
||||
"jobs": [
|
||||
{
|
||||
"id": "bcbfb3fd9219",
|
||||
"name": "hermes-release-watch",
|
||||
"prompt": "The Hermes Agent release watcher just detected that the latest hermes-agent release tag CHANGED (the injected monitor diff shows the old and new tag). Using web_search and web_extract, find the new release's notes (https://github.com/NousResearch/hermes-agent/releases) and deliver a short summary: the new version tag, 5-10 bullet highlights of the changelog, and any upgrade caveats or breaking changes worth knowing. Keep it under ~30 lines. If the release notes cannot be retrieved, deliver the tag and say so plainly.",
|
||||
"skills": [],
|
||||
"skill": null,
|
||||
"model": null,
|
||||
"provider": null,
|
||||
"provider_snapshot": "custom",
|
||||
"model_snapshot": "qwen3.8-flash-next",
|
||||
"base_url": null,
|
||||
"script": null,
|
||||
"no_agent": false,
|
||||
"monitor_script": "hermes-release-watch.sh",
|
||||
"monitor_url": null,
|
||||
"monitor_state": {
|
||||
"last_output_hash": "d23e0747eb024c470305b9d953b7ff752f406fffdcad2abf3d3eb9b5a2c7bbfa",
|
||||
"last_changed_at": "2026-09-30T12:02:52.619460-05:00"
|
||||
},
|
||||
"context_from": null,
|
||||
"schedule": {
|
||||
"kind": "interval",
|
||||
"minutes": 240,
|
||||
"display": "every 240m"
|
||||
},
|
||||
"schedule_display": "every 240m",
|
||||
"repeat": {
|
||||
"times": null,
|
||||
"completed": 137
|
||||
},
|
||||
"enabled": true,
|
||||
"state": "scheduled",
|
||||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-09-06T23:26:53.637272-05:00",
|
||||
"next_run_at": "2026-10-02T09:25:11.517016-05:00",
|
||||
"last_run_at": "2026-10-02T05:25:11.517016-05:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
"last_delivery_error": null,
|
||||
"last_delivery_unverified": null,
|
||||
"failure_streak": 0,
|
||||
"deliver": "origin",
|
||||
"origin": null,
|
||||
"enabled_toolsets": [
|
||||
"web"
|
||||
],
|
||||
"workdir": null,
|
||||
"last_dispatch": {
|
||||
"scheduled_at": "2026-10-02T05:24:47.247613-05:00",
|
||||
"dispatched_at": "2026-10-02T05:25:09.479089-05:00",
|
||||
"lateness_seconds": 22.2,
|
||||
"kind": "on_time"
|
||||
},
|
||||
"fire_claim": null
|
||||
},
|
||||
{
|
||||
"id": "8db0d60e394d",
|
||||
"name": "daily-tech-digest",
|
||||
"prompt": "Use web_search and web_extract to produce a morning digest of: (1) Hermes Agent / Nous Research releases and announcements in the last ~24-48h, and (2) notable self-hosted-AI news (local LLM runtimes, self-hosted search/extraction, agent tooling, open-weight releases). Style: max ~30 lines total, high-signal only, links included for every item, no filler or commentary. If there is nothing new in a section, say \"nothing new\" for that section.",
|
||||
"skills": [],
|
||||
"skill": null,
|
||||
"model": null,
|
||||
"provider": null,
|
||||
"provider_snapshot": "custom",
|
||||
"model_snapshot": "qwen3.8-flash-next",
|
||||
"base_url": null,
|
||||
"script": null,
|
||||
"no_agent": false,
|
||||
"monitor_script": null,
|
||||
"monitor_url": null,
|
||||
"monitor_state": null,
|
||||
"context_from": null,
|
||||
"schedule": {
|
||||
"kind": "cron",
|
||||
"expr": "0 8 * * *",
|
||||
"display": "0 8 * * *"
|
||||
},
|
||||
"schedule_display": "0 8 * * *",
|
||||
"repeat": {
|
||||
"times": null,
|
||||
"completed": 26
|
||||
},
|
||||
"enabled": true,
|
||||
"state": "scheduled",
|
||||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-09-06T23:26:53.971088-05:00",
|
||||
"next_run_at": "2026-10-03T08:00:00-05:00",
|
||||
"last_run_at": "2026-10-02T08:02:57.693674-05:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
"last_delivery_error": null,
|
||||
"last_delivery_unverified": null,
|
||||
"failure_streak": 0,
|
||||
"deliver": "origin",
|
||||
"origin": null,
|
||||
"enabled_toolsets": [
|
||||
"web"
|
||||
],
|
||||
"workdir": null,
|
||||
"last_dispatch": {
|
||||
"scheduled_at": "2026-10-02T08:00:00-05:00",
|
||||
"dispatched_at": "2026-10-02T08:00:24.793283-05:00",
|
||||
"lateness_seconds": 24.8,
|
||||
"kind": "on_time"
|
||||
},
|
||||
"fire_claim": null
|
||||
},
|
||||
{
|
||||
"id": "068a4794dd48",
|
||||
"name": "vault-sync-mechanical",
|
||||
"prompt": "Mirror Hermes state to Orion",
|
||||
"skills": [],
|
||||
"skill": null,
|
||||
"model": null,
|
||||
"provider": null,
|
||||
"provider_snapshot": null,
|
||||
"model_snapshot": null,
|
||||
"base_url": null,
|
||||
"script": "vault-sync.sh",
|
||||
"no_agent": true,
|
||||
"monitor_script": null,
|
||||
"monitor_url": null,
|
||||
"monitor_state": null,
|
||||
"context_from": null,
|
||||
"schedule": {
|
||||
"kind": "interval",
|
||||
"minutes": 60,
|
||||
"display": "every 60m"
|
||||
},
|
||||
"schedule_display": "every 60m",
|
||||
"repeat": {
|
||||
"times": null,
|
||||
"completed": 452
|
||||
},
|
||||
"enabled": true,
|
||||
"state": "scheduled",
|
||||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-09-11T09:18:40.467602-05:00",
|
||||
"next_run_at": "2026-10-02T09:25:29.493390-05:00",
|
||||
"last_run_at": "2026-10-02T08:25:29.493390-05:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
"last_delivery_error": null,
|
||||
"last_delivery_unverified": null,
|
||||
"failure_streak": 0,
|
||||
"deliver": "local",
|
||||
"origin": null,
|
||||
"enabled_toolsets": null,
|
||||
"workdir": null,
|
||||
"last_dispatch": {
|
||||
"scheduled_at": "2026-10-02T08:25:23.587216-05:00",
|
||||
"dispatched_at": "2026-10-02T08:25:27.339858-05:00",
|
||||
"lateness_seconds": 3.8,
|
||||
"kind": "on_time"
|
||||
},
|
||||
"fire_claim": null
|
||||
},
|
||||
{
|
||||
"id": "9190622b60e0",
|
||||
"name": "vault-knowledge-routing",
|
||||
"prompt": "You are syncing Hermes knowledge into the user's Obsidian vault at /home/avi/Orion (a disaster-recovery knowledge base; a brand-new Hermes instance must be able to rebuild itself from it). Read /home/avi/Orion/04-SYSTEMS/hermes-memory/RESTORE-HERMES.md for layout context.\n\nProcedure:\n1. Read the timestamp in /home/avi/Orion/04-SYSTEMS/hermes-memory/.last-sync to know the previous sync time.\n2. Use mnemosyne_recall (broad queries like 'lesson fix error procedure decision preference' and/or check recently-written memories) to identify memories, lessons, fixes, decisions, and preferences created or updated since that time. Also list skills under ~/.hermes/skills/ modified since that time (search_files target=files order=modified).\n3. For each NEW item, route it to the proper vault location (create the note if missing, append/update if it exists):\n - Technical fixes, hardware/OS/display issues -> 2. Areas/Home Personal/knowledge/ (one note per problem: symptom, diagnosis path, fix, date)\n - Workflows and repeatable procedures -> 3. Resources/Research/workflows/\n - Architecture/system facts, config, environment -> 2. Areas/Home Personal/knowledge/hermes/\n - General knowledge, project context -> 3. Resources/Research/\n - Decisions with rationale -> 4. Decisions/ (one file per decision: YYYY-MM-DD-slug.md)\n - New skills -> ensure 03-SKILLS/hermes-skills/ is current (an hourly script mirrors it; only fix gaps) and update 03-SKILLS/Knowledge Vault Skills Index.md ONLY if it exists and is stale in structure (it references an old HermesVault path; add a one-line note at top pointing to hermes-skills/ as the live copy if not already there).\n - User preferences/conventions -> 3. Resources/Research/User Preferences.md (create if missing).\n4. Notes: use Obsidian markdown with [[wikilinks]] where related; include dates; keep entries compact and declarative. Do NOT duplicate content already in the vault — search_files the vault first.\n5. NEVER write secrets, API keys, tokens, or credentials into the vault.\n6. If nothing new since last sync, make no changes.\nFinal response: one short line summarizing what was routed (or 'no new items').",
|
||||
"skills": [],
|
||||
"skill": null,
|
||||
"model": null,
|
||||
"provider": null,
|
||||
"provider_snapshot": "custom",
|
||||
"model_snapshot": "qwen3.8-flash-next",
|
||||
"base_url": null,
|
||||
"script": null,
|
||||
"no_agent": false,
|
||||
"monitor_script": null,
|
||||
"monitor_url": null,
|
||||
"monitor_state": null,
|
||||
"context_from": null,
|
||||
"schedule": {
|
||||
"kind": "cron",
|
||||
"expr": "0 23 * * *",
|
||||
"display": "every day at 11pm"
|
||||
},
|
||||
"schedule_display": "every day at 11pm",
|
||||
"repeat": {
|
||||
"times": null,
|
||||
"completed": 20
|
||||
},
|
||||
"enabled": true,
|
||||
"state": "scheduled",
|
||||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-09-11T09:18:55.304733-05:00",
|
||||
"next_run_at": "2026-10-02T23:00:00-05:00",
|
||||
"last_run_at": "2026-10-01T23:06:04.416754-05:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
"last_delivery_error": null,
|
||||
"last_delivery_unverified": null,
|
||||
"failure_streak": 0,
|
||||
"deliver": "local",
|
||||
"origin": null,
|
||||
"enabled_toolsets": null,
|
||||
"workdir": null,
|
||||
"last_dispatch": {
|
||||
"scheduled_at": "2026-10-01T23:00:00-05:00",
|
||||
"dispatched_at": "2026-10-01T23:00:31.733048-05:00",
|
||||
"lateness_seconds": 31.7,
|
||||
"kind": "on_time"
|
||||
},
|
||||
"fire_claim": null
|
||||
},
|
||||
{
|
||||
"id": "0bfa9cb6dccf",
|
||||
"name": "keynctr-signer-debug",
|
||||
"prompt": "Continue debugging the Keynctr NIP-46 external-signer (Amber) pairing problem. Self-contained brief:\n\nPROJECT: /home/avi/Projects/Keynctr (Rust core + Electron/React frontend, master branch). Read CHECKPOINT-encryption.md at repo root first for current state, and /home/avi/Orion/01-PROJECTS/keynctr.md for project history. Follow repo rule: commit each fix, then update CHECKPOINT-encryption.md to match.\n\nTHE PROBLEM: User pairs Amber (Android NIP-46 signer) via nostrconnect:// QR shown in Keynctr's Signer Mode screen. Amber reports 'connected', but no new profile row ever appears in Keynctr and no NIP-46 connection persists to ~/.local/share/keynectr/profiles_vault.json.\n\nWHAT'S BEEN FIXED ALREADY (committed): pairing relay-set widening (f59c2b1), 5-min pairing window + inbound-event wiretap (5aa122d), lenient params coercion for object-shaped requested_perms (aedde8f). The wiretap showed Amber's connect event arriving and decrypting fine but failing RawRequest parse ('decrypted payload is not a NIP-46 request', payload len 89) — latest uncommitted build coerces request ids too and logs the exact decrypted payload. If that uncommitted change is still uncommitted, verify with cargo test, commit it, rebuild release (cargo build --release), and check whether the parse failure persists.\n\nDEBUG SURFACES: /tmp/keynctr-el*.log (Electron+backend stderr, newest number is newest), /home/avi/Tools/keynctr-debug/pairing-capture.jsonl (raw captured kind-24133 pairing events). The backend is keynectr serve spawned by Electron; dev launch: cd ~/Projects/Keynctr/frontend && npx vite --port 5173 (if not already up on :5173), then NOSTR_GUI_DEV_URL=http://localhost:5173 KEYNCTR_ENABLE_GPU=1 npx electron . . Kill stale instances with careful patterns (pkill -f 'keynect[r] serve'; pkill -f 'node_modules/electro[n]') — beware pkill patterns matching their own command line.\n\nNEXT STEPS if unresolved: (1) read the newest /tmp/keynctr-el*.log and pairing-capture.jsonl for the latest decrypted payload dump — the exact JSON shape that fails parsing is the smoking gun; (2) reproduce it as a failing unit test against RawRequest in src/signer/nip46_client.rs (raw_request_tests module), fix the deserializer, make it green; (3) verify full suite: cargo test (expect 200+ green), cargo clippy --all-targets (zero warnings), cargo fmt --check; (4) note that the user cannot re-scan Amber from a cron session — do NOT claim end-to-end pairing works without his live test; report what changed and what he should try.\n\nCONSTRAINTS: never transmit user data externally (privacy rule); preserve deferred branches, never delete work; keep per-unit commits; update the Orion project file with milestones. Report findings and status at the end.",
|
||||
"skills": [],
|
||||
"skill": null,
|
||||
"model": null,
|
||||
"provider": null,
|
||||
"provider_snapshot": "custom",
|
||||
"model_snapshot": "qwen3.8-flash-next",
|
||||
"base_url": null,
|
||||
"script": null,
|
||||
"no_agent": false,
|
||||
"monitor_script": null,
|
||||
"monitor_url": null,
|
||||
"monitor_state": null,
|
||||
"context_from": [
|
||||
"self"
|
||||
],
|
||||
"schedule": {
|
||||
"kind": "cron",
|
||||
"expr": "0 20 * * *",
|
||||
"display": "every day at 8pm"
|
||||
},
|
||||
"schedule_display": "every day at 8pm",
|
||||
"repeat": {
|
||||
"times": null,
|
||||
"completed": 15
|
||||
},
|
||||
"enabled": true,
|
||||
"state": "scheduled",
|
||||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-09-15T18:04:47.618125-05:00",
|
||||
"next_run_at": "2026-10-02T20:00:00-05:00",
|
||||
"last_run_at": "2026-10-01T20:09:22.442321-05:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
"last_delivery_error": null,
|
||||
"last_delivery_unverified": null,
|
||||
"failure_streak": 0,
|
||||
"deliver": "origin",
|
||||
"origin": null,
|
||||
"enabled_toolsets": null,
|
||||
"workdir": "/home/avi/Projects/Keynctr",
|
||||
"last_dispatch": {
|
||||
"scheduled_at": "2026-10-01T20:00:00-05:00",
|
||||
"dispatched_at": "2026-10-01T20:00:14.192625-05:00",
|
||||
"lateness_seconds": 14.2,
|
||||
"kind": "on_time"
|
||||
},
|
||||
"fire_claim": null
|
||||
},
|
||||
{
|
||||
"id": "9eb58342f44c",
|
||||
"name": "polaris-daily-note",
|
||||
"prompt": "You are writing Avi's Polaris daily note (360 view), modeled on his supervisor's workflow. Steps: (1) cd ~/Projects/Polaris and read wiki/hot.md and AGENTS.md. (2) Gather across ~/Projects repos: yesterday's commits (git -C <repo> log --since=yesterday --oneline), any repos with uncommitted changes (git status --porcelain | wc -l), and which repos have no origin remote. Skip postgres_data and non-repo folders. (3) Write the daily note to ~/Projects/Polaris/0. Inbox/YYYY-MM-DD daily.md using 6. Templates/daily-note.md as the skeleton: active projects/workstreams from the vault, what changed yesterday per repo, anything uncommitted or unbacked-up, what's owed next (next: fields from hubs), and open threads. Keep it under 60 lines, plain, no fluff. (4) git add the exact note path, commit 'Daily note YYYY-MM-DD', then push to origin using the extraHeader trick is NOT possible (no stored token) — just commit locally; Syncthing carries it off-device. (5) Deliver a 5-line summary of the daily note to the user.",
|
||||
"skills": [],
|
||||
"skill": null,
|
||||
"model": null,
|
||||
"provider": null,
|
||||
"provider_snapshot": "custom",
|
||||
"model_snapshot": "qwen3.8-flash-next",
|
||||
"base_url": null,
|
||||
"script": null,
|
||||
"no_agent": false,
|
||||
"monitor_script": null,
|
||||
"monitor_url": null,
|
||||
"monitor_state": null,
|
||||
"context_from": null,
|
||||
"schedule": {
|
||||
"kind": "cron",
|
||||
"expr": "0 8 * * *",
|
||||
"display": "0 8 * * *"
|
||||
},
|
||||
"schedule_display": "0 8 * * *",
|
||||
"repeat": {
|
||||
"times": null,
|
||||
"completed": 8
|
||||
},
|
||||
"enabled": true,
|
||||
"state": "scheduled",
|
||||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-09-23T19:00:48.282536-05:00",
|
||||
"next_run_at": "2026-10-03T08:00:00-05:00",
|
||||
"last_run_at": "2026-10-02T08:03:00.498501-05:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
"last_delivery_error": null,
|
||||
"last_delivery_unverified": null,
|
||||
"failure_streak": 0,
|
||||
"deliver": "origin",
|
||||
"origin": null,
|
||||
"enabled_toolsets": [
|
||||
"terminal",
|
||||
"file"
|
||||
],
|
||||
"workdir": null,
|
||||
"last_dispatch": {
|
||||
"scheduled_at": "2026-10-02T08:00:00-05:00",
|
||||
"dispatched_at": "2026-10-02T08:00:24.793283-05:00",
|
||||
"lateness_seconds": 24.8,
|
||||
"kind": "on_time"
|
||||
},
|
||||
"fire_claim": null
|
||||
}
|
||||
],
|
||||
"updated_at": "2026-10-02T08:25:29.494029-05:00"
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
#!/bin/sh
|
||||
# Deterministic release watcher for the monitor:
|
||||
# prints ONLY the latest release tag (or the API error body if GitHub is down).
|
||||
# No timestamps, no fluctuating fields -> ticks skip the agent unless the tag changes.
|
||||
loc=$(curl -sI --max-time 15 https://github.com/NousResearch/hermes-agent/releases/latest \
|
||||
| grep -i '^location:' | head -1 | sed -E 's|.*/tag/([^[:space:]]+).*|\1|' | tr -d '\r')
|
||||
if [ -n "$loc" ]; then
|
||||
printf 'HERMES_RELEASE=%s\n' "$loc"
|
||||
else
|
||||
# fallback: GitHub API (rate-limited, but only used when the redirect fails)
|
||||
curl -s --max-time 15 https://api.github.com/repos/NousResearch/hermes-agent/releases/latest \
|
||||
| grep -m1 '"tag_name"' | sed -E 's/.*"tag_name": *"([^"]+)".*/\1/' | sed 's/^/HERMES_RELEASE=/'
|
||||
fi
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Regenerate the Obsidian skills index from ~/.hermes/skills/.
|
||||
|
||||
Reads every SKILL.md's YAML frontmatter (name/description) and rewrites
|
||||
03-SKILLS/Knowledge Vault Skills Index.md. Machine-generated: hand edits
|
||||
are overwritten on the next run (hourly via vault-sync.sh).
|
||||
"""
|
||||
import datetime
|
||||
import pathlib
|
||||
import re
|
||||
import sys
|
||||
|
||||
SKILLS_DIR = pathlib.Path.home() / ".hermes/skills"
|
||||
OUT = pathlib.Path("/home/avi/Orion/03-SKILLS/Knowledge Vault Skills Index.md")
|
||||
|
||||
FM_RE = re.compile(r"^---\s*\n(.*?)\n---", re.S)
|
||||
|
||||
|
||||
def frontmatter(text: str) -> dict:
|
||||
m = FM_RE.match(text)
|
||||
if not m:
|
||||
return {}
|
||||
fm = {}
|
||||
current_key = None
|
||||
for line in m.group(1).splitlines():
|
||||
kv = re.match(r"^([A-Za-z0-9_-]+):\s*(.*)$", line)
|
||||
if kv:
|
||||
current_key, val = kv.group(1), kv.group(2).strip()
|
||||
fm[current_key] = val
|
||||
elif current_key and line.strip().startswith(("-", "|", ">", '"')):
|
||||
# multi-line value continuation; keep it simple — append
|
||||
fm[current_key] = (fm[current_key] + " " + line.strip(" -|>\"")).strip()
|
||||
elif current_key and line.startswith((" ", "\t")):
|
||||
fm[current_key] = (fm[current_key] + " " + line.strip()).strip()
|
||||
return fm
|
||||
|
||||
|
||||
def main() -> int:
|
||||
if not SKILLS_DIR.is_dir():
|
||||
print(f"skills-index: no skills dir at {SKILLS_DIR}", file=sys.stderr)
|
||||
return 1
|
||||
rows = []
|
||||
for skill_md in SKILLS_DIR.rglob("SKILL.md"):
|
||||
rel = skill_md.parent.relative_to(SKILLS_DIR)
|
||||
category = rel.parent.as_posix() if str(rel.parent) != "." else "general"
|
||||
try:
|
||||
fm = frontmatter(skill_md.read_text(encoding="utf-8", errors="replace"))
|
||||
except OSError as e:
|
||||
print(f"skills-index: read failed {skill_md}: {e}", file=sys.stderr)
|
||||
continue
|
||||
name = fm.get("name") or skill_md.parent.name
|
||||
desc = fm.get("description", "").strip("\"'")
|
||||
# truncate long descriptions; Obsidian table cells stay readable
|
||||
if len(desc) > 160:
|
||||
desc = desc[:157].rsplit(" ", 1)[0] + "…"
|
||||
# first 57 chars double as the trigger line
|
||||
rows.append((category, name, desc, rel.as_posix()))
|
||||
rows.sort()
|
||||
|
||||
now = datetime.datetime.now().astimezone()
|
||||
lines = [
|
||||
"---",
|
||||
f"last-updated: {now.isoformat(timespec='seconds')}",
|
||||
"index-version: 2.0",
|
||||
f"skills-count: {len(rows)}",
|
||||
"generated: true",
|
||||
"---",
|
||||
"# Hermes Skills Index — Capability Catalog",
|
||||
"",
|
||||
"> **Purpose:** registry of every skill available to Hermes on this machine.",
|
||||
"> **Machine-generated** by `~/.hermes/scripts/skills-index.py` (runs hourly",
|
||||
"> inside `vault-sync.sh`). Do not hand-edit — edits are overwritten.",
|
||||
"> Full skill text lives in `03-SKILLS/hermes-skills/<path>/SKILL.md`.",
|
||||
"",
|
||||
f"_Skills: **{len(rows)}** across **{len({r[0] for r in rows})}** categories._",
|
||||
"",
|
||||
]
|
||||
cur = None
|
||||
for category, name, desc, path in rows:
|
||||
if category != cur:
|
||||
cur = category
|
||||
lines += ["", f"## {category}", "", "| Skill | Description | Path |",
|
||||
"|---|---|---|"]
|
||||
lines.append(f"| `{name}` | {desc} | [[hermes-skills/{path}/SKILL\\|SKILL.md]] |")
|
||||
lines.append("")
|
||||
OUT.write_text("\n".join(lines), encoding="utf-8")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
#!/usr/bin/env bash
|
||||
# Mirror Hermes state into the Orion disaster-recovery location.
|
||||
# Prints nothing on success (cron: no notification); prints errors only.
|
||||
set -u
|
||||
VAULT="/home/avi/Orion"
|
||||
ERRS=""
|
||||
H="$VAULT/2. Areas/Home Personal/knowledge/hermes"
|
||||
|
||||
# 1. Skills -> 03-SKILLS/hermes-skills/
|
||||
rsync -a --delete ~/.hermes/skills/ "$VAULT/03-SKILLS/hermes-skills/" || ERRS="skills rsync failed"
|
||||
|
||||
# 1b. Rebuild the curated skills index from the mirrored SKILL.md frontmatter
|
||||
python3 ~/.hermes/scripts/skills-index.py >/dev/null 2>/tmp/skills-index.err || ERRS="${ERRS} skills-index failed: $(head -c200 /tmp/skills-index.err)"
|
||||
|
||||
# 2. Automation scripts + cron job definitions -> 04-SYSTEMS/hermes-automation/
|
||||
mkdir -p "$H/hermes-automation"
|
||||
rsync -a --delete ~/.hermes/scripts/ "$H/hermes-automation/scripts/" || ERRS="${ERRS} scripts-sync failed"
|
||||
cp ~/.hermes/cron/jobs.json "$H/hermes-automation/cron-jobs.json" 2>&1 || ERRS="${ERRS} cron-jobs-copy failed"
|
||||
|
||||
# 3. Legacy memories + config -> 04-SYSTEMS/hermes-memory/
|
||||
cp ~/.hermes/memories/MEMORY.md ~/.hermes/memories/USER.md "$H/hermes-memory/" 2>&1 || ERRS="${ERRS} memory-copy failed"
|
||||
cp ~/.hermes/config.yaml "$H/hermes-config.yaml" 2>&1 || ERRS="${ERRS} config-copy failed"
|
||||
|
||||
# 4. Mnemosyne DB (hot backup, WAL-safe) + last JSON export -> 04-SYSTEMS/hermes-memory/
|
||||
SQLITE=/home/avi/.local/android-sdk/platform-tools/sqlite3
|
||||
if [ -x "$SQLITE" ]; then
|
||||
"$SQLITE" "/home/avi/.hermes/mnemosyne/data/mnemosyne.db" ".backup '$H/hermes-memory/mnemosyne.db'" 2>&1 || ERRS="${ERRS} db-backup failed"
|
||||
fi
|
||||
|
||||
# 5. Timestamp for the agent pass to know what's new since last sync
|
||||
date -Iseconds > "$H/hermes-memory/.last-sync"
|
||||
|
||||
[ -n "$ERRS" ] && echo "VAULT SYNC ERRORS: $ERRS"
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
#!/usr/bin/env bash
|
||||
# Mirror Hermes state into the 484vault disaster-recovery location.
|
||||
# Prints nothing on success (cron: no notification); prints errors only.
|
||||
set -u
|
||||
VAULT="/home/avi/484vault"
|
||||
ERRS=""
|
||||
|
||||
# 1. Skills -> 03-SKILLS/hermes-skills/
|
||||
rsync -a --delete ~/.hermes/skills/ "$VAULT/03-SKILLS/hermes-skills/" || ERRS="skills rsync failed"
|
||||
|
||||
# 1b. Rebuild the curated skills index from the mirrored SKILL.md frontmatter
|
||||
python3 ~/.hermes/scripts/skills-index.py >/dev/null 2>/tmp/skills-index.err || ERRS="${ERRS} skills-index failed: $(head -c200 /tmp/skills-index.err)"
|
||||
|
||||
# 2. Automation scripts + cron job definitions -> 04-SYSTEMS/hermes-automation/
|
||||
mkdir -p "$VAULT/04-SYSTEMS/hermes-automation"
|
||||
rsync -a --delete ~/.hermes/scripts/ "$VAULT/04-SYSTEMS/hermes-automation/scripts/" || ERRS="${ERRS} scripts-sync failed"
|
||||
cp ~/.hermes/cron/jobs.json "$VAULT/04-SYSTEMS/hermes-automation/cron-jobs.json" 2>&1 || ERRS="${ERRS} cron-jobs-copy failed"
|
||||
|
||||
# 3. Legacy memories + config -> 04-SYSTEMS/hermes-memory/
|
||||
cp ~/.hermes/memories/MEMORY.md ~/.hermes/memories/USER.md "$VAULT/04-SYSTEMS/hermes-memory/" 2>&1 || ERRS="${ERRS} memory-copy failed"
|
||||
cp ~/.hermes/config.yaml "$VAULT/04-SYSTEMS/hermes-config.yaml" 2>&1 || ERRS="${ERRS} config-copy failed"
|
||||
|
||||
# 4. Mnemosyne DB (hot backup, WAL-safe) + last JSON export -> 04-SYSTEMS/hermes-memory/
|
||||
SQLITE=/home/avi/.local/android-sdk/platform-tools/sqlite3
|
||||
if [ -x "$SQLITE" ]; then
|
||||
"$SQLITE" "/home/avi/.hermes/mnemosyne/data/mnemosyne.db" ".backup '$VAULT/04-SYSTEMS/hermes-memory/mnemosyne.db'" 2>&1 || ERRS="${ERRS} db-backup failed"
|
||||
fi
|
||||
|
||||
# 5. Timestamp for the agent pass to know what's new since last sync
|
||||
date -Iseconds > "$VAULT/04-SYSTEMS/hermes-memory/.last-sync"
|
||||
|
||||
[ -n "$ERRS" ] && echo "VAULT SYNC ERRORS: $ERRS"
|
||||
exit 0
|
||||
294
2. Areas/Home Personal/knowledge/hermes/hermes-config.yaml
Normal file
294
2. Areas/Home Personal/knowledge/hermes/hermes-config.yaml
Normal file
|
|
@ -0,0 +1,294 @@
|
|||
model:
|
||||
default: qwen3.8-flash-next
|
||||
provider: custom
|
||||
base_url: http://10.50.200.200:8100/v1
|
||||
api_key: ${HERMES_CUSTOM_10_50_200_200_8100_API_KEY}
|
||||
context_length: 250000
|
||||
database:
|
||||
journal_mode: wal
|
||||
runtime:
|
||||
nofile_soft_limit: 4096
|
||||
agent:
|
||||
max_turns: 150
|
||||
service_tier: ''
|
||||
fast_auto_seconds: 60
|
||||
verbose: false
|
||||
reasoning_effort: medium
|
||||
personalities: {}
|
||||
terminal:
|
||||
backend: local
|
||||
cwd: .
|
||||
timeout: 180
|
||||
home_mode: auto
|
||||
container_cpu: 1
|
||||
container_memory: 5120
|
||||
container_disk: 51200
|
||||
container_persistent: true
|
||||
docker_mount_cwd_to_workspace: false
|
||||
lifetime_seconds: 300
|
||||
web:
|
||||
search_backend: searxng
|
||||
extract_backend: firecrawl
|
||||
extract_char_limit: 15000
|
||||
keyless_fallback: true
|
||||
keyless_rescue: true
|
||||
cache_enabled: true
|
||||
cache_ttl_minutes: 20
|
||||
browser:
|
||||
backend: browser-use
|
||||
inactivity_timeout: 120
|
||||
extension_control:
|
||||
enabled: false
|
||||
use_real_profile: true
|
||||
tool_loop_guardrails:
|
||||
warnings_enabled: true
|
||||
hard_stop_enabled: false
|
||||
non_interactive_hard_stop_enabled: true
|
||||
warn_after:
|
||||
exact_failure: 2
|
||||
same_tool_failure: 3
|
||||
idempotent_no_progress: 2
|
||||
hard_stop_after:
|
||||
exact_failure: 5
|
||||
same_tool_failure: 8
|
||||
idempotent_no_progress: 5
|
||||
compression:
|
||||
enabled: true
|
||||
checkpoint_required: false
|
||||
progress_notices: false
|
||||
threshold: 0.5
|
||||
target_ratio: 0.2
|
||||
protect_last_n: 20
|
||||
min_tail_user_messages: 1
|
||||
max_attempts: 3
|
||||
proactive_prune_tokens: 0
|
||||
proactive_prune_min_result_chars: 8000
|
||||
proactive_prune_min_reclaim_tokens: 4096
|
||||
hygiene_max_turn_hold_seconds: 10
|
||||
protect_first_n: 3
|
||||
codex_gpt55_autoraise: true
|
||||
codex_app_server_auto: native
|
||||
codex_responses_native: false
|
||||
idle_compact_after_seconds: 0
|
||||
prompt_caching:
|
||||
cache_ttl: 5m
|
||||
display:
|
||||
compact: false
|
||||
busy_input_mode: interrupt
|
||||
bell_on_complete: false
|
||||
bell_on_prompt: false
|
||||
show_reasoning: false
|
||||
background_process_notifications: concise
|
||||
streaming: true
|
||||
skin: cybernetic-workshop
|
||||
interim_assistant_messages: true
|
||||
tool_progress: all
|
||||
cleanup_progress: false
|
||||
long_running_notifications: true
|
||||
busy_ack_detail: true
|
||||
stt:
|
||||
enabled: true
|
||||
language: en
|
||||
local:
|
||||
model: base
|
||||
openai:
|
||||
model: whisper-1
|
||||
language: ''
|
||||
wake_word:
|
||||
enabled: true
|
||||
memory:
|
||||
memory_enabled: true
|
||||
user_profile_enabled: true
|
||||
memory_char_limit: 2200
|
||||
user_char_limit: 1375
|
||||
nudge_interval: 10
|
||||
provider: mnemosyne
|
||||
delegation:
|
||||
max_iterations: 250
|
||||
skills:
|
||||
creation_nudge_interval: 15
|
||||
approvals:
|
||||
timeout: 99999999
|
||||
plugins:
|
||||
enabled:
|
||||
- mnemosyne
|
||||
- rtk-rewrite
|
||||
- superpowers
|
||||
disabled: []
|
||||
kanban:
|
||||
review_dispatch: true
|
||||
code_execution:
|
||||
timeout: 300
|
||||
max_tool_calls: 50
|
||||
gateway:
|
||||
signal_interrupt_grace_timeout: 1
|
||||
delivery_ledger: true
|
||||
platform_connect_timeout: 30
|
||||
loop_watchdog: true
|
||||
loop_watchdog_probe_interval_s: 30.0
|
||||
loop_watchdog_probe_timeout_s: 10.0
|
||||
loop_watchdog_max_strikes: 3
|
||||
startup_watchdog: true
|
||||
startup_watchdog_timeout_seconds: 300
|
||||
write_sessions_json: true
|
||||
scale_to_zero:
|
||||
idle_timeout_minutes: 2
|
||||
restart_loop_guard:
|
||||
max_restarts: 3
|
||||
window_seconds: 60
|
||||
max_gap_seconds: 300
|
||||
respawn_storm:
|
||||
max_starts: 5
|
||||
window_seconds: 120
|
||||
message_timestamps:
|
||||
enabled: false
|
||||
max_inbound_media_bytes: 134217728
|
||||
trust_env: true
|
||||
strict: false
|
||||
media_delivery_allow_dirs: []
|
||||
trust_recent_files: true
|
||||
trust_recent_files_seconds: 600
|
||||
api_server:
|
||||
max_concurrent_runs: 10
|
||||
streaming:
|
||||
enabled: false
|
||||
onboarding:
|
||||
seen:
|
||||
busy_input_prompt: true
|
||||
telemetry:
|
||||
shared_metrics:
|
||||
enabled: false
|
||||
send: false
|
||||
updates:
|
||||
pre_update_backup: false
|
||||
backup_keep: 5
|
||||
non_interactive_local_changes: stash
|
||||
computer_use:
|
||||
backend: cua
|
||||
_config_version: 45
|
||||
session_reset:
|
||||
mode: none
|
||||
idle_minutes: 1440
|
||||
at_hour: 4
|
||||
group_sessions_per_user: true
|
||||
platform_toolsets:
|
||||
cli:
|
||||
- browser
|
||||
- clarify
|
||||
- code_execution
|
||||
- computer_use
|
||||
- connections
|
||||
- cronjob
|
||||
- delegation
|
||||
- file
|
||||
- image_gen
|
||||
- memory
|
||||
- session_search
|
||||
- skills
|
||||
- terminal
|
||||
- todo
|
||||
- tts
|
||||
- vision
|
||||
- web
|
||||
telegram:
|
||||
- hermes-telegram
|
||||
discord:
|
||||
- hermes-discord
|
||||
whatsapp:
|
||||
- hermes-whatsapp
|
||||
slack:
|
||||
- hermes-slack
|
||||
signal:
|
||||
- hermes-signal
|
||||
homeassistant:
|
||||
- hermes-homeassistant
|
||||
qqbot:
|
||||
- hermes-qqbot
|
||||
yuanbao:
|
||||
- hermes-yuanbao
|
||||
teams:
|
||||
- hermes-teams
|
||||
google_chat:
|
||||
- hermes-google_chat
|
||||
custom_providers:
|
||||
- name: h200
|
||||
base_url: http://10.50.200.200:8100/v1
|
||||
key_env: HERMES_CUSTOM_10_50_200_200_8100_API_KEY
|
||||
model: qwen3.8-flash-next
|
||||
models:
|
||||
qwen3.8-flash-next:
|
||||
context_length: 262144
|
||||
image_gen:
|
||||
provider: openai-codex
|
||||
model: gpt-image-2-medium
|
||||
known_plugin_toolsets:
|
||||
cli:
|
||||
- a2a
|
||||
- spotify
|
||||
known_builtin_toolsets:
|
||||
cli:
|
||||
- browser
|
||||
- clarify
|
||||
- code_execution
|
||||
- computer_use
|
||||
- connections
|
||||
- context_engine
|
||||
- cronjob
|
||||
- delegation
|
||||
- discord
|
||||
- discord_admin
|
||||
- file
|
||||
- homeassistant
|
||||
- image_gen
|
||||
- memory
|
||||
- session_search
|
||||
- skills
|
||||
- spotify
|
||||
- stt
|
||||
- terminal
|
||||
- todo
|
||||
- tts
|
||||
- video
|
||||
- video_gen
|
||||
- vision
|
||||
- web
|
||||
- x_search
|
||||
- yuanbao
|
||||
|
||||
# ── Security ──────────────────────────────────────────────────────────
|
||||
# Secret redaction is ON by default — strings that look like API keys,
|
||||
# tokens, and passwords are masked in tool output, logs, and chat
|
||||
# responses before the model or user ever sees them. Set redact_secrets
|
||||
# to false to disable (e.g. when developing the redactor itself).
|
||||
# tirith pre-exec scanning is enabled by default when the tirith binary
|
||||
# is available. Configure via security.tirith_* keys or env vars
|
||||
# (TIRITH_ENABLED, TIRITH_BIN, TIRITH_TIMEOUT, TIRITH_FAIL_OPEN).
|
||||
#
|
||||
# security:
|
||||
# redact_secrets: true
|
||||
# tirith_enabled: true
|
||||
# tirith_path: "tirith"
|
||||
# tirith_timeout: 5
|
||||
# tirith_fail_open: true
|
||||
|
||||
# ── Fallback Model ────────────────────────────────────────────────────
|
||||
# Automatic provider failover when primary is unavailable.
|
||||
# Uncomment and configure to enable. Triggers on rate limits (429),
|
||||
# overload (529), service errors (503), or connection failures.
|
||||
#
|
||||
# Supported providers:
|
||||
# openrouter (OPENROUTER_API_KEY) — routes to any model
|
||||
# openai-codex (OAuth — hermes auth) — OpenAI Codex
|
||||
# nous (OAuth — hermes auth) — Nous Portal
|
||||
# zai (ZAI_API_KEY) — Z.AI / GLM
|
||||
# kimi-coding (KIMI_API_KEY) — Kimi / Moonshot
|
||||
# kimi-coding-cn (KIMI_CN_API_KEY) — Kimi / Moonshot (China)
|
||||
# minimax (MINIMAX_API_KEY) — MiniMax
|
||||
# minimax-cn (MINIMAX_CN_API_KEY) — MiniMax (China)
|
||||
# bedrock (AWS IAM / boto3) — AWS Bedrock (Converse API)
|
||||
#
|
||||
# For custom OpenAI-compatible endpoints, add base_url and key_env.
|
||||
#
|
||||
# fallback_model:
|
||||
# provider: openrouter
|
||||
# model: anthropic/claude-sonnet-4
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
Gotcha: avdmanager writes AVDs to ~/.config/.android — copy to ~/.android/avd or emulator can't find them. Omarchy SUPER+J togglesplit fails when workspace pinned 'scrolling' (~/.local/state/omarchy/workspace-layouts/<ws>.lua, written by SUPER+L) or focused window is floating (Hermes app window is floating).
|
||||
§
|
||||
Hyprland on this box wraps `hyprctl dispatch` in a Lua shim — classic syntax fails. Use Lua form: `hyprctl dispatch "hl.dsp.focus({window='pid:N'})"`, `hl.dsp.window.bring_to_top(...)`, `hl.dsp.focus({workspace='N'})`. omafiles is single-instance via shared ~/.local/state/omafiles/session.toml — test instances need isolated XDG_STATE_HOME. WirePlumber 0.5.17 gotcha: invalid monitor.bluez.properties drop-ins silently kill ALL BT audio ("Protocol not available" in bluetoothd) — verify endpoints via `busctl tree org.bluez | grep MediaEndpoint` after any wireplumber config change.
|
||||
§
|
||||
Keynctr dev mode: run `npx vite --port 5173` then `NOSTR_GUI_DEV_URL=http://localhost:5173 KEYNCTR_ENABLE_GPU=1 npx electron .` in frontend/ (after cargo build --release — Electron spawns target/release/keynectr serve). UI edits hot-reload; Rust edits need rebuild + backend restart. Amber fixes committed f917e5e.
|
||||
§
|
||||
Shonar desktop source lives only on branch deferred/desktop-server @7b34368 (removed from main 8c510f4); the dead ~/Projects/Shonar/desktop leftovers dir was deleted Sep 14. Separate live repo ~/Projects/Shonar Desktop (master, engine :8000 via desktop-dev.sh) still runs the desktop app. Runtime state ~/.config/shonar-desktop/ (settings.json read at engine start; engine.db).
|
||||
§
|
||||
Vizio E3D470VX TV: laptop flaps link then 'no signal' — fix = force 1920x1080@59.94 on DP output when Vizio detected (same as Epson projector fix). skill_manage gotcha: patch op needs old_string+new_string; file_content is ignored ('old_string is required' loop). Full rewrite of a references/ file = write_file op.
|
||||
§
|
||||
Avi's Wi-Fi (10.144.x.x) isolates devices — phone can never reach laptop LAN IPs; share local apps via cloudflared quick tunnel (~/.local/bin/cloudflared tunnel --url http://localhost:PORT) + qrencode QR (typing trycloudflare URLs on the phone fails). He rejects USB/adb workarounds.
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# Restoring Hermes from this vault (computer-dies procedure)
|
||||
|
||||
> **Path note (2026-10-01 Orion reorg):** `04-SYSTEMS/hermes-memory/`, `04-SYSTEMS/hermes-config.yaml` and `04-SYSTEMS/hermes-automation/` below now live under `2. Areas/Home Personal/knowledge/hermes/` (this file's own directory). Daily knowledge-routing now targets the Orion areas (`2. Areas/*/knowledge/`, `3. Resources/Research/`, `4. Decisions/`).
|
||||
|
||||
If a brand-new Hermes instance is installed on a new machine, point it at this vault and it can rebuild itself from these pieces:
|
||||
|
||||
## What's here
|
||||
- `03-SKILLS/hermes-skills/` — full copy of `~/.hermes/skills/` (learned procedures + scripts/templates/references).
|
||||
- `03-SKILLS/Knowledge Vault Skills Index.md` — machine-generated catalog of every skill (name, trigger description, path). Do not hand-edit; rebuilt hourly.
|
||||
- `04-SYSTEMS/hermes-memory/mnemosyne-export.json` — full Mnemosyne export (working memories, annotations, canonical facts). Restorable with the `mnemosyne_import` tool (`input_path` mode).
|
||||
- `04-SYSTEMS/hermes-memory/mnemosyne.db` — hourly WAL-safe live copy of the Mnemosyne DB (superset of the JSON export; use this if the JSON is older).
|
||||
- `04-SYSTEMS/hermes-memory/MEMORY.md` + `USER.md` — legacy Hermes memory + user profile.
|
||||
- `04-SYSTEMS/hermes-config.yaml` — Hermes config. Contains NO literal secrets (API keys are `${ENV_VAR}` references); the env vars themselves live in `~/.hermes/.env` which is deliberately NOT copied here.
|
||||
- `04-SYSTEMS/hermes-automation/` — `scripts/` (vault-sync.sh, skills-index.py, release-watch) and `cron-jobs.json` (all scheduled job definitions, so automation can be recreated without re-authoring prompts).
|
||||
|
||||
## Restore steps for the new instance
|
||||
1. `cp -a "<vault>/03-SKILLS/hermes-skills/." ~/.hermes/skills/`
|
||||
2. Ask the agent to run `mnemosyne_import` with `input_path` = this vault's `04-SYSTEMS/hermes-memory/mnemosyne-export.json` (idempotent; skips duplicates).
|
||||
3. `cp` the two memory files into `~/.hermes/memories/`.
|
||||
4. Diff `hermes-config.yaml` against the new default config rather than blind-copying (schema may have changed).
|
||||
5. Restore automation: `cp -a "<vault>/04-SYSTEMS/hermes-automation/scripts/." ~/.hermes/scripts/`, then recreate the cron jobs from `cron-jobs.json` (names, schedules, and full prompts are in there).
|
||||
6. Re-supply secrets: set the env vars referenced in config (e.g. `HERMES_CUSTOM_*_API_KEY`) in `~/.hermes/.env`. These are NOT in the vault by design.
|
||||
|
||||
## Automatic sync (running since 2026-09-11)
|
||||
- **Hourly** (cron `vault-sync-mechanical`, script `~/.hermes/scripts/vault-sync.sh`): mirrors skills dir, rebuilds the skills index, copies automation scripts + cron job definitions, memory .md files, config, and a WAL-safe live copy of the Mnemosyne DB into this vault. Silent unless it errors.
|
||||
- **Daily 11pm** (cron `vault-knowledge-routing`): agent reviews new memories/skills since `.last-sync` and routes them to `02-WORKFLOWS/`, `04-SYSTEMS/`, `05-KNOWLEDGE/`, `06-DECISIONS/`, `07-TROUBLESHOOTING/` as proper notes.
|
||||
- `.last-sync` in this dir marks the last successful hourly sync.
|
||||
|
||||
## Known limits
|
||||
- Secrets (`~/.hermes/.env`) are intentionally NOT in the vault — a new machine needs them re-entered.
|
||||
- `~/.hermes/sessions/` (raw chat transcripts, ~360K) is not backed up; memory + skills are the durable layer. Say the word if you want transcripts mirrored too.
|
||||
|
||||
Last verified: 2026-09-13 (by Hermes, full audit + gap fixes).
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
Design/doc preferences: no metaphor framing in design docs — describe systems plainly (metaphors read as confusing). Visual taste = subtle ambient effects; when something "looks odd" dial it down, don't delete it. Expects per-unit commits and on-device verification (screencap/dumpsys readback) before any feature is reported done.
|
||||
§
|
||||
Scope pivots mid-build: expects prior work preserved-but-isolated (deferred branch/module), never deleted, and directives obeyed immediately. Wants honest status over optimistic UI — unfinished integrations must be labeled/hid, not left configurable.
|
||||
§
|
||||
Runs Hermes on a Framework Laptop (Omarchy/Hyprland). Disaster-recovery knowledge base = Obsidian vault at /home/avi/484vault (auto-synced off-device via Syncthing to phone + server; user chose Syncthing because his Nextcloud server lacks full uptime). Prefers automation of durable chores over being asked to repeat them.
|
||||
§
|
||||
Don't deep-verify the user's Syncthing/sync health unless asked — he knows his own sync topology and cut off a live verification dive as unnecessary.
|
||||
§
|
||||
Answers the exact ask: a small specific question gets just that answer — no unsolicited adjacent repo work (cut off mid-flight surgery over this: "i was just asking for a short description... what are you doing?"). Large fixes are fine when he requests them; scope creep is not.
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,22 @@
|
|||
# hyprctl dispatch fails with classic syntax (Lua shim on this box)
|
||||
|
||||
**Date:** 2026-09-13 · **Machine:** Framework Laptop (Omarchy, Hyprland)
|
||||
|
||||
## Symptom
|
||||
`hyprctl dispatch focuswindow pid:N`, `bringactivetop`, etc. silently fail or error — the usual Hyprland dispatch verbs don't resolve.
|
||||
|
||||
## Diagnosis path
|
||||
1. `which hyprctl` / inspect the binary: on this machine `hyprctl` is wrapped in a **Lua shim** that only accepts Lua-form dispatches.
|
||||
2. Classic verb syntax will never work here regardless of quoting.
|
||||
|
||||
## Fix
|
||||
Use the Lua dispatch forms:
|
||||
- Focus by pid: `hyprctl dispatch "hl.dsp.focus({window='pid:N'})"`
|
||||
- Bring to top: `hyprctl dispatch "hl.dsp.window.bring_to_top(...)"`
|
||||
- Focus workspace: `hyprctl dispatch "hl.dsp.focus({workspace='N'})"`
|
||||
|
||||
## Notes
|
||||
- Related quirk: **omafiles** is effectively single-instance via a shared `~/.local/state/omafiles/session.toml` — to run a test instance side-by-side, give it an isolated `XDG_STATE_HOME`.
|
||||
- F2-rename feature for omafiles was built at `~/Projects/omafiles` (release binary ready; installing over `/usr/bin/omafiles` needs `sudo cp`).
|
||||
|
||||
Related: [[Omarchy Commands]]
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
# External monitor not detected after projector swap (Framework HDMI card latch)
|
||||
|
||||
**Date:** 2026-09-11 · **Machine:** Framework Laptop (Omarchy, i915, Hyprland)
|
||||
|
||||
## Symptom
|
||||
LG 32MR50C-B monitor plugged into the Framework HDMI expansion card showed nothing. `hyprctl monitors` listed only eDP-1. Kernel showed **all** `/sys/class/drm/card1-DP-*/status` = `disconnected` with zero AUX/hotplug log lines even after replugging cable, reseating the card, and power-cycling the monitor.
|
||||
|
||||
## Diagnosis path (do in this order — saves an hour)
|
||||
1. `hyprctl monitors` — is the output even listed?
|
||||
2. `cat /sys/class/drm/card1-DP-*/status` — **if the kernel says disconnected, stop all compositor-level debugging; it's hardware.**
|
||||
3. `journalctl -k | grep -iE "dp|hpd|aux|over-current"` — no hotplug event = no cable-detect signal reaching GPU.
|
||||
|
||||
## Root cause
|
||||
Yesterday a misbehaving Epson projector (bad EDID negotiation) was plugged into the **same** HDMI expansion card and latched its port controller so it stopped asserting cable-detect entirely. A normal reboot did not clear it.
|
||||
|
||||
## Fixes (in order)
|
||||
1. Full power-off reset: shut down → unplug charger → hold power button 15s → wait 30s → boot with monitor connected.
|
||||
2. **Swap in a different HDMI expansion card (power off first)** — this is what actually worked. Framework cards present to Linux as `DP-1..4`; the HDMI card owns `DP-1`.
|
||||
3. If replacement card also dead: suspect cable, monitor input latch, or the slot.
|
||||
|
||||
## Update 2026-09-22 incident (resolved 2026-09-25)
|
||||
After a desk move the LG FHD HDMI went fully dead again (all card1-DP-* `disconnected`, zero hotplug). Card swap + hard reset did NOT revive it same-day, but a plain reboot the next morning brought it back at 1920x1080@60 on the swapped card (slot moved to usb 3-1). **Lesson: the latched-card state CAN clear on a cold boot once standby power fully drains overnight — try one overnight-off + reboot cycle before escalating to cable/monitor replacement.** Forced DP-1 mode rule remains in `~/.config/hypr/monitors.lua`.
|
||||
|
||||
## Notes
|
||||
- Framework officially supports hot-swapping cards, but with a suspected latched controller do it powered off, or the new card inherits the bad state and gives a false negative.
|
||||
- Hyprland config (`hyprmoncfg-monitors.lua`) forces DP-1 to 1920x1080@59.94 — projector workaround that is also the LG's native mode; harmless for both.
|
||||
- Transient `over-current condition` on usb3 ports during reseating was the phone cable (flaky, error -71), unrelated to the display.
|
||||
- Related: [[Omarchy Commands]]
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
last-updated: 2026-09-18T03:30:00-05:00
|
||||
hermes-owned: true
|
||||
tags: [omarchy, backgrounds, systemd]
|
||||
---
|
||||
|
||||
# Omarchy background picker doesn't see custom wallpapers
|
||||
|
||||
**Symptom:** images placed in the theme dir don't appear in the background picker.
|
||||
|
||||
**Diagnosis:** the picker scans `~/.local/state/omarchy/current/theme/backgrounds` (a snapshot taken at `theme-set` time) plus `~/.config/omarchy/backgrounds/<theme-slug>/` — NOT `~/.config/omarchy/themes/<slug>/backgrounds`, which is where custom theme images usually live.
|
||||
|
||||
**Fix (standing, installed 2026-09-17):** systemd user path + timer `omarchy-bg-sync` — `~/.local/bin/omarchy-bg-sync` rsyncs the current custom theme's source backgrounds into the snapshot dir on change and every 5 min (no `--delete`).
|
||||
|
||||
Related: [[Troubleshooting Index]]
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
date: 2026-09-14
|
||||
area: hyprland/omarchy
|
||||
hermes-owned: true
|
||||
---
|
||||
|
||||
# Omarchy keybind "does nothing" — check `hyprctl binds` first
|
||||
|
||||
**Symptom:** A keybind appears dead — no visible effect.
|
||||
|
||||
**Diagnosis path (2026-09-14):**
|
||||
1. `hyprctl binds -j` — the binding is usually registered fine; the *action* is a legitimate compositor no-op, not a broken bind.
|
||||
2. Example: SUPER+J (toggle split) logs "can't togglesplit in the current workspace" and stays silent when there are <2 tiled windows, or the focused window is fullscreen/floating.
|
||||
3. Verify the dispatch directly: `hyprctl dispatch "hl.dsp.layout('togglesplit')"` and compare geometry via `hyprctl clients -j`, then toggle back.
|
||||
|
||||
**Recurring root cause (added 2026-09-15):** SUPER+J "stopped working again" on one workspace = the workspace layout flipped to `scrolling` (SUPER+L toggles it; SUPER+J gets mis-pressed). State lives in `~/.local/state/omarchy/workspace-layouts/<ws>.lua`. Fix: delete that file, then `hyprctl eval 'hl.workspace_rule({ workspace = "N", layout = "dwindle" })'`. Check that dir before debugging the binding itself.
|
||||
|
||||
**Note:** dispatch on this box uses the Lua shim syntax — see [[hyprctl-dispatch-lua-shim-syntax]].
|
||||
|
||||
Related: [[Troubleshooting Index]]
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
date: 2026-09-16
|
||||
area: hyprland/display
|
||||
hermes-owned: true
|
||||
---
|
||||
|
||||
# Vizio E3D470VX "no signal" on laptop — force 1080p60 mode
|
||||
|
||||
**Symptom:** Vizio E3D470VX TV shows "no signal" when connected to the Framework laptop; link flaps ~4x then dies. Same TV works fine on other PCs (friend's Debian and Pop!_OS machines) → mode-negotiation failure on this laptop, not card/cable/TV.
|
||||
|
||||
**Diagnosis path:**
|
||||
1. Cross-test the TV on another machine — if it works there, rule out cable/TV/HDMI card.
|
||||
2. Compare with the Epson projector case: same class of problem (display advertises/needs a mode the laptop doesn't settle on). See [[monitor-not-detected-framework-hdmi-card-latch]] for the *other* display failure mode (card latch — kernel shows disconnected).
|
||||
|
||||
**Fix (applied 2026-09-16):** rule in `~/.config/hypr/monitors.lua` (outside the hyprmoncfg wake block):
|
||||
```lua
|
||||
hl.monitor({ output = "desc:VIZIO", mode = "1920x1080@59.94", position = "auto", scale = 1 })
|
||||
```
|
||||
`hyprctl reload` clean. Next plug-in should auto-force the safe mode.
|
||||
|
||||
**If "no signal" persists AFTER this rule:** the mode-rejection theory is wrong — investigate HDCP or i915 DP-to-HDMI dongle signaling instead.
|
||||
|
||||
**Hermes-system note:** Mnemosyne scrubs resolution strings like `1920x1080` as IP addresses when storing memories — write them with spaces (e.g. `1920 x 1080`) in memory content.
|
||||
|
||||
Related: [[Troubleshooting Index]] · [[hyprctl-dispatch-lua-shim-syntax]]
|
||||
Loading…
Add table
Add a link
Reference in a new issue