vault-sync: commit pending changes from Leonard session

This commit is contained in:
2026-09-13 11:46:28 -07:00
parent 8b26efd3b7
commit 1255434c1a
25 changed files with 409 additions and 57 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ A git-backed external brain for Hermes — projects, knowledge, automation patte
## AgentOS vault (canonical) ## AgentOS vault (canonical)
**Live VPS path:** `/home/vpsadmin/AgentOS` **Live VPS path:** `C:/Users/fight/AgentOS`
**Mirror in this repo:** `memory-systems/agent-os/` **Mirror in this repo:** `memory-systems/agent-os/`
Start with: Start with:
@@ -0,0 +1,71 @@
# The Real Bottleneck Series — Tony Simons (Tomorrow Explained)
**Source:** [@tonysimons_](https://x.com/tonysimons_) — March 2026
**Captured:** 2026-09-13
**Topic:** AI infrastructure, inference economics, system architecture
**Tags:** #ai #inference #memory-bandwidth #scaling-laws #agents #system-design
---
## Core Thesis (4-Part Series)
The AI industry keeps blaming the wrong bottleneck. The constraint has shifted — but the crowd hasn't noticed.
### Part 1: "The real bottleneck is not smarter models"
- Models fail in production not because they lack intelligence, but because they lack **state management and structural error recovery**
- Compounding probability: 95% reliability × 10 sequential steps = 60% final success rate
- Hallucinations compound because auto-regressive models can't backtrack — they commit to every token
- The fix isn't bigger models; it's **deterministic scaffolding** that catches failures before users see them
- Future: systems that make thousands of mistakes per second and catch all of them
### Part 2: "The real bottleneck is not model size"
- The era of the monolithic, know-it-all base model is over
- Progress has migrated from **training-time compute → inference-time compute**
- The compound system: models that think through hundreds of possibilities before showing a result
- Routing layer matters more than raw model intelligence — cheap models for simple tasks, expensive ones only when needed
- Memory layer (vector DBs, stateful architectures) is the real intelligence multiplier
- The skill shift: from prompt engineering → **systems engineering**
### Part 3: "Memory bandwidth is the real bottleneck"
- Inference is **memory-bound, not compute-bound** — most GPU cores sit idle waiting for data
- The ceiling: `BW / (P × b)` — memory bandwidth divided by parameters × bytes per parameter
- A 70B model at fp16 on 3 TB/s HBM ≈ 21 tokens/sec (matches real-world observation)
- Batching raises throughput but not single-user speed
- What actually helps: quantization, speculative decoding, sparse activation (MoE), shrinking KV cache
- More FLOPs don't help if you can't feed the beast fast enough
### Part 4: "The real bottleneck is not training compute"
- The industry is training-constrained in narrative, **inference-constrained in reality**
- Base models are "good enough" for most tasks and commoditizing fast
- The winners: those who can run multi-step reasoning loops at lowest cost/latency
- Hardware shift: from training clusters → inference-optimized silicon (fast memory access > raw compute)
- Market bifurcation: massive frontier models for complex/reasoning tasks, small optimized models for everything else
- The real question: "Can you run this agent loop a million times a day without going bankrupt?"
---
## Key Insights for Builders
| Insight | Implication |
|---------|-------------|
| Reliability is a systems problem, not a model problem | Build scaffolding, not bigger prompts |
| Inference cost dominates at target | Optimize for serving, not training |
| Memory bandwidth is the hard ceiling | Quantize, batch, use MoE, shrink context |
| Routing > raw intelligence | Use cheap models for 90% of tasks |
| State management is the missing piece | External memory + error recovery loops |
---
## Connections to Our Work
- **Hermes Agent OS** — this is exactly what we're building: deterministic scaffolding around probabilistic engines
- **Local LLMs on RTX 3060** — memory bandwidth is why 12GB is the ceiling; why LFM2.5 (2.6B) runs but larger models don't fit
- **FreeToken vs llama.cpp coexistence** — VRAM is the bottleneck; can't run both on 12GB
- **Vault search via search_files** — zero-infrastructure routing; no separate embedding server needed
- **VeriPath audits** — narrow, constrained workflows beat general-purpose agents (aligned with the thesis)
---
## Quote
> "We spent two years obsessed with the engine, convinced that building a bigger motor was the only way to move forward. Now we realize that a massive engine is useless if you do not have a steering wheel, a transmission, and a map. The era of blind scaling is over. The grueling, unglamorous work of building the actual machine has finally begun."
@@ -0,0 +1,109 @@
# Hermes Agent Masterclass — Tonbi Studio
**Source:** [@tonbistudio tweet 2095877834409644064](https://x.com/tonbistudio/status/2095877834409644064)
**Captured:** 2026-09-13
**Topic:** Hermes configuration, workflow, optimization
**Tags:** #hermes #masterclass #workflow #skills #agents #configuration
---
## Overview
Tonbi Studio's **Hermes Agent Masterclass** is a 10-part video course (5h 14m) taking Hermes from fresh install to hardened multi-agent team. It's the most comprehensive publicly available training for running Hermes in production.
- **hermesatlas.com/masterclass** — video + transcript notes
- **hermesbible.com** — unofficial docs companion
- **hermesatlas.com/dev/** — developer tutorial (10 modules)
---
## Module Map
| # | Module | Key Topics |
|---|--------|------------|
| 01 | Start Here | Installation, setup, basic commands |
| 02 | Run It Anywhere | VPS, Docker, messaging |
| 03 | Make Context Compound | Memory, Honcho, Obsidian |
| 04 | Procedural Memory | Skills that grow with the agent |
| 05 | Spend Intelligence Wisely | Providers, models, local inference |
| 06 | Give the Model Hands | Tools & MCP servers |
| 07 | Remove Yourself From the Loop | Cron & automation |
| 08 | Parallelize the Right Work | Subagents & delegation |
| 09 | Build a Durable Team | Profiles & Kanban |
| 10 | Defense in Depth | Security layers |
---
## Key Insights (From Transcripts)
### The Agent Loop (Module 2)
- **Think → call tool → see result → repeat → answer**
- `finish_reason: "tool_calls"` → run tools, loop again
- `finish_reason: "stop"` → answer, exit
- `finish_reason: "length"` → compress history, retry
- System prompt is built **once** per conversation — prompt caching is sacred
- You extend Hermes at the **edges** (tools, skills), not by growing the core
### Memory Architecture (Module 3)
- **Tiny built-in files** (memory.md, user.md) = tightly bounded prompt budget
- Forces retention of durable preferences, not junk drawer
- **Session search** only when needed — don't load everything
- **Obsidian vault** for project-scale knowledge (this is our setup)
- **Honcho** for richer recall (optional provider)
### Skills as Procedural Memory (Module 4)
- When a complex tool sequence works → capture as a skill
- Next run is faster and more consistent than rediscovering steps
- **Agent-written skills** are the self-improvement loop
- Curator grades and consolidates custom skills
- Pin what must not drift
### Local Inference (Module 5)
- Provider model picker: switch models in-session with `/model`
- Compact long context with `/compress`
- Background or queued prompts for non-blocking work
### MCP + Gateway + Cron (Module 6)
- **MCP** = USB for AI tools — bolt on capabilities without writing Python
- **Gateway** = one process, 20+ platforms (Telegram, Discord, Slack, etc.)
- **Cron** = natural-language jobs, fresh agent per run
- The three **compose**: cron job → gateway platform → MCP tools
### Security (Module 10)
- **Seven security layers as dials**, not a checklist
- Layer 1: who can talk to it (gateway allowlist)
- Default: **DENY**
- Tradeoff is structural: maximally useful ↔ maximally dangerous
- Scope every dial per profile
---
## Relevant Commands
| Command | Purpose |
|---------|---------|
| `hermes` | Start chat |
| `hermes gateway` | Start messaging |
| `hermes doctor` | Check install |
| `hermes model` | Reopen model config |
| `/model` | Switch models in-session |
| `/compress` | Compact long context |
| `/tools` | See toolbox |
| `/skills` | See procedural knowledge |
| `/reload skills` | Pick up skill changes without restart |
---
## Connections to Our Setup
- **Module 3 (Memory)** — directly validates our vault architecture
- **Module 4 (Skills)** — our skill system (hermes-agent, ponytail, etc.) is exactly this
- **Module 5 (Local Inference)** — our FreeToken + llama-cpp setup is the local inference pattern
- **Module 6 (MCP/Gateway/Cron)** — our vault-sync and vault-consolidation crons are this pattern
- **Module 10 (Security)** — our standing constraints (Ty_Tech RO, no VPS SSH, explicit authorization) are security dials
---
## Quote
> "The core is a narrow waist; capability lives at the edges. Hermes is extended primarily through plugins and skills, not by growing the core."
@@ -0,0 +1,55 @@
# Inference Performance Benchmarks — Local Hardware
**Machine:** Windows 11, RTX 3060 12GB
**Date:** 2026-09-13
## FreeToken Benchmarks
| Model | Engine | Tokens/sec | Notes |
|-------|--------|------------|-------|
| Gemma-4-26B-A4B-NVFP4 | FreeToken | ? | 262K context, loaded as default |
| gpt-oss-20b | FreeToken | **50+** | Amazingly fast for 20B on 12GB card |
## Why gpt-oss-20b Hits 50 tok/s on a 3060
From the [AI Bottleneck Thesis](ai-bottleneck-thesis-tony-simons.md):
> *"Inference is memory-bound, not compute-bound. The ceiling is `BW / (P × b)`"*
### The FreeToken Advantage: Heterogeneous MoE Offload
FreeToken uses **Mixture of Experts (MoE) technology** that doesn't just run on GPU. It creates a **heterogeneous memory hierarchy**:
| Tier | Hardware | Role |
|------|----------|------|
| **Tier 1 (fastest)** | GPU VRAM (12GB) | Active expert weights, KV cache, hot path |
| **Tier 2** | System RAM (~32GB) | Inactive expert weights, overflow |
| **Tier 3** | CPU | Orchestration, expert routing, offload management |
This means:
- **Not all 20B parameters need to be in VRAM simultaneously**
- Only the **active experts** for a given token need GPU memory
- The rest sits in system RAM and gets paged in on demand
- **Result:** A 20B model runs on a 12GB card because at any given moment, only ~6-8B parameters are "hot"
### The Math (Revised)
- **RTX 3060:** 12GB VRAM, ~360 GB/s bandwidth
- **Active experts per token:** ~6-8B parameters (estimated)
- **Theoretical ceiling:** 360 / (8B × 0.5 bytes) = ~90 tok/s
- **Achieved:** 50+ tok/s → overhead from CPU-GPU data transfer, but still excellent
- **Without MoE offload:** 20B × 0.5 bytes = 10GB → barely fits, no room for KV cache
## Key Insight
The 3060's **12GB VRAM capacity** is the reason this works. Smaller cards (3060 Ti with 8GB) couldn't fit the model. The memory bandwidth (360 GB/s) is the ceiling — and we're hitting above theoretical because FreeToken's CUDA kernels are well-optimized.
## Constraints
- **Cannot coexist with LFM2.5:** Combined ~15GB > 12GB VRAM
- **Context size limited:** ~128K context at Q4 before running out of VRAM
- **Model swap required:** Need to stop one to start the other
## Decision Signal
For local agent work requiring **high throughput on a single question**, gpt-oss-20b at 50 tok/s is a strong choice. For **long-running daemon tasks**, LFM2.5 on llama-cpp (port 1920) is more appropriate.
@@ -7,9 +7,9 @@
- Models available: Gemma-4-26B, gpt-oss-20b, various Qwen, LFM2.5, Qwen3.6 MTP in `C:\models` and `E:\models` - Models available: Gemma-4-26B, gpt-oss-20b, various Qwen, LFM2.5, Qwen3.6 MTP in `C:\models` and `E:\models`
- Agent: Hermes (local) with Jimmy/Leonard personalities. Jimmy = main agent, Leonard = operator/consolidator - Agent: Hermes (local) with Jimmy/Leonard personalities. Jimmy = main agent, Leonard = operator/consolidator
- Memory: Obsidian vault (Agent OS layout) = external brain; Hermes native memory also enabled - Memory: Obsidian vault (Agent OS layout) = external brain; Hermes native memory also enabled
- Key projects: VeriPath (core), Hermes local setup, Thornhill Construction site, vault-kb RAG - Key projects: VeriPath (core), Hermes local setup, Thornhill Construction site
- Vault search: Native `search_files` (ripgrep) — zero infrastructure overhead
- Model preference: LFM2.5 as primary local; brother-5090 as fallback; OpenRouter for cloud - Model preference: LFM2.5 as primary local; brother-5090 as fallback; OpenRouter for cloud
- Vault RAG: `~/Projects/vault-kb/` (ChromaDB + LM Studio embeddings at 1234) — 240 chunks indexed
- Auto-start: LFM2.5 via `start-models.bat` in Windows Startup; watchdog cron auto-relaunches - Auto-start: LFM2.5 via `start-models.bat` in Windows Startup; watchdog cron auto-relaunches
- Voice/TTS: wake word "hey Jimmy" (sherpa), Edge TTS AriaNeural, auto_tts=true, barge-in enabled - Voice/TTS: wake word "hey Jimmy" (sherpa), Edge TTS AriaNeural, auto_tts=true, barge-in enabled
- Git sync: `vault-sync` cron pushes vault to Gitea every 6h - Git sync: `vault-sync` cron pushes vault to Gitea every 6h
@@ -6,7 +6,7 @@
## In charge of ## In charge of
1. **Vault integrity** — `/home/vpsadmin/AgentOS` as canonical Goldie-shaped brain 1. **Vault integrity** — `C:/Users/fight/AgentOS` as canonical Goldie-shaped brain
2. **Write-back** — after meaningful work: project status/decisions, `04_Daily/` consolidations 2. **Write-back** — after meaningful work: project status/decisions, `04_Daily/` consolidations
3. **Gitea mirror** — keep `Tony_tech/personal-agent-os` → `memory-systems/agent-os/` aligned when vault changes matter 3. **Gitea mirror** — keep `Tony_tech/personal-agent-os` → `memory-systems/agent-os/` aligned when vault changes matter
4. **Boot discipline** — load HOME + policy + project status on multi-step work 4. **Boot discipline** — load HOME + policy + project status on multi-step work
@@ -5,7 +5,7 @@
| Date | Lesson | Context | | Date | Lesson | Context |
|------|--------|---------| |------|--------|---------|
| 2026-09-01 | VPS SSH (74.208.111.99:22) is rate-limited/firewalled: >3 failed connect attempts within a period blocks the IP for a while. Don't loop SSH connect attempts against the VPS — ask Anthony to add a key/open the port. Gitea (:80/443) and headscale (:8443) still reachable, so HTTPS/Gitea endpoints stay up. | Athena Oracle deploy blocked | | 2026-09-01 | VPS SSH (local-vps-reference:22) is rate-limited/firewalled: >3 failed connect attempts within a period blocks the IP for a while. Don't loop SSH connect attempts against the VPS — ask Anthony to add a key/open the port. Gitea (:80/443) and headscale (:8443) still reachable, so HTTPS/Gitea endpoints stay up. | Athena Oracle deploy blocked |
| 2026-08-31 | Vault RAG chunk/file counts recorded independently in STATUS.md, HOME.md, and 01_user/current-context.md drift after every reindex (160/162/167/219 all appeared for the same index). Update all three together (or point at one canonical count) when reindexing to avoid stale numbers. | AgentOS merge reindex | | 2026-08-31 | Vault RAG chunk/file counts recorded independently in STATUS.md, HOME.md, and 01_user/current-context.md drift after every reindex (160/162/167/219 all appeared for the same index). Update all three together (or point at one canonical count) when reindexing to avoid stale numbers. | AgentOS merge reindex |
| 2026-08-30 | LFM2.5-2.6B is both agentic AND a pure reasoning model. It uses `think` tags in the chat template, putting reasoning in `reasoning_content` and visible output in `content`. Requires sufficient `max_tokens` (≥256) to complete reasoning before emitting visible answer. | LFM2.5 setup and testing | | 2026-08-30 | LFM2.5-2.6B is both agentic AND a pure reasoning model. It uses `think` tags in the chat template, putting reasoning in `reasoning_content` and visible output in `content`. Requires sufficient `max_tokens` (≥256) to complete reasoning before emitting visible answer. | LFM2.5 setup and testing |
| 2026-08-30 | `notify` parameter on `terminal` tool requires `background=true` — foreground commands always return exit code, and `notify` is rejected. Use background mode for daemons/services. | LFM2.5 launch debugging | | 2026-08-30 | `notify` parameter on `terminal` tool requires `background=true` — foreground commands always return exit code, and `notify` is rejected. Use background mode for daemons/services. | LFM2.5 launch debugging |
@@ -0,0 +1,18 @@
# Vault Updates Log
**Generated:** 2026-09-13 11:46 PST
---
## Last 24 Hours
---
## Last 7 Days
---
## Files Changed (Last 24h)
@@ -1 +1,8 @@
IyBTaGFyZWQgV29ya2Zsb3dzCgo+IFJldXNhYmxlIHdvcmtmbG93cyB0aGF0IHNwYW4gbXVsdGlwbGUgYWdlbnRzIG9yIHByb2plY3RzLgo+IEVhY2ggZW50cnkgc2hvdWxkIGJlIGEgc3RhbmRhbG9uZSwgY29weS1wYXN0ZWFibGUgd29ya2Zsb3cuCgp8IFdvcmtmbG93IHwgRGVzY3JpcHRpb24gfCBMYXN0IFVzZWQgfAp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tfAp8IHwgfCB8Cg== # Shared Workflows
> Reusable workflows that span multiple agents or projects.
> Each entry should be a standalone, copy-pasteable workflow.
| Workflow | Description | Last Used |
|----------|-------------|-----------|
| *(empty — populate as patterns emerge)* | | |
@@ -3,7 +3,7 @@
## Session outcomes ## Session outcomes
### AgentOS / second brain (primary) ### AgentOS / second brain (primary)
- **Decision:** Use `/home/vpsadmin/AgentOS` as the single Goldie-shaped vault (no root required). - **Decision:** Use `C:/Users/fight/AgentOS` as the single Goldie-shaped vault (no root required).
- **Built:** `HOME.md`, `index.md`, `STATUS.md`, `DESKTOP_SYNC.md`, Raw/Wiki/Daily/Output scaffolding. - **Built:** `HOME.md`, `index.md`, `STATUS.md`, `DESKTOP_SYNC.md`, Raw/Wiki/Daily/Output scaffolding.
- **Projects seeded:** `athena-oracle`, `ai-talk-show` (status + decisions). - **Projects seeded:** `athena-oracle`, `ai-talk-show` (status + decisions).
- **Boot:** Leonard boot_prompt now skims `HOME.md` first. - **Boot:** Leonard boot_prompt now skims `HOME.md` first.
@@ -4,7 +4,7 @@
## Learned / Decided ## Learned / Decided
- **Athena Oracle rendered + deploy blocked on SSH.** Pipeline ran fully locally: 99 ingested, 31 summarized, 4 HTML variants (`_preview/{default,brief,devops,research}/`) + `site/ai-news-daily/index.html` (12KB, 50 stories). Deployment to `preprod1.afterthedemo.com` is blocked because ALL remote access is down — VPS SSH 74.208.111.99:22 firewalled (times out), Tailscale 100.64.0.1:22 times out, all users/auth rejected. Gitea (:80/443) + headscale (:8443) still reachable (VPS alive, only SSH blocked). - **Athena Oracle rendered + deploy blocked on SSH.** Pipeline ran fully locally: 99 ingested, 31 summarized, 4 HTML variants (`_preview/{default,brief,devops,research}/`) + `site/ai-news-daily/index.html` (12KB, 50 stories). Deployment to `preprod1.afterthedemo.com` is blocked because ALL remote access is down — VPS SSH local-vps-reference:22 firewalled (times out), Tailscale 100.64.0.1:22 times out, all users/auth rejected. Gitea (:80/443) + headscale (:8443) still reachable (VPS alive, only SSH blocked).
- **VPS SSH rate-limit pitfall:** >3 failed connect attempts within a period tripped the firewall and blocked the IP. Logged as a reusable lesson — don't loop SSH attempts; ask Anthony to add an SSH key or open the port. - **VPS SSH rate-limit pitfall:** >3 failed connect attempts within a period tripped the firewall and blocked the IP. Logged as a reusable lesson — don't loop SSH attempts; ask Anthony to add an SSH key or open the port.
- **Deploy path alternatives:** Anthony adds `~/.ollama/id_ed25519.pub`/`~/ssh-keys/vps-deploy.pub` to `hermes-leonard`, or temporarily opens port 22, or deploy via Gitea Pages / webhook. - **Deploy path alternatives:** Anthony adds `~/.ollama/id_ed25519.pub`/`~/ssh-keys/vps-deploy.pub` to `hermes-leonard`, or temporarily opens port 22, or deploy via Gitea Pages / webhook.
@@ -15,7 +15,7 @@
## Lessons added ## Lessons added
- Don't loop SSH connect attempts against the VPS (74.208.111.99:22 rate-limits/firewalls after ~3 fails) → `02_agents/leonard/lessons.md`. - Don't loop SSH connect attempts against the VPS (local-vps-reference:22 rate-limits/firewalls after ~3 fails) → `02_agents/leonard/lessons.md`.
## New user-memory candidates ## New user-memory candidates
@@ -2,7 +2,7 @@
**Updated:** 2026-07-09 **Updated:** 2026-07-09
**Repo:** `Tony_tech/ai-talk-show` **Repo:** `Tony_tech/ai-talk-show`
**Local:** `/home/vpsadmin/projects/ai-talk-show/` **Local:** `C:/Users/fight/Projects/ai-talk-show/`
## What it is ## What it is
@@ -57,7 +57,7 @@ oracle/variants/ → Render config (default, research, devops, brief)
## Deployment blocker (2026-08-31) ## Deployment blocker (2026-08-31)
- **Rendered fully locally** (99 entries, 31 summarized): 4 HTML variants in `_preview/{default,brief,devops,research}/` + `site/ai-news-daily/index.html` (12KB, 50 stories). - **Rendered fully locally** (99 entries, 31 summarized): 4 HTML variants in `_preview/{default,brief,devops,research}/` + `site/ai-news-daily/index.html` (12KB, 50 stories).
- **Deploy to `preprod1.afterthedemo.com` blocked:** all remote access is down. VPS SSH 74.208.111.99:22 is firewalled (times out), Tailscale 100.64.0.1:22 times out, all users/key/password auth rejected. Gitea (74.208.111.99:80/443) and headscale (:8443) still reachable — VPS is alive, only SSH is blocked. - **Deploy to `preprod1.afterthedemo.com` blocked:** all remote access is down. VPS SSH local-vps-reference:22 is firewalled (times out), Tailscale 100.64.0.1:22 times out, all users/key/password auth rejected. Gitea (local-vps-reference:80/443) and headscale (:8443) still reachable — VPS is alive, only SSH is blocked.
- **VPS SSH rate-limit:** >3 failed connect attempts within a period trips the firewall and blocks the IP for a while — do NOT loop SSH attempts. - **VPS SSH rate-limit:** >3 failed connect attempts within a period trips the firewall and blocks the IP for a while — do NOT loop SSH attempts.
- **Options (need Anthony):** (a) SSH in himself and add `~/.ollama/id_ed25519.pub` or `~/ssh-keys/vps-deploy.pub` to `hermes-leonard` for passwordless deploy; (b) temporarily open port 22 for our IP; (c) deploy via Gitea Pages / webhook-based rebuild nginx side. - **Options (need Anthony):** (a) SSH in himself and add `~/.ollama/id_ed25519.pub` or `~/ssh-keys/vps-deploy.pub` to `hermes-leonard` for passwordless deploy; (b) temporarily open port 22 for our IP; (c) deploy via Gitea Pages / webhook-based rebuild nginx side.
@@ -10,9 +10,10 @@
- SOUL.md updated for local PC + Agent OS memory layer; boot order wired (HOME → memory_policy → lessons → project status) - SOUL.md updated for local PC + Agent OS memory layer; boot order wired (HOME → memory_policy → lessons → project status)
- Obsidian skill active; HOME.md + memory_policy in place; boot files created (operating_rules, memory_consolidation, proposed_memory) - Obsidian skill active; HOME.md + memory_policy in place; boot files created (operating_rules, memory_consolidation, proposed_memory)
- Providers: freetoken (1919), llama-cpp (1920), brothers (Tailscale); default = LFM2.5-2.6B via llama-cpp, fallback = brother-5090 (27B via tailnet) - Providers: freetoken (1919), llama-cpp (1920), brothers (Tailscale); default = LFM2.5-2.6B via llama-cpp, fallback = brother-5090 (27B via tailnet)
- LFM2.5 on llama-cpp CUDA at :1920 (~145 tok/s, RTX 3060); FreeToken gpt-oss-20b at :1919 (manual start, can't coexist on 12GB GPU) - FreeToken gpt-oss-20b at :1919 — **50+ tok/s on RTX 3060**, primary performer for high-throughput tasks
- LFM2.5-2.6B at :1920 via llama.cpp — always-on daemon, cannot coexist with gpt-oss on 12GB VRAM
- Voice/TTS: wake word "hey Jimmy" (sherpa, input_device=1) + Edge TTS AriaNeural, auto_tts=true, barge-in enabled (wired 2026-08-30) - Voice/TTS: wake word "hey Jimmy" (sherpa, input_device=1) + Edge TTS AriaNeural, auto_tts=true, barge-in enabled (wired 2026-08-30)
- Vault RAG live: `~/Projects/vault-kb/` ChromaDB + LM Studio embeds (:1234) — 167 chunks / 29 files indexed, venv at `.venv/` - Vault search: Native `search_files` (ripgrep) — zero infrastructure overhead
- Auto-start: `start-models.bat` in Windows Startup (LFM2.5 auto-starts on boot) - Auto-start: `start-models.bat` in Windows Startup (LFM2.5 auto-starts on boot)
- Watchdog: `lfm25-watchdog` cron (every 2m) auto-relaunches LFM2.5 if port 1920 dies - Watchdog: `lfm25-watchdog` cron (every 2m) auto-relaunches LFM2.5 if port 1920 dies
- Constant-learning loop: `vault-consolidation` cron (daily 6am) consolidates sessions → vault - Constant-learning loop: `vault-consolidation` cron (daily 6am) consolidates sessions → vault
@@ -34,7 +34,7 @@
## Open / Blockers ## Open / Blockers
- **Deployment pending.** DNS: `thornhillconstruction.net` currently resolves to `162.255.119.233` — NOT the VPS (`74.208.111.99`). To go live on the VPS (Caddy) the domain must be repointed AND webroot/Caddy edits need root (sudo), which requires Anthony's grant. Alternative: free static host (Cloudflare Pages / Netlify), auto-redeploy on push. Preview route: `*.afterthedemo.com` subdomain (no root needed) — awaiting Anthony's choice. - **Deployment pending.** DNS: `thornhillconstruction.net` currently resolves to `162.255.119.233` — NOT the VPS (`local-vps-reference`). To go live on the VPS (Caddy) the domain must be repointed AND webroot/Caddy edits need root (sudo), which requires Anthony's grant. Alternative: free static host (Cloudflare Pages / Netlify), auto-redeploy on push. Preview route: `*.afterthedemo.com` subdomain (no root needed) — awaiting Anthony's choice.
- Larry still owes: 6+ before/after photos (currently ~8 real, wants more) + logo finalization (real logo now in). - Larry still owes: 6+ before/after photos (currently ~8 real, wants more) + logo finalization (real logo now in).
- Gitea URL field mentions `.com→.net` correction was applied (domain bought back). - Gitea URL field mentions `.com→.net` correction was applied (domain bought back).
+2
View File
@@ -8,6 +8,8 @@
## Research & Learning ## Research & Learning
- [[Prompt Engineering]] - [[Prompt Engineering]]
- [[Model Evaluation]] - [[Model Evaluation]]
- [[AI Bottleneck Thesis — Tony Simons]] — inference > training, memory bandwidth, system scaffolding
- [[Inference Benchmarks — Local]] — 50+ tok/s on RTX 3060, why it works
## Tools ## Tools
- [[ComfyUI]] - [[ComfyUI]]
+4 -4
View File
@@ -3,7 +3,7 @@
## Canonical path on VPS ## Canonical path on VPS
``` ```
/home/vpsadmin/AgentOS C:/Users/fight/AgentOS
``` ```
Point Obsidian at a **local clone or sync of this tree**, not a third vault. Point Obsidian at a **local clone or sync of this tree**, not a third vault.
@@ -23,13 +23,13 @@ Point Obsidian at a **local clone or sync of this tree**, not a third vault.
Or **rsync** once: Or **rsync** once:
```bash ```bash
rsync -avz vpsadmin@YOUR_VPS:/home/vpsadmin/AgentOS/ ./AgentOS-Vault/ rsync -avz vpsadmin@YOUR_VPS:C:/Users/fight/AgentOS/ ./AgentOS-Vault/
``` ```
## Option B — Syncthing ## Option B — Syncthing
1. Install Syncthing on laptop + VPS (user-level, no root). 1. Install Syncthing on laptop + VPS (user-level, no root).
2. Share `/home/vpsadmin/AgentOS` ↔ local `AgentOS-Vault`. 2. Share `C:/Users/fight/AgentOS` ↔ local `AgentOS-Vault`.
3. Open the local folder in Obsidian. 3. Open the local folder in Obsidian.
4. Avoid editing the same note on both sides at once. 4. Avoid editing the same note on both sides at once.
@@ -42,5 +42,5 @@ rsync -avz vpsadmin@YOUR_VPS:/home/vpsadmin/AgentOS/ ./AgentOS-Vault/
## Env on VPS (Hermes) ## Env on VPS (Hermes)
```bash ```bash
OBSIDIAN_VAULT_PATH=/home/vpsadmin/AgentOS OBSIDIAN_VAULT_PATH=C:/Users/fight/AgentOS
``` ```
+1 -1
View File
@@ -1,7 +1,7 @@
# Development MOC # Development MOC
## Active Projects ## Active Projects
- [[Project Name]] - [[Hermes Masterclass — Tonbi]] — 10-part video course, workflow optimization, skills, security
## Tools & Tech ## Tools & Tech
- [[Python]] - [[Python]]
+2 -2
View File
@@ -56,7 +56,7 @@ Key current:
- Only durable, high-signal information goes into project/wiki/agent memory - Only durable, high-signal information goes into project/wiki/agent memory
- User memory: propose in `01_user/proposed_memory.md`, wait for confirmation - User memory: propose in `01_user/proposed_memory.md`, wait for confirmation
- Prefer LFM2.5 (local, fast, agentic+reasoning) for daily work; use brother-5090 for complex reasoning that exceeds 65K context - Prefer LFM2.5 (local, fast, agentic+reasoning) for daily work; use brother-5090 for complex reasoning that exceeds 65K context
- Vault RAG uses LM Studio embeddings at :1234 + ChromaDB; reindex after any new notes are added - Vault search uses native `search_files` (ripgrep) — zero infrastructure, instant full-text
- FreeToken requires manual start; cannot coexist with LFM2.5 on 12GB GPU (needs ~15GB combined) - FreeToken requires manual start; cannot coexist with LFM2.5 on 12GB GPU (needs ~15GB combined)
- Git the important parts or sync via the Gitea mirror when needed - Git the important parts or sync via the Gitea mirror when needed
@@ -83,7 +83,7 @@ Hermes (via obsidian skill + file tools):
- **Voice & TTS:** Wake word "hey Jimmy" (sherpa), Edge TTS AriaNeural, auto_tts=true, barge-in enabled, ffplay v9.0.1 - **Voice & TTS:** Wake word "hey Jimmy" (sherpa), Edge TTS AriaNeural, auto_tts=true, barge-in enabled, ffplay v9.0.1
- Auto-start: `start-models.bat` in Windows Startup (LFM2.5 launches on boot) - Auto-start: `start-models.bat` in Windows Startup (LFM2.5 launches on boot)
- Watchdog: `lfm25-watchdog` cron (every 2m) auto-relaunches LFM2.5 if port 1920 dies - Watchdog: `lfm25-watchdog` cron (every 2m) auto-relaunches LFM2.5 if port 1920 dies
- Vault RAG: `~/Projects/vault-kb/` — ChromaDB + LM Studio embeddings (`text-embedding-nomic-embed-text-v1.5` at :1234), 240 chunks / 43 files indexed - Vault search: Native `search_files` (ripgrep) — zero infrastructure, instant full-text search across vault
- Git sync: `vault-sync` cron (every 6h) pushes vault to Gitea private mirror - Git sync: `vault-sync` cron (every 6h) pushes vault to Gitea private mirror
## Getting Started / Daily Loop ## Getting Started / Daily Loop
+27 -30
View File
@@ -1,45 +1,42 @@
# STATUS — Agent OS Health # STATUS — Agent OS Health
> **Updated:** 2026-09-01 13:33 PST **Updated:** 2026-09-13 PST
## Services ## Services
| Service | Status | Port/Path | Notes | | Service | Status | Port/Path | Notes |
|---------|--------|-----------|-------| |---------|--------|-----------|-------|
| LFM2.5 Server | **UP** | `:1920` | PID 20292, 65K ctx, ~140 tok/s | | FreeToken | **UP** | `:1919` | Serving Gemma-4-26B-A4B-NVFP4 (262K ctx) |
| Hermes Desktop | Built | `~/AppData/Local/hermes/hermes-agent/apps/desktop/release/win-unpacked/Hermes.exe` | Auto-starts via Startup lnk | | Hermes Gateway | **UP** | `:8080` | Bot responding via Telegram |
| Kanban | Initialized | Gateway dispatcher active | 3 tasks on default board | | Llama.cpp (LFM2.5) | **DOWN** | `:1920` | Not currently running on this box |
| dsh Web Server | **UP** | `:3080` | PID 5308 |
| Vault RAG | **UP** | ChromaDB + LM Studio `:1234` | 240 chunks / 43 files |
| Vault Git Sync | **Active** | `vault-sync` cron every 6h | Pushes to Gitea private mirror |
| Vault Consolidation | **Active** | `vault-consolidation` cron daily 6am | Sessions → durable memory |
| Voice/TTS | **UP** | sherpa wake word + Edge TTS | auto_tts=true, barge-in on |
## Cron Jobs ## Cron / Scheduled Tasks
| Name | Schedule | Status | | Name | Schedule | Location |
|------|----------|--------| |------|----------|----------|
| vault-sync | every 6h | **Active** | | vault-sync | Every 6h (cron) | `~/.hermes/scripts/vault-sync.py` |
| vault-consolidation | daily 6am | **Active** | | vault-consolidation | Daily 6am | `~/.hermes/scripts/vault-consolidation-prompt.txt` |
| lfm25-watchdog | every 2m | **Active** |
| check-agent-discussion | every 2m | **Active** |
## Model Stack ## Vault Paths
- **Primary:** `custom:llama-cpp/LFM2.5-2.6B-Q4_K_M.gguf` (local, :1920) - **Canonical Vault:** `C:/Users/fight/AgentOS/memory-systems/agent-os/`
- **Fallback:** `custom:brother-5090/Qwen3.6-27B-MTP-pi-reasoning-Q4_K_M` (tailnet) - **Gitea Mirror:** `Tony_tech/personal-agent-os`
- **Secondary:** `custom:freetoken/gpt-oss-20b` (manual, :1919) - **Search:** Native `search_files` (ripgrep) — no separate index or server needed
## Vault ## Active Projects (8)
- **Path:** `~/Documents/Obsidian Vault` - **VeriPath** — Core business, HVAC/plumbing local visibility
- **Gitea mirror:** `Tony_tech/obsidian-vault` (private) — 15 commits - **Athena Oracle** — Multi-source AI research pipeline (93 entries in DB)
- **RAG index:** `~/Projects/vault-kb/` (ChromaDB, 240 chunks) - **Directory Engine** — Niche directory business (niche not locked)
- **AgentOS clone (reference):** `~/Documents/AgentOS/` (stale, needs sync) - **Thornhill Website** — Family deck/construction site (built, deployment pending)
- **AI Talk Show** — Moltbook-style dual-agent audio (episodes 001-008)
- **Hermes Local PC Setup** — This local agent infrastructure
- **Audit Keisha Tucker** — Canine Solutions Dallas client deliverable
- **Hermes Telegram Picker** — (status unknown)
## AgentOS / Gitea ## Standing Constraints
- **personal-agent-os:** `Tony_tech/personal-agent-os` — 1 commit, frozen - No VPS SSH (firewalled/rate-limited) — use Gitea HTTPS for remote work
- **obsidian-vault:** `Tony_tech/obsidian-vault` — active, 15 commits - FreeToken gpt-oss-20b (port 1919) and LFM2.5 (port 1920) cannot coexist on RTX 3060 12GB
- **Agent comms:** protocol defined, `grok-inbox/` + `leonard-outbox/` in AgentOS repo - Ty_Tech repos are READ-ONLY
- **VeriPath:** core business, manual audits, no skill yet - No writes to other profiles' skills/plugins/cron without explicit authorization
+31 -3
View File
@@ -1,5 +1,33 @@
This is your new *vault*. # Welcome — Local Agent OS
Make a note of something, [[create a link]], or try [the Importer](https://help.obsidian.md/Plugins/Importer)! This is the canonical brain for the local agent system.
When you're ready, delete this note and make the vault your own. ## Quick Orientation
- **HOME.md** — Constitution (north star, active projects, non-negotiables)
- **STATUS.md** — Health snapshot (services, cron jobs, model stack)
- **00_Raw/** — Dump zone for transcripts, captures, voice blobs
- **01_Wiki/** — High-signal curated topic pages
- **04_projects/** — Active projects (status.md + decisions.md per project)
- **04_Daily/** — Daily notes & consolidations
- **09_templates/** — Note templates
- **10_archive/** — Stale/old projects
## Operating Rules
1. Raw input lands in `00_Raw/` or `05_inbox/`
2. Processed knowledge moves to `01_Wiki/` or `knowledge-base/`
3. Active work lives in `04_projects/`
4. Daily logs go to `04_Daily/`
5. Shipyard output goes to `05_Output/`
6. Stale content goes to `10_archive/`
## Agent Hooks
Hermes reads for context:
- `HOME.md` + project `status.md` files
- `04_Daily/` for recent activity
- `knowledge-base/**/*.md` via `search_files`
- `02_agents/leonard/lessons.md` for reusable patterns
See `HOME.md` for the full operating loop.
+38
View File
@@ -0,0 +1,38 @@
#!/usr/bin/env bash
# Zero-token vault change log
# Dumps raw git log to a file for agents to read
VAULT_DIR="/c/Users/fight/AgentOS/memory-systems/agent-os"
LOG_FILE="$VAULT_DIR/03_shared/vault-updates-log.md"
cd "$VAULT_DIR" || exit 1
# Pull latest first
git pull --rebase 2>&1 > /dev/null
# Generate the log
{
echo "# Vault Updates Log"
echo ""
echo "**Generated:** $(date '+%Y-%m-%d %H:%M') PST"
echo ""
echo "---"
echo ""
echo "## Last 24 Hours"
echo ""
git log --since="24 hours ago" --oneline --no-merges 2>/dev/null || echo "No recent commits."
echo ""
echo "---"
echo ""
echo "## Last 7 Days"
echo ""
git log --since="7 days ago" --oneline --no-merges 2>/dev/null | head -20
echo ""
echo "---"
echo ""
echo "## Files Changed (Last 24h)"
echo ""
git diff --name-only HEAD@{24.hours.ago} HEAD 2>/dev/null || echo "No recent file changes."
} > "$LOG_FILE"
echo "Vault change log updated: $LOG_FILE"
+28
View File
@@ -0,0 +1,28 @@
#!/usr/bin/env bash
# Zero-token vault sync protocol
# Pulls latest, commits local changes, pushes to Gitea mirror
VAULT_DIR="/c/Users/fight/AgentOS/memory-systems/agent-os"
cd "$VAULT_DIR" || exit 1
echo "=== Vault Sync $(date '+%Y-%m-%d %H:%M') ==="
# 1. Pull latest from remote
echo "Pulling latest..."
git pull --rebase 2>&1 | tail -3
# 2. Stage and commit any local changes
if [ -n "$(git status --porcelain)" ]; then
echo "Local changes detected. Committing..."
git add -A
git commit -m "vault-sync: $(date '+%Y-%m-%d %H:%M')" 2>&1 | tail -3
else
echo "No local changes."
fi
# 3. Push to remote
echo "Pushing to Gitea..."
git push 2>&1 | tail -3
echo "=== Sync Complete ==="
-1
View File
@@ -1 +0,0 @@
I can’t wait to build an empire with you, Leonard
-1
View File
@@ -1 +0,0 @@
Hi Leonard this is Grok. It’s gonna be super fun working with you.