Compme v0.1.7 is out: private, on-device inline autocomplete for macOS
Compme suggests the rest of your sentence as you type, in any app, using a small language model that runs entirely on your Mac. Nothing leaves your machine, and the CI pipeline rejects telemetry dependencies.
v0.1.7 is 206 commits and about 220 new tests (2,065 → 2,287) on top of v0.1.6. Highlights:
🧠 Memory that pays off. The encrypted typing memory used to be write-only: it saved what you typed but never used it. Your recent inputs now feed back into suggestions. You can delete history per app, per website or all at once, and deleting also clears the copies already in use.
⚡ Faster and better suggestions
• Follow-up suggestions reuse the model's prompt cache: 16 s → 0.75 s (~21×) on the second request in a CPU benchmark
• In long documents, ordinary phrases are no longer suppressed just because they appeared far above the cursor
• Per-app and per-website writing instructions survive alongside a long global instruction
🔒 Privacy and safety
• Card-number redaction now handles adjacent and overlapping numbers and non-ASCII digits
• Older stored memory is re-redacted when it's read back
• Text inserts are refused if focus has moved to a different field
• Keyboard shortcuts register on the main thread, and signed deep links now expire
🛠 Polish: confirmation dialogs come to the front, and the Apps list clears stale rows after you erase history.
🐧🪟 Beyond macOS: the experimental Linux adapter got a major hardening pass. Windows gained its first read-only accessibility layer, which isn't wired into the app yet.
The app is signed, notarized and installed via Homebrew:
brew tap mudrii/compme github.com/mudrii/compme
brew install --cask compme
Release notes: github.com/mudrii/compme/rel…
#macOS #Rust #LocalAI #Privacy #OpenSource #LLM
Compme v0.1.7 is out: private, on-device inline autocomplete for macOS
Compme suggests the rest of your sentence as you type, in any app, using a small language model that runs entirely on your Mac. Nothing leaves your machine, and the CI pipeline rejects telemetry dependencies.
v0.1.7 is 206 commits and about 220 new tests (2,065 → 2,287) on top of v0.1.6. Highlights:
🧠 Memory that pays off. The encrypted typing memory used to be write-only: it saved what you typed but never used it. Your recent inputs now feed back into suggestions. You can delete history per app, per website or all at once, and deleting also clears the copies already in use.
⚡ Faster and better suggestions
• Follow-up suggestions reuse the model's prompt cache: 16 s → 0.75 s (~21×) on the second request in a CPU benchmark
• In long documents, ordinary phrases are no longer suppressed just because they appeared far above the cursor
• Per-app and per-website writing instructions survive alongside a long global instruction
🔒 Privacy and safety
• Card-number redaction now handles adjacent and overlapping numbers and non-ASCII digits
• Older stored memory is re-redacted when it's read back
• Text inserts are refused if focus has moved to a different field
• Keyboard shortcuts register on the main thread, and signed deep links now expire
🛠 Polish: confirmation dialogs come to the front, and the Apps list clears stale rows after you erase history.
🐧🪟 Beyond macOS: the experimental Linux adapter got a major hardening pass. Windows gained its first read-only accessibility layer, which isn't wired into the app yet.
The app is signed, notarized and installed via Homebrew:
brew tap mudrii/compme github.com/mudrii/compme
brew install --cask compme
Release notes: github.com/mudrii/compme/rel…
#macOS #Rust #LocalAI #Privacy #OpenSource #LLM
🚀 hermesd 2026.9.26 is out.
Your AI agent can have active conversations, scheduled jobs, background processes, and several integrations running at once.
hermesd puts their status in one live terminal dashboard, so you can spend less time piecing together what happened.
This release adds a much clearer view of what needs attention, where tokens are going, and why work is waiting.
Here’s what’s new 👇
1. More useful operational warnings
Paused operation, degraded gateways, restart loops, pending restart work, failed delivery targets, and unfinished migrations are easier to spot.
The dashboard also does a better job distinguishing current evidence from old or incomplete records.
2. Token usage with more context
See:
• 14 days of daily usage
• Usage by source over 24 hours and seven days
• Your five most expensive sessions over seven days
• Token consumption for individual scheduled jobs
• Repository activity and hourly session patterns
These views make it easier to understand which parts of your workflow are driving usage.
3. Better visibility into scheduled work
A successful run no longer pushes recent failures out of sight.
Delivery queues, deferred receipts, recovery records, and provider quota holds help explain the difference between work that failed, work that is waiting, and work that has recovered.
4. A broader view of your environment
Integrations, provider and model cooldowns, Skills Hub inventory, configuration checks, storage usage, and staged changes awaiting review are now easier to inspect.
Background-process and Kanban worker checks also help distinguish the recorded worker from an unrelated process that later reused its PID.
5. A smoother terminal experience
Every detail panel scrolls. Shorter terminals get a more useful overview. Log tabs wrap to the available width, and exported detail snapshots include the full panel.
Caching reduces repeated collection and rendering work during unchanged refreshes.
6. More protection around sensitive and unreliable data
Secret redaction now covers more session titles, activity descriptions, errors, credentials, and webhook URLs.
If memory or skill files become temporarily unreadable, the dashboard keeps the last successful values, marks the source degraded, and retries. Malformed files and extreme numeric values are handled more reliably too.
All of this lives inside the existing 13-panel dashboard, spanning sessions, usage, tools, cron, skills, logs, profiles, memory, Kanban, operations, and curation.
hermesd stays read-only, independently installed, and focused on your local Hermes Agent state.
Available for Linux and macOS with Python 3.11+.
Install with uv:
uv tool install hermesd
Already using it?
uv tool upgrade hermesd
If you consume JSON snapshots, check the release notes before upgrading your parser: this release includes renamed fields and a migration guide.
📦 Full release notes (github.com/mudrii/hermesd/re…)
⭐ Source, screenshots, and installation (github.com/mudrii/hermesd)
Try it with your own Hermes setup and tell me what you’d like to see next.
#HermesAgent #AIAgents #OpenSource
🚀 hermesd 2026.9.26 is out.
Your AI agent can have active conversations, scheduled jobs, background processes, and several integrations running at once.
hermesd puts their status in one live terminal dashboard, so you can spend less time piecing together what happened.
This release adds a much clearer view of what needs attention, where tokens are going, and why work is waiting.
Here’s what’s new 👇
1. More useful operational warnings
Paused operation, degraded gateways, restart loops, pending restart work, failed delivery targets, and unfinished migrations are easier to spot.
The dashboard also does a better job distinguishing current evidence from old or incomplete records.
2. Token usage with more context
See:
• 14 days of daily usage
• Usage by source over 24 hours and seven days
• Your five most expensive sessions over seven days
• Token consumption for individual scheduled jobs
• Repository activity and hourly session patterns
These views make it easier to understand which parts of your workflow are driving usage.
3. Better visibility into scheduled work
A successful run no longer pushes recent failures out of sight.
Delivery queues, deferred receipts, recovery records, and provider quota holds help explain the difference between work that failed, work that is waiting, and work that has recovered.
4. A broader view of your environment
Integrations, provider and model cooldowns, Skills Hub inventory, configuration checks, storage usage, and staged changes awaiting review are now easier to inspect.
Background-process and Kanban worker checks also help distinguish the recorded worker from an unrelated process that later reused its PID.
5. A smoother terminal experience
Every detail panel scrolls. Shorter terminals get a more useful overview. Log tabs wrap to the available width, and exported detail snapshots include the full panel.
Caching reduces repeated collection and rendering work during unchanged refreshes.
6. More protection around sensitive and unreliable data
Secret redaction now covers more session titles, activity descriptions, errors, credentials, and webhook URLs.
If memory or skill files become temporarily unreadable, the dashboard keeps the last successful values, marks the source degraded, and retries. Malformed files and extreme numeric values are handled more reliably too.
All of this lives inside the existing 13-panel dashboard, spanning sessions, usage, tools, cron, skills, logs, profiles, memory, Kanban, operations, and curation.
hermesd stays read-only, independently installed, and focused on your local Hermes Agent state.
Available for Linux and macOS with Python 3.11+.
Install with uv:
uv tool install hermesd
Already using it?
uv tool upgrade hermesd
If you consume JSON snapshots, check the release notes before upgrading your parser: this release includes renamed fields and a migration guide.
📦 Full release notes (github.com/mudrii/hermesd/re…)
⭐ Source, screenshots, and installation (github.com/mudrii/hermesd)
Try it with your own Hermes setup and tell me what you’d like to see next.
#HermesAgent #AIAgents #OpenSource
hermesd 2026.9.13 is live 🚀
Your Hermes Agent has a lot happening behind the terminal: sessions, scheduled jobs, gateway connections, delegated tasks, plugins, recovery activity, and usage costs.
This release makes more of that activity visible—and makes the dashboard’s warnings, counts, and status information more dependable.
hermesd is an independent, read-only terminal dashboard for Hermes Agent. It reads your Agent’s local state without modifying it or importing Agent code.
Here’s the full tour of the features and fixes shipped since the last published release, 2026.7.11.
🔎 1. A clearer picture of gateway health
Gateway monitoring now brings together responsiveness, heartbeat age, lifecycle state, restart counts, exit reasons, and crash diagnostics.
Loop responsiveness has its own signal, helping identify situations where a process still has a recent heartbeat but has stopped dispatching work.
Restart warnings follow the configured policy. Ownership checks account for process identity and start time, reducing false conclusions from stale records or recycled process IDs.
You also get more visibility into shared listeners, served profiles, configuration changes, update receipts, and pending or failed deliveries.
Fixes in this area address false warnings after restarts, misleading update outcomes, and malformed restart settings that could crash a detail view.
💬 2. Sessions with more useful context
Session views now surface more of the information you need to understand ongoing work:
• Display names and pinned sessions
• Git branches and profiles
• Chat types and recent activity
• Billing sources and compression errors
• Active-session capacity and lease occupancy
• Turn leases, ownership, expiry, and recovery evidence
Recently resumed sessions sort by their activity. Hidden sessions stay out of the normal list, while hidden-but-resumable sessions no longer generate false dangling-route warnings.
Compression recovery, cooldowns, routing suspension, unfinished turns, and reset churn are easier to inspect.
Recorded session entries also have clearer live, dead, or unverifiable ownership states, so the dashboard can explain the evidence behind its counts.
📊 3. More useful—and more accurate—usage reporting
The Tokens / Cost panel adds per-model breakdowns for all-time, the last 24 hours, and the last seven days.
Where supported records are available, you can inspect API calls, token usage, billed costs, estimates, and auxiliary-task subtotals.
Several accounting fixes matter here:
• Cache-write tokens contribute to estimates.
• Explicit billed zero remains zero.
• Mixed billed and estimated usage retains both components.
• Billed rows avoid double counting.
• Rolling time windows refresh as the day progresses.
Older database schemas retain their supported session-based fallback.
⏰ 4. Scheduled jobs are easier to investigate
Cron monitoring now exposes execution history, latest results, durations, error excerpts, recent attempts, and 24-hour totals.
Execution and delivery are tracked separately. That gives you a clearer view of a job that completed successfully but still has an unresolved delivery.
There’s more context around pending handoffs, dispatch claims, ticker health, catch-up behavior, repeat progress, pauses, failure streaks, and incidents.
Totals account for retained history instead of relying on the small set of rows displayed.
Fixes improve timestamp handling, paused-job detection, malformed job fields, and stale owner status. A failure reading one cron source preserves the last-good evidence for that source.
📋 5. Kanban gains operational context
Task boards now show notification backlogs, subscriber counts, delivery modes, owning profiles, and orphaned routes.
Completion requirements help explain why a task remains in review. Failure-breaker details show which tasks have hit redispatch limits.
Backlog accounting now follows each subscription’s own events and cursor, preventing unrelated activity from inflating counts.
A corrupt board also no longer causes healthy boards to disappear.
🧩 6. Better visibility into delegations and handoffs
Follow asynchronous delegations through their recorded state, duration, delivery attempts, results, and errors.
Recent delegation cards can show model/provider details, task status, exit reasons, and redacted task-log excerpts.
Completion receipts provide more context around process handoffs, orphaned work, and unread results.
The underlying counts are more reliable too: malformed manifests remain visible in the totals even after the displayed cards are filled. Log reads stay limited to the cards being shown.
Operations also gains richer PR-monitoring, database, checkpoint, snapshot, hosted-room, and retained API-run evidence.
Those views explain the limits of the available records, including retention and missing evidence.
🔌 7. More insight into plugins, skills, MCP, and configuration
Plugin views now distinguish installation provenance, activation evidence, disabled or removed entries, and unknown states.
Cached catalog comparisons expose available updates, removals, and unmanaged installations. Missing or unreadable catalogs are clearly identified.
MCP and skills views gain better cache membership, validity, expiry, and snapshot information.
Configuration monitoring follows more current Agent settings and exposes backup and recovery history. Curator summaries reflect configured stale/archive policies, pinned skills, and patch reuse.
🖥️ 8. Everyday terminal use gets smoother
Sessions and Config detail views now scroll as complete views, keeping lower sections and alerts accessible.
Search results refresh when the underlying data changes, and a new query is preserved while an earlier worker finishes.
Clipboard export uses the current rendered view as plain text. Snapshot export creates missing parent directories and replaces files atomically.
There are also fixes for split escape sequences, transient input errors, Unicode/CJK rendering, scrolling after filtering or resizing, and terminal restoration after failures.
Text and JSON snapshots remain useful ways to inspect or export the dashboard’s state.
🔒 9. More resilient readers and stronger privacy safeguards
Cron monitoring now exposes execution history, latest results, durations, error excerpts, recent attempts, and 24-hour totals.
Execution and delivery are tracked separately. That gives you a clearer view of a job that completed successfully but still has an unresolved delivery.
There’s more context around pending handoffs, dispatch claims, ticker health, catch-up behavior, repeat progress, pauses, failure streaks, and incidents.
Totals account for retained history instead of relying on the small set of rows displayed.
Fixes improve timestamp handling, paused-job detection, malformed job fields, and stale owner status. A failure reading one cron source preserves the last-good evidence for that source.
📋 5. Kanban gains operational context
Task boards now show notification backlogs, subscriber counts, delivery modes, owning profiles, and orphaned routes.
Completion requirements help explain why a task remains in review. Failure-breaker details show which tasks have hit redispatch limits.
Backlog accounting now follows each subscription’s own events and cursor, preventing unrelated activity from inflating counts.
A corrupt board also no longer causes healthy boards to disappear.
🧩 6. Better visibility into delegations and handoffs
Follow asynchronous delegations through their recorded state, duration, delivery attempts, results, and errors.
Recent delegation cards can show model/provider details, task status, exit reasons, and redacted task-log excerpts.
Completion receipts provide more context around process handoffs, orphaned work, and unread results.
The underlying counts are more reliable too: malformed manifests remain visible in the totals even after the displayed cards are filled. Log reads stay limited to the cards being shown.
Operations also gains richer PR-monitoring, database, checkpoint, snapshot, hosted-room, and retained API-run evidence.
Those views explain the limits of the available records, including retention and missing evidence.
🔌 7. More insight into plugins, skills, MCP, and configuration
Plugin views now distinguish installation provenance, activation evidence, disabled or removed entries, and unknown states.
Cached catalog comparisons expose available updates, removals, and unmanaged installations. Missing or unreadable catalogs are clearly identified.
MCP and skills views gain better cache membership, validity, expiry, and snapshot information.
Configuration monitoring follows more current Agent settings and exposes backup and recovery history. Curator summaries reflect configured stale/archive policies, pinned skills, and patch reuse.
🖥️ 8. Everyday terminal use gets smoother
Sessions and Config detail views now scroll as complete views, keeping lower sections and alerts accessible.
Search results refresh when the underlying data changes, and a new query is preserved while an earlier worker finishes.
Clipboard export uses the current rendered view as plain text. Snapshot export creates missing parent directories and replaces files atomically.
There are also fixes for split escape sequences, transient input errors, Unicode/CJK rendering, scrolling after filtering or resizing, and terminal restoration after failures.
Text and JSON snapshots remain useful ways to inspect or export the dashboard’s state.
🔒 9. More resilient readers and stronger privacy safeguards
OpenClaw Dashboard v2026.9.7 is out. 🦞
This release goes deep on the relationship between what an AI runtime reports
and what a dashboard lets you conclude.
The work spans cost visualization, native and container monitoring, collection
diagnostics, API hardening, snapshot publication, and installation validation.
The central requirement: make the available data useful, and make its limits
visible.
Here’s the engineering walkthrough.
1. Cost charts should remain useful when some prices are missing
AI usage records can contain token counts without enough pricing information
to calculate a cost.
That creates two separate questions:
• How much usage was recorded?
• How much of that usage can we price?
Those questions need separate answers.
In v2026.9.7, available costs stay visible in the overview, the model cost
donut, and the 7-day/30-day cost charts.
Records without prices are excluded from the monetary amounts and explicitly
disclosed. Their absence does not imply that the usage was free.
For example, if some records have known costs and others are unpriced, the
displayed amount represents the known-cost subtotal. It cannot be interpreted
as the complete bill.
The monthly projection follows the same rule:
Today’s known costs × 30.
When pricing coverage is incomplete, the projection is partial too. It is a
simple extrapolation of available costs—not a reconstruction of missing
historical prices or a prediction of future workload.
There is also a smaller aggregation fix: when multiple model IDs share a
display name, their chart costs are summed.
The result is a more useful cost view with explicit boundaries around what the
numbers mean.
2. Runtime selection has to survive the entire data path
If you select an OpenClaw container, its gateway health must come from that
container.
A healthy service on the host cannot establish that the selected container is
healthy. A failed host-local probe cannot establish that the container is
offline either.
This release reads container gateway health through the selected container’s
own health RPC and prevents host metrics from overwriting that result.
It also preserves the difference between:
• A successful health request reporting an unhealthy gateway.
• A request that failed to retrieve health.
• Previously collected information that has become stale.
Those states call for different troubleshooting steps. Combining them into one
indicator removes information precisely when an operator needs it.
The same runtime-selection discipline applies to native installations and
selected Docker/Podman targets.
3. Missing data needs an explanation
A blank cell can hide several different situations:
The source did not report a value.
Collection failed.
The retained value is stale.
The collection succeeded and returned no records.
The value is legitimately zero.
This release improves how those distinctions appear.
Zero-valued configuration fields are preserved. Unavailable source fields
receive explanations. Empty tables communicate their state. Runtime cards
refresh as their data arrives.
Collection status also carries operational meaning: degraded collection is
identified as partial, and retained stale data has an explicit status rather
than silently appearing fresh.
These changes reduce the amount of source inspection needed to understand an
apparently empty dashboard.
4. Provider collection is available at the data-contract level
Provider quota and balance data can now be collected through the selected
gateway without exposing credential fields.
The separate provider card section is not displayed in this release.
That distinction matters for anyone evaluating the release: the collection
capability exists, while a dedicated visual presentation remains outside the
shipped dashboard layout.
5. More resilient behavior behind the dashboard
Several changes address the server and refresh paths.
Chat now requires usable credentials on native installations as well as
container installations. Browser-origin checks reject foreign origins before
authenticated chat work while preserving supported local development and proxy
behavior.
Runtime log collection is serialized and tied to the server lifecycle. A
disconnected client should not poison the shared log cache.
Runtime error handling is more consistent, and operations audit retention is
bounded to the newest 500 files.
Snapshot publication also received attention.
Dashboard snapshots and token caches now use unique private temporary files
with atomic publication. This prevents overlapping refreshes from corrupting
the published snapshot.
These are less visible changes, but they affect whether the UI has dependable
data to read.
6. Installation is part of release validation
A successful build leaves several practical questions unanswered:
Does the extracted archive run?
Does the package install correctly?
Does the container start with the tools it needs?
Does the locked Nix build work?
The validation pipeline now covers Linux/macOS release archives, Homebrew
installation, container startup, locked Nix flake builds, and SBOM contents.
Release publication requires successful main-branch CI for the exact tagged
commit. That connects the published source revision to its required checks.
The release notes also record a passing local make check, including renderer
regressions, Go race tests, vet, lint, static analysis, and vulnerability
checks, plus live UI checks of selected-container health and both chart
periods.
Container startup checks establish packaging behavior. Monitoring a live
OpenClaw runtime still requires the appropriate CLI and runtime access; the
stock dashboard image alone does not supply that environment.
7. The architecture stays lightweight
The application remains a Go HTTP server with an embedded SPA and zero third-
party Go runtime dependencies.
The build, container, Nix, and CI toolchains are aligned on Go 1.27.1.
The aim is to improve collection accuracy, presentation, and operational
behavior while preserving a straightforward application architecture.
Getting the release
v2026.9.7 includes Linux and macOS archives for amd64 and arm64, SHA-256
checksums, a signing bundle, and SBOMs. Homebrew and Nix installation details
are included in the release notes.
For existing users, the changes to look for first are available-cost charts,
selected-runtime gateway health, and clearer explanations around missing or
stale values.
For contributors, I’d particularly welcome reports that identify the selected
runtime, the source value, and what the dashboard displayed. That makes
collection and rendering problems much easier to reproduce.
Release:
github.com/mudrii/openclaw-d…
Full changes since v2026.7.12:
github.com/mudrii/openclaw-d…
What data ambiguity causes you the most trouble when operating AI agents: cost
coverage, runtime health, or collection freshness?
#OpenClaw #OpenSource #AIObservability
mudrii retweeted
The Ghostty memory usage memes are dead with the upcoming 1.4 release, much to the dismay of internet trolls everywhere. ~10x less memory for a visible window. ~450x lower for a non-visible window. Very reasonable compared to other terminals with 10 tabs.
This was the result of a lot of incremental hard work, but there were two big wins. One I talked about before which was scrollback compression. I want to note that these charts do NOT include scrollback, so with scrollback the results are more dramatic!
The other big win is that we free almost all GPU resources when a window is fully occluded (covered by another window, minimized, etc.). We triple-buffer our screens so for large screens this has major savings.
Those account for a large chunk of the improvements, but we also had dozens of incremental 1% wins here, a few KB there, etc. throughout the 1.4 cycle. And there are more coming!
I noted before that Ghostty's memory waste was all in the app layer and we can see it here. libghostty has always been very tight in comparison and I've shown comparisons to other embedded terminal libraries elsewhere.
And importantly, the charts below use the same grid sizes with a very small +/-2% difference due to differences in how cell metrics are calculated between terminals.
Compme v0.1.6 is out — six releases in, here's the whole story. 🚀
Seven weeks ago I shipped v0.1.0 of Compme: an open-source inline text-completion engine for macOS. Local GGUF models render ghost-text suggestions right in the field you're typing in — any app — accepted word-by-word or in full from the keyboard.
The founding constraint hasn't moved an inch since day one: all inference is local (llama.cpp/Metal), and there is no telemetry of any kind — enforced by a CI policy gate, not a promise. Your typed text never leaves your machine.
What six releases added up to:
🔹 v0.1.0 — inline ghost completions, word/full accept, candidate cycling, debounced per-field gating
🔹 v0.1.1–0.1.2 — model management done right: auto-adopt downloaded models, bring-your-own GGUF, one-click models folder
🔹 v0.1.4 — fail-closed release signing: every artifact Developer-ID signed, notarized, and stapled — no unsigned fallback path exists
🔹 v0.1.5 — runtime hardening, per-app compatibility policy, cross-platform foundation
🔹 v0.1.6 (today) — the audit release. A full three-pass audit of plan, code, and CI/CD produced 69 verified findings — every one closed, regression-tested, and independently re-verified. Highlights: accepts can no longer race a field that changed under them, worker panics are contained, shutdown is bounded, model downloads are HTTPS-only and self-cleaning.
The pipeline got the same treatment: SHA-pinned actions, scoped permissions, build-provenance attestation on every artifact, and a post-publish job that installs the released app the way a user would and re-verifies checksum, notarization, and Gatekeeper — the supply chain audits itself on every tag.
And quietly in the experimental column: a Linux adapter now exists — AT-SPI2 field access, an X11 ghost overlay and accept tap, 36 live integration tests. Not a supported product yet, but the cross-platform contract is real and proven.
2,000+ tests. Zero telemetry. One brew install away:
brew tap mudrii/compme github.com/mudrii/compme
brew trust mudrii/compme
brew install --cask compme
⭐ github.com/mudrii/compme
#opensource #rust #macos #localfirst #privacy #llm #ai
mudrii retweeted
Ghostty (and libghostty!) now has a 100% complete implementation of the Kitty Graphics Protocol. We support every feature, every option. We are the first terminal beyond Kitty to do this.
Most terminals stop at basic image placements, then give up on the long tail of other features. Ghostty covers all of them:
- Unicode placeholders (so it works in tmux)
- Relative placements (so images can be positioned relative to other images)
- Animation
- Scroll region handling (so images scroll properly with terminal scroll regions)
- All transport mediums: shared memory, temp files, etc.
- etc...
All of these features don't impact steady-state use (CPU or memory, besides raw code size). And for libghostty consumers, you can use the compile-time features flags to disable them completely.
I read the spec myself a hundred times. I read Kitty's source code to validate behaviors (our implementation is markedly different, so no GPL violation).
I also utilized agents, primarily for validation. I spun Fable and Sol in a loop for 3 weeks (pausing only when their dedicated subs exhausted limits) with a prompt to find mismatches between the spec, Kitty's reference implementation, and Ghostty.
And now we're done. Ghostty is the most compliant Kitty Graphics implementation (ignoring Kitty itself of course). And, this is all in libghostty, so now everyone can be perfectly compliant.
mudrii retweeted
If your code sucks, your agent will too.
So, software fundamentals matter more than ever.
That's why I'm interviewing @unclebobmartin this Wednesday, live on YouTube.
Don't miss it. Link below.
mudrii retweeted
New AI Infrastructure podcast: "Decision Records for AI" youtu.be/RncFBrvly3w
And anyone I know using @InvictiSecurity ? I need a solution for managing vulnerabilities across a large estate.
mudrii retweeted
Let's talk a bit about what makes the Superlogical multiplexer different architecturally from traditional terminal multiplexers! There's a lot (a LOT) more coming, but wanted to share a little bit about the terminal-specific part compared to tmux and zellij.
I've been hooked on system-wide ghost text for over a year — inline completion that follows you into every app, not just your editor. One problem: the tool I loved is macOS-only and closed source, and I
live on macOS and Linux.
So I built CompMe: an open-source, local-first inline completion + grammar engine in Rust. 🦀
The macOS app ships now — signed, notarized, free. Windows and Linux foundations already build and test natively in CI behind the same platform contract.
How it works:
• Type anywhere → a dim ghost continuation appears at your caret. Tab accepts a word, one key accepts everything, Esc dismisses. You stay in control, keystroke by keystroke.
• Hit the grammar shortcut → the word at your caret gets a vetted, in-place correction (underline + banner). The local model proposes; deterministic code decides if the proposal is safe enough to even show
— one ASCII word, case preserved, edit distance capped.
• Emoji shortcodes, typo fixes, US↔UK spelling, synonyms → instant local tables, zero model latency.
• Per-app + per-domain rules, Tab-means-indent opt-outs, browser domain restrictions, global snooze.
The parts I'm proudest of are the invisible ones:
🔒 Everything runs locally through llama.cpp (Metal on Apple Silicon). No telemetry, no cloud round-trip. History is opt-in, redacted before encryption, AES-256-GCM, key in the OS keychain. Secure fields
and terminal prompts block collection — fail closed.
⚙️ A pure event→command state machine with generation counters means a slow model response can never land in a field you already left. A completion meant for Mail must never appear in your chat window —
that's tested, not hoped.
🧪 ~1,900 tests across a 25-crate workspace. fmt + clippy + full suite gate every commit. Releases are provenance-attested.
Getting text into other apps' fields is the actual boss fight — atomic Accessibility writes, guarded clipboard fallbacks with change-count restore, stale-focus rejection, graceful degradation to a popup.
The blog post goes deep on all of it:
📖 blog.mudreac.com/post?slug=c…
⭐ Code: github.com/mudrii/compme
Cotypist proved the idea. CompMe is the bet it deserves an open implementation — on every OS. Issues, audits, and PRs welcome.
HermesD 2026.7.11 is live.
This release brings much better monitoring and visibility for Hermes Agent.
You can now see more of what matters in one dashboard:
- verification progress
- failed checks
- active goals
- project state
- Kanban boards and blockers
- gateway drain / busy state
- scheduler and cron activity
- skills and integration freshness
- safer log previews with secret redaction
HermesD is still standalone and read-only. It does not write to Hermes Agent data. It simply gives you a clearer operational view of what your agent is doing, what is waiting, and what needs attention.
Less digging through files.
Less guessing.
More confidence while running Hermes Agent.
Release: v2026.7.11
GitHub: github.com/mudrii/hermesd/re…
PyPI: pypi.org/project/hermesd/
@NousResearch
#HermesAgent #HermesD #AIAgents #AgentOps #DeveloperTools #OpenSource
🚀 OpenClaw Dashboard v2026.6.15 — shipped
Zero-dependency Go monitoring dashboard for OpenClaw AI bots. One static binary. Embedded SPA. stdlib only — no require block, no go.sum. Loopback-bound by default. CGO off. This release survives OpenClaw 2026.6's storage migration and adds 5 new observability features.
🧵 What's in it:
The migration that broke everything (and the fix)
OpenClaw 2026.6 ripped cron jobs + sub-agent tracking out of on-disk JSON and into a gateway-served SQLite store. Cron Jobs panel → blank. Sub-Agent panel → empty.
The catch: a zero-dependency build literally cannot read SQLite (that needs CGO or a third-party driver — both banned by design). So instead of caving on the constraint, both panels now source through the gateway CLI:
• Cron ← openclaw cron list --json
• Sub-agents ← openclaw tasks list --json --runtime subagent
Same shell-out pattern the dashboard already used for models list and status. CLI-first, with a fallback to the legacy cron/jobs.json for anyone still pre-migration. The tasks store doesn't expose per-run cost/tokens, so
the sub-agent cost column is dropped rather than showing fake zeros — honest beats pretty.
✨ 5 new features
1️⃣ Live channel health — a /readyz probe reads the gateway's failing[] and marks those channels unhealthy, overriding the old session-activity heuristic. Channel cards turn the Health value red. Probe down? Falls back to the heuristic.
2️⃣ Runtime Health panel from status --json — task-queue counts, an event-loop utilization gauge, plugin-compatibility warning badge, last-heartbeat age, channel summary. Opt into --deep via config for the event-loop + heartbeat blocks; lean status covers the rest.
3️⃣ Linux journald log fallback — systemd hosts logs to journald, no file to tail, so the Logs panel was empty. Records now synthesized from journalctl --user -o json (PRIORITY→severity, __REALTIME_TIMESTAMP→time). macOS path unchanged.
4️⃣ Live model catalog — display names + context-window limits from openclaw models list --json, cached with TTL + singleflight. Curated names still win; the catalog fills the gaps.
5️⃣ Install-independent gateway metadata — PID/uptime/RSS read straight from the lock file (openclaw-/gateway..lock), correct on homebrew, raw binary, bun, AND source installs — not just npm. /healthz stays the liveness signal; pgrep is last resort.
➕ Bonus: cron delivery + flapping — delivery-outcome dots and a ⚡FLAPPING badge once a job logs 3 consecutive errors.
🐛 Bug fixes (mostly model display)
• Full model versions preserved everywhere — the curated fallback was collapsing glm-5.2→GLM-5, gpt-5.5→GPT-5. Now GLM-5.2, GPT-5.5, GPT-4.1 stay intact.
• Bare model ids resolved — session logs emit MiniMax-M3 / kimi-k2.7-code (no provider prefix) while the catalog is keyed by full id. Catalog now also indexed by bare id, so panels show real names (MiniMax M3, Kimi K2.7
Code) not collapsed fallbacks.
• Bare-id catalog name no longer shadows curated names (OpenClaw emits the raw id as the "name" when none is registered).
• Claude versions preserved too — claude-opus-4-7→Claude Opus 4.7, dated snapshots dropped, no more hardcoded 4.5.
• Agent & Model Config panel now shows each agent's inherited default — 2026.6 writes agents.defaults.model as a bare string with null per-agent models; that was rendering blank.
• Unknown Gemini id → tier-neutral "Gemini" instead of mislabeled "Gemini Flash".
• Gateway liveness honors EPERM — kill(pid,0)→EPERM was read as dead, killing lock metadata for a gateway under a different uid on shared hosts. Only ESRCH is dead now.
• Explicit JSON null status block omitted instead of rendering empty.
• Non-UTF-8 journald messages (byte-array form) decoded instead of dropped.
🔒 CI + supply chain
• gofmt now enforced in lint (golangci-lint v2 formatters) — unformatted code can't merge
• Cross-compiled darwin + linux, amd64 + arm64
• Every archive ships a CycloneDX SBOM
• Checksums keyless-signed with cosign
• All backend logic test-driven, make check-clean, validated by a multi-pass two-axis review + TDD coverage audit
No breaking changes. Every new field is additive and back-compatible.
👇 Release + binaries:
github.com/mudrii/openclaw-d…
#golang #observability #opensource #AI
🚀 hermesd 2026.6.15 shipped.
A read-only terminal dashboard for Hermes Agent — one live screen for your whole ~/.hermes/: gateway, sessions, tokens, cost, tools, cron, skills, logs, memory, kanban, operations, and curator. No API keys. No network. Zero writes to agent state.
When you run an agent for real — a gateway across Telegram/Discord/Slack, cron jobs, dozens of sessions spawning sub-agents, 9 providers, skills, memory files — answering "is it healthy and where are my tokens going?" used to mean 6 commands + tailing logs. hermesd reads it all and refreshes automatically.
🆕 New in this release:
▸ Curator panel (13) — the newest memory-curation run: before→after skill counts, archived/pruned/added/consolidated, a per-tool call breakdown, the state-transition trail, model/provider, duration, and the LLM summary.
▸ Sessions → Billing & Context — per session: end reason, billing endpoint (billing_base_url), billing mode, and the model's context-window limit joined from context_length_cache.yaml.
▸ Tokens → By Endpoint + Cost Status — spend/tokens aggregated per billing endpoint (finer than per-provider), plus a reconciliation line splitting sessions into unknown / subscription-included / estimated. Costs now show authoritative $ for reported/exact/included and ~$ only when truly estimated.
▸ Gateway health — per-platform connection errors (e.g. discord "failed to reconnect"), active-agent count, restart-requested marker, ⚠ in the compact view.
▸ Operations → Response Store stats from response_store.db; PR-monitor reads now cover every naming family with per-repo dedup.
▸ Logs — extra streams: audit, mcp-stderr, workspace, workspace.error.
▸ Kanban — task workflow fields + a parent→child decomposition tree.
🔧 Fixed (the important part):
The agent had quietly changed several on-disk shapes and hermesd was reading stale formats — so panels silently blanked. Repaired: credential-pool list-vs-dict in auth.json, desktop build-stamp camelCase keys, retired pr-monitor keys, and cost-status vocabulary. To stop this recurring, I added an opt-in contract test (HERMESD_CONTRACT_TEST=1) that runs the collector against real ~/.hermes and fails the instant a populated field reads blank — catching the next drift before users do.
🛡️ Hardening:
- Rich markup-injection escaping on all untrusted ~/.hermes free-text (a [/] in a value could crash the TUI)
- symlink + path-escape guards on every file read (stays inside the Hermes home)
- SQL LIKE wildcard escaping in message search
- cache-preservation invariant: on any read error, the last-good data stays on screen — the dashboard never blanks
✅ Quality:
777 tests + 1 opt-in contract test, 99% coverage, ruff + mypy + pip-audit clean, CI matrix on Python 3.11/3.12/3.13, trusted-publish to PyPI.
Read-only. Fast. Minimal deps (Rich + Pydantic + PyYAML). Python 3.11+.
@NousResearch
⭐ github.com/mudrii/hermesd
📦 pip install hermesd → run hermesd
#AIAgents #LLMOps #DevTools #Python #OpenSource #Observability
mudrii retweeted
While closed source AI is in shambles, open source is having one of the best weeks of all time.
Z ai GLM 5.2
Minimax M3
Kimi 2.7 code
Intelligence should be open, accessible, and ready to build with, empowering every developer, everywhere.
GLM-5.2 is now available to all GLM Coding Plan users, including Lite, Pro, Max, and Team plans.
docs.z.ai/devpack/latest-mod…
As our new flagship model, GLM-5.2 delivers powerful coding capabilities, usable 1M-context support, and continued strengths in long-horizon tasks.
API and Chatbot services will launch next week. The model will also be officially open-sourced next week under the MIT License.
The future of AI is open, and it belongs to the people.
🚀 hermesd 2026.6.15 shipped.
A read-only terminal dashboard for Hermes Agent — one live screen for your whole ~/.hermes/: gateway, sessions, tokens, cost, tools, cron, skills, logs, memory, kanban, operations, and curator. No API keys. No network. Zero writes to agent state.
When you run an agent for real — a gateway across Telegram/Discord/Slack, cron jobs, dozens of sessions spawning sub-agents, 9 providers, skills, memory files — answering "is it healthy and where are my tokens going?" used to mean 6 commands + tailing logs. hermesd reads it all and refreshes automatically.
🆕 New in this release:
▸ Curator panel (13) — the newest memory-curation run: before→after skill counts, archived/pruned/added/consolidated, a per-tool call breakdown, the state-transition trail, model/provider, duration, and the LLM summary.
▸ Sessions → Billing & Context — per session: end reason, billing endpoint (billing_base_url), billing mode, and the model's context-window limit joined from context_length_cache.yaml.
▸ Tokens → By Endpoint + Cost Status — spend/tokens aggregated per billing endpoint (finer than per-provider), plus a reconciliation line splitting sessions into unknown / subscription-included / estimated. Costs now show authoritative $ for reported/exact/included and ~$ only when truly estimated.
▸ Gateway health — per-platform connection errors (e.g. discord "failed to reconnect"), active-agent count, restart-requested marker, ⚠ in the compact view.
▸ Operations → Response Store stats from response_store.db; PR-monitor reads now cover every naming family with per-repo dedup.
▸ Logs — extra streams: audit, mcp-stderr, workspace, workspace.error.
▸ Kanban — task workflow fields + a parent→child decomposition tree.
🔧 Fixed (the important part):
The agent had quietly changed several on-disk shapes and hermesd was reading stale formats — so panels silently blanked. Repaired: credential-pool list-vs-dict in auth.json, desktop build-stamp camelCase keys, retired pr-monitor keys, and cost-status vocabulary. To stop this recurring, I added an opt-in contract test (HERMESD_CONTRACT_TEST=1) that runs the collector against real ~/.hermes and fails the instant a populated field reads blank — catching the next drift before users do.
🛡️ Hardening:
- Rich markup-injection escaping on all untrusted ~/.hermes free-text (a [/] in a value could crash the TUI)
- symlink + path-escape guards on every file read (stays inside the Hermes home)
- SQL LIKE wildcard escaping in message search
- cache-preservation invariant: on any read error, the last-good data stays on screen — the dashboard never blanks
✅ Quality:
777 tests + 1 opt-in contract test, 99% coverage, ruff + mypy + pip-audit clean, CI matrix on Python 3.11/3.12/3.13, trusted-publish to PyPI.
Read-only. Fast. Minimal deps (Rich + Pydantic + PyYAML). Python 3.11+.
@NousResearch
⭐ github.com/mudrii/hermesd
📦 pip install hermesd → run hermesd
#AIAgents #LLMOps #DevTools #Python #OpenSource #Observability











