<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: 涼風羽月</title>
    <description>The latest articles on DEV Community by 涼風羽月 (@suzukazehaduki).</description>
    <link>https://dev.to/suzukazehaduki</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3800664%2F4406f701-89a1-4db9-9b6c-6dfae12365e3.jpg</url>
      <title>DEV Community: 涼風羽月</title>
      <link>https://dev.to/suzukazehaduki</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/suzukazehaduki"/>
    <language>en</language>
    <item>
      <title>LibreFang 2026.7.31 Released</title>
      <dc:creator>涼風羽月</dc:creator>
      <pubDate>Fri, 31 Jul 2026 04:01:17 +0000</pubDate>
      <link>https://dev.to/suzukazehaduki/librefang-2026731-released-143j</link>
      <guid>https://dev.to/suzukazehaduki/librefang-2026731-released-143j</guid>
      <description>&lt;h1&gt;
  
  
  LibreFang 2026.7.31 Released
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;58 PRs from 4 contributors since v2026.7.27.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;LibreFang 2026.7.31 ships production-ready multi-account support, Kubernetes deployment, EveryAPI auto-detection, and a security hardening pass that closes 20+ authorization and credential-handling gaps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core improvements
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;API security gets teeth:&lt;/strong&gt; Master API keys now support hashing (SHA-256 or Argon2id), environment variable indirection, and vault storage — so you can rotate the secret without touching &lt;code&gt;config.toml&lt;/code&gt;. The hash-only mode closes a WebSocket/terminal auth bypass that would have re-opened a bare-key exposure path. Per-user provider credentials (added in the last release) now correctly bill and budget the user whose key is being spent, and the authorization system gained 20 fixes to ownership checks, RBAC gates, and cross-account attack surfaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EveryAPI integration is automatic:&lt;/strong&gt; The daemon now auto-detects the EveryAPI CLI if you're logged in, sources model metadata from the gateway itself (not a stale OpenRouter snapshot), and refreshes the catalog on a configurable TTL. A new dashboard connect action means you never need a terminal to add the gateway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Browser automation just got richer:&lt;/strong&gt; Agents can now attach to browser-level Chrome DevTools Protocol endpoints via &lt;code&gt;Target.createTarget&lt;/code&gt;, enabling session-wide automation instead of page-specific. Page extraction is now configurable (max characters, reported in the truncation marker), and video containers (MP4, MOV, MKV, AVI) are accepted for transcription with automatic audio extraction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hands stay customized across daemon restarts:&lt;/strong&gt; Edits to built-in hands now persist to an operator override directory instead of getting erased by the next registry sync. The hand's live configuration also reaches agents immediately on save from the dashboard, not just on restart.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multi-account messaging works correctly:&lt;/strong&gt; Channel status indicators now reflect supervisor liveness, per-channel settings reach the right bot account, and deferred approvals route through the account-qualified delivery path.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes is supported out of the box:&lt;/strong&gt; A single-replica baseline with readiness contract, restricted Pod Security, and rootless support is shipped under &lt;code&gt;deploy/kubernetes/&lt;/code&gt;. The daemon gains &lt;code&gt;LIBREFANG_API_KEY&lt;/code&gt; env override and &lt;code&gt;--system&lt;/code&gt; macOS LaunchDaemon support for always-on installs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Added features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;EveryAPI gateway auto-detection and dashboard connect:&lt;/strong&gt; Read credentials from &lt;code&gt;~/.config/everyapi/credentials.json&lt;/code&gt; on demand, fetch live model list from the gateway's &lt;code&gt;/api/pricing&lt;/code&gt;, refresh on a configurable TTL, auto-detect CLI login, and surface a connect action on the dashboard (no terminal required).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Per-user LLM provider credentials:&lt;/strong&gt; Users can now store their own upstream provider API keys (encrypted in the vault), bill their own spend against their own budget, and the cost is attributed correctly per-user across all spend paths (REST, streaming, ephemeral).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hand customization on disk:&lt;/strong&gt; Edits to registry-shipped hands now persist to &lt;code&gt;~/.librefang/hands/&lt;/code&gt; instead of getting erased on sync. Hand settings changes reach live agents immediately; manifest edits are applied on the next activation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Browser-level Chrome DevTools Protocol:&lt;/strong&gt; Agents can attach to browser-level CDP endpoints by creating a target first, enabling session-wide automation. Page extraction is now operator-configurable (&lt;code&gt;[browser] max_content_chars&lt;/code&gt;) and reports the pre-truncation length so the model knows what it's missing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Video container support for transcription:&lt;/strong&gt; &lt;code&gt;media_transcribe&lt;/code&gt; and &lt;code&gt;speech_to_text&lt;/code&gt; now accept MP4, MOV, MKV, AVI containers with automatic audio extraction and Ogg/Opus re-encode.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;STT language and prompt parameters:&lt;/strong&gt; &lt;code&gt;language&lt;/code&gt; and &lt;code&gt;prompt&lt;/code&gt; parameters now reach Whisper-compatible providers (Groq, OpenAI, MiniMax, Fireworks, Together, SiliconFlow) instead of being silently dropped.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP resources primitive:&lt;/strong&gt; The client now implements &lt;code&gt;resources/list&lt;/code&gt;, &lt;code&gt;resources/read&lt;/code&gt;, and &lt;code&gt;resources/templates/list&lt;/code&gt;, surfacing server resources as synthetic tools and inlining resource content into prompts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Kubernetes-ready deployment:&lt;/strong&gt; Single-replica manifests under &lt;code&gt;deploy/kubernetes/&lt;/code&gt; with restricted Pod Security, readiness probes on &lt;code&gt;/api/ready&lt;/code&gt; (separate from liveness), and rootless support.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;macOS system LaunchDaemon:&lt;/strong&gt; &lt;code&gt;service install --system&lt;/code&gt; now registers a boot-time LaunchDaemon (instead of login-time LaunchAgent), so the daemon starts even when the user hasn't logged in yet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Per-channel sidecar settings:&lt;/strong&gt; &lt;code&gt;dm_policy&lt;/code&gt;, &lt;code&gt;group_policy&lt;/code&gt;, &lt;code&gt;threading&lt;/code&gt;, and &lt;code&gt;output_format&lt;/code&gt; overrides per &lt;code&gt;[[sidecar_channels]]&lt;/code&gt;, restoring fine-grained control lost in the sidecar migration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Config schema in &lt;code&gt;GET /api/config&lt;/code&gt;:&lt;/strong&gt; The response now includes every writable field plus a &lt;code&gt;x-non-writable&lt;/code&gt; list so the dashboard can render read-only fields with hints to edit &lt;code&gt;config.toml&lt;/code&gt; instead.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Explicit hand scheduling:&lt;/strong&gt; Hands now require an explicit &lt;code&gt;[autonomous]&lt;/code&gt; block or &lt;code&gt;schedule&lt;/code&gt; to tick — no more silent background loops inferred from &lt;code&gt;max_iterations&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Registry sync toggle:&lt;/strong&gt; Set &lt;code&gt;[registry] auto_sync = false&lt;/code&gt; to freeze the checkout and prevent edits from being erased on daemon restart.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Skill changelog fragments:&lt;/strong&gt; Write one &lt;code&gt;.md&lt;/code&gt; file per changelog entry under &lt;code&gt;changelog.d/{added,fixed,changed}/&lt;/code&gt; to avoid merge conflicts — fragments are auto-collected into &lt;code&gt;## [Unreleased]&lt;/code&gt; on release.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Process completion notifications:&lt;/strong&gt; &lt;code&gt;process_start&lt;/code&gt; with &lt;code&gt;notify_on_completion: true&lt;/code&gt; triggers a &lt;code&gt;TaskCompletionEvent&lt;/code&gt; when the process exits, reusing the async-task delivery path (no polling needed).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;All 25 channel type adapters in scheduler:&lt;/strong&gt; The scheduler delivery-target dropdown now lists WeChat, WeCom, Feishu, DingTalk, Teams, Google Chat, Matrix, Mattermost, WhatsApp, QQ, LINE, and the rest by name.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP OAuth via dashboard:&lt;/strong&gt; MCP servers can now be configured with OAuth credentials through the dashboard, and the MCP bridge carries sender account context for proper access control.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;NixOS first-class support:&lt;/strong&gt; Flake gains &lt;code&gt;nixosModules.default&lt;/code&gt; with &lt;code&gt;services.librefang&lt;/code&gt; configuration, &lt;code&gt;overlays.default&lt;/code&gt;, and evaluation-time assertions (e.g., no &lt;code&gt;environmentFile&lt;/code&gt; inside &lt;code&gt;/nix/store&lt;/code&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Distributed debug symbols:&lt;/strong&gt; Release binaries ship with stripped executables and separate &lt;code&gt;.dSYM&lt;/code&gt; / &lt;code&gt;.dwp&lt;/code&gt; debug symbols, so crash reports can be symbolized without including symbols in the download.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Fixed bugs &amp;amp; security issues
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Authorization &amp;amp; access control (20+ fixes):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Owner-gate &lt;code&gt;GET /api/config/export&lt;/code&gt; (previously exposed plaintext master key to any Admin).&lt;/li&gt;
&lt;li&gt;Authorize channel slash-commands (&lt;code&gt;/approve&lt;/code&gt;, &lt;code&gt;/switch-agent&lt;/code&gt;, etc.) through RBAC before dispatch.&lt;/li&gt;
&lt;li&gt;Role-gate terminal and agent WebSocket upgrades (Admin+ for PTY, User+ for turns).&lt;/li&gt;
&lt;li&gt;Enforce ownership on &lt;code&gt;process_poll&lt;/code&gt; / &lt;code&gt;process_write&lt;/code&gt; / &lt;code&gt;process_kill&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Gate MCP-server config mutations to Owner (RCE risk via plugin lifecycle scripts).&lt;/li&gt;
&lt;li&gt;Scrub daemon environment before &lt;code&gt;process_start&lt;/code&gt; spawns (was exposing &lt;code&gt;LIBREFANG_VAULT_KEY&lt;/code&gt; and provider keys).&lt;/li&gt;
&lt;li&gt;Stop persistent plugins from inheriting full daemon environment.&lt;/li&gt;
&lt;li&gt;Bind &lt;code&gt;POST /api/auth/refresh&lt;/code&gt; to the session it can prove it owns (was leaking other users' upstream tokens to Admin callers).&lt;/li&gt;
&lt;li&gt;Apply dangerous-command blocklist to &lt;code&gt;process_start&lt;/code&gt; (was bypassing &lt;code&gt;shell_exec&lt;/code&gt; allowlist checks).&lt;/li&gt;
&lt;li&gt;Enforce &lt;code&gt;webhook_triggers.max_payload_bytes&lt;/code&gt; at the wire level.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Multi-user data isolation (6+ fixes):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scope knowledge graph (entities/relations) per user, mirroring the memory scoping from the prior release.&lt;/li&gt;
&lt;li&gt;Stop compacted-session summaries from leaking across users on multi-user agents.&lt;/li&gt;
&lt;li&gt;Correctly attribute per-user provider-key spend to the user and enforce their budget.&lt;/li&gt;
&lt;li&gt;Scoped &lt;code&gt;GET /api/memory/agents/{id}/relations&lt;/code&gt; to the path's agent.&lt;/li&gt;
&lt;li&gt;Prevent cross-account &lt;code&gt;channel_send&lt;/code&gt; tool calls.&lt;/li&gt;
&lt;li&gt;Key channel message deduplication on per-user sender ID.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Credential &amp;amp; secret handling (8+ fixes):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accept &lt;code&gt;api_key_hash&lt;/code&gt; (&lt;code&gt;$sha256$...&lt;/code&gt;) in place of plaintext master key.&lt;/li&gt;
&lt;li&gt;Route master API key through env/vault indirection without re-reading &lt;code&gt;config.toml&lt;/code&gt; on reload.&lt;/li&gt;
&lt;li&gt;Hash-only credentials now work for WebSocket, terminal, and HTTP (previously were a bypass).&lt;/li&gt;
&lt;li&gt;Stop EveryAPI gateway base URL from being repointed to whatever account the CLI is logged into.&lt;/li&gt;
&lt;li&gt;Canonicalize provider name before per-user key lookup (so aliases bill the user's key, not fallback).&lt;/li&gt;
&lt;li&gt;Stop &lt;code&gt;GET /api/mcp/servers&lt;/code&gt; from serializing MCP environment values (was exposing inline credentials).&lt;/li&gt;
&lt;li&gt;Reject cross-account &lt;code&gt;channel_send&lt;/code&gt; on the &lt;code&gt;/mcp&lt;/code&gt; bridge path.&lt;/li&gt;
&lt;li&gt;Extended thinking now emitted through OpenAI-compatible driver (was parsed on receive only).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Streaming &amp;amp; error handling:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Surface mid-stream LLM errors (overload, rate-limit) instead of silently truncating to an empty "success" turn.&lt;/li&gt;
&lt;li&gt;Apply content-emitted guard at both streaming layers so a provider error doesn't concatenate partial responses.&lt;/li&gt;
&lt;li&gt;Classify &lt;code&gt;insufficient_quota&lt;/code&gt; as a billing error (not a malformed request) and apply long retry backoff.&lt;/li&gt;
&lt;li&gt;Terminal frames are now correlated with their chat turns (late frames no longer overwrite newer answers).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Configuration &amp;amp; state:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Config-reload now correctly gates &lt;code&gt;[registry] auto_sync&lt;/code&gt; to live-read (was falsely reporting restart-required).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;api_key_hash&lt;/code&gt; regenerates upgrade hints and warns if no transmittable key exists.&lt;/li&gt;
&lt;li&gt;Distinguish &lt;code&gt;json.null&lt;/code&gt; from unset fields in the &lt;code&gt;http_compat&lt;/code&gt; server round-trip (was corrupting redacted header values).&lt;/li&gt;
&lt;li&gt;Reject unknown keys in &lt;code&gt;[mcp_servers.transport]&lt;/code&gt; and both &lt;code&gt;HttpCompat&lt;/code&gt; variants (was silently discarding typos).&lt;/li&gt;
&lt;li&gt;Compare canonicalized JSON values in config-reload diffs (was spuriously reporting changes on every reload for maps).&lt;/li&gt;
&lt;li&gt;Parse &lt;code&gt;frequency = "reactive"&lt;/code&gt; without error (was a validation error while having no effect anyway).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Session &amp;amp; message routing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Serialize &lt;code&gt;session_id_override = canonical_entry&lt;/code&gt; on the same lock as no-override persistent dispatch (was losing history on concurrent writes).&lt;/li&gt;
&lt;li&gt;Resolve model context window provider-aware (OpenRouter agents now show real window, not 8192-token fallback).&lt;/li&gt;
&lt;li&gt;Clear persistent &lt;code&gt;compacted_summary_session_id&lt;/code&gt; on model switch so budget math uses the right window.&lt;/li&gt;
&lt;li&gt;Cron fires with &lt;code&gt;session_mode = "new"&lt;/code&gt; now isolate per fire (was sharing one &lt;code&gt;for_sender_scope&lt;/code&gt; session).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GoalRunner::start&lt;/code&gt; now atomic (was leaving orphaned, unstoppable loops on concurrent starts).&lt;/li&gt;
&lt;li&gt;Stop non-passive agents from being flagged unresponsive (the heartbeat monitor was using the wrong schedule check).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tools &amp;amp; skill execution:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apply &lt;code&gt;tool_allowlist&lt;/code&gt; when rendering MCP tools (was ignoring glob patterns like &lt;code&gt;mcp_notion__*&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Apply &lt;code&gt;tool_allowlist&lt;/code&gt; on MCP tool execution, not just display.&lt;/li&gt;
&lt;li&gt;Stop skill &lt;code&gt;description&lt;/code&gt; and tool names from bypassing the prompt-injection scanner.&lt;/li&gt;
&lt;li&gt;Stop the taint heuristic from false-positive-blocking numeric IDs (&lt;code&gt;note-12345-67890.pdf&lt;/code&gt;) and long runs of digits.&lt;/li&gt;
&lt;li&gt;Tool allowlist entries that cannot grant are now named in the response (not silent no-ops).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;read_artifact&lt;/code&gt; results are exempt from re-spill gates (was looping on artifact fetch for results larger than &lt;code&gt;spill_threshold_bytes&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Data correctness:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Session detail endpoint now reports &lt;code&gt;cost_usd&lt;/code&gt;, &lt;code&gt;total_tokens&lt;/code&gt;, &lt;code&gt;duration_ms&lt;/code&gt;, and &lt;code&gt;label&lt;/code&gt; (was missing all four).&lt;/li&gt;
&lt;li&gt;Goal creation now normalizes blank &lt;code&gt;parent_id&lt;/code&gt; / &lt;code&gt;agent_id&lt;/code&gt; to "absent" and validates non-blank UUIDs up front.&lt;/li&gt;
&lt;li&gt;Stop agent deletion from silently orphaning shared knowledge entities (was breaking entity ownership model).&lt;/li&gt;
&lt;li&gt;Stop hand activation from fabricating &lt;code&gt;mode = "full"&lt;/code&gt; exec policy (was silently bypassing approval queues).&lt;/li&gt;
&lt;li&gt;Stop &lt;code&gt;agent kill&lt;/code&gt; from deleting audit trail rows (was breaking the WORM Merkle chain).&lt;/li&gt;
&lt;li&gt;Stop a partial &lt;code&gt;[channel_overrides]&lt;/code&gt; table from gating group messages (was materializing defaults for unset fields).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Network &amp;amp; storage:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stop symlinks in skill installers from copying external tree contents.&lt;/li&gt;
&lt;li&gt;Bound ClawHub/Skillhub skill-zip extraction (was vulnerable to decompression bombs).&lt;/li&gt;
&lt;li&gt;Stream attachment-URL fetches with running size cap instead of buffering (was OOMing on unbounded bodies).&lt;/li&gt;
&lt;li&gt;Per-IP WebSocket connection tracker guard-drop TOCTOU fixed (was deleting live connection entries).&lt;/li&gt;
&lt;li&gt;Tolerate empty-string error objects in OpenAI-compatible streaming (was aborting stream on benign &lt;code&gt;"error": ""&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CLI &amp;amp; integration:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Telegram menu button callbacks now work (was silently dropping on both Rust and Python sidecars).&lt;/li&gt;
&lt;li&gt;Matrix sidecar inbound no longer silently dropped under default &lt;code&gt;GroupPolicy::MentionOnly&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Correct the channel docs' claim about env var names and formats.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;librefang skill install ./dir&lt;/code&gt; now accepts &lt;code&gt;SKILL.md&lt;/code&gt;-only directories and Git URLs.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;librefang skill search&lt;/code&gt; and &lt;code&gt;install&lt;/code&gt; now point at the local synced registry (was pointing at nonexistent GitHub org).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;librefang doctor&lt;/code&gt; EveryAPI check now warns on stale credentials (was reporting green after logout).&lt;/li&gt;
&lt;li&gt;Dashboard Clone button now opens a dialog (was posting empty body and always failing).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Changed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Bump &lt;code&gt;agent-client-protocol&lt;/code&gt; to 2.0.0 and update call sites.&lt;/li&gt;
&lt;li&gt;Normalize on-disk upload naming to &lt;code&gt;&amp;lt;uuid&amp;gt;.&amp;lt;ext&amp;gt;&lt;/code&gt; across all producers.&lt;/li&gt;
&lt;li&gt;Thread user identity into audit trail for human-initiated API actions.&lt;/li&gt;
&lt;li&gt;Migrate Linux system tray from &lt;code&gt;tray-icon&lt;/code&gt; to pure D-Bus &lt;code&gt;ksni&lt;/code&gt; implementation.&lt;/li&gt;
&lt;li&gt;Docker entrypoint now detects root vs. rootless mode and adapts (works in Kubernetes without a second image tag).&lt;/li&gt;
&lt;li&gt;Consolidate invisible/format code-point lists into a single source of truth.&lt;/li&gt;
&lt;li&gt;Stop releasing stable CLI to homebrew-tap (now ships from homebrew-core; tap carries &lt;code&gt;beta&lt;/code&gt; / &lt;code&gt;rc&lt;/code&gt; / versioned formulas only).&lt;/li&gt;
&lt;li&gt;Refresh OpenRouter model snapshot.&lt;/li&gt;
&lt;li&gt;Move all CI/release workflows from Node 20 to Node 24.&lt;/li&gt;
&lt;li&gt;Split release debug symbols into a separate asset (&lt;code&gt;.dSYM&lt;/code&gt; / &lt;code&gt;.dwp&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Security
&lt;/h2&gt;

&lt;p&gt;This release closes 30+ authorization, credential-handling, and data-isolation gaps discovered in the prior release's multi-user and per-user credential work. Key hardening:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Owner-gated MCP-server mutations, plugin installation, and &lt;code&gt;/api/config/export&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;RBAC now gates terminal and WebSocket upgrades by role (Admin+ for PTY, User+ for turns).&lt;/li&gt;
&lt;li&gt;Per-user budget enforcement on provider-key spend; spend is correctly attributed and audited.&lt;/li&gt;
&lt;li&gt;Hash-only API key now works for WebSocket/terminal (closes a previous bypass).&lt;/li&gt;
&lt;li&gt;Credential environment values no longer leak from &lt;code&gt;GET /api/mcp/servers&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Canonical provider names used in per-user key vault lookups (aliases now bill user keys correctly).&lt;/li&gt;
&lt;li&gt;Dangerous-command blocklist now applied to &lt;code&gt;process_start&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Daemon environment scrubbed before spawning persistent processes.&lt;/li&gt;
&lt;li&gt;Cross-account &lt;code&gt;channel_send&lt;/code&gt; blocked on both HTTP and &lt;code&gt;/mcp&lt;/code&gt; bridge paths.&lt;/li&gt;
&lt;li&gt;Knowledge graph scoped per user on multi-user agents.&lt;/li&gt;
&lt;li&gt;Compacted-session summaries no longer leak across users.&lt;/li&gt;
&lt;li&gt;Unknown keys in MCP config rejected at boot (was silently dropping typos).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Install / Upgrade
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Binary&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://get.librefang.ai | sh

&lt;span class="c"&gt;# Rust SDK&lt;/span&gt;
cargo add librefang

&lt;span class="c"&gt;# JavaScript SDK&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; @librefang/sdk

&lt;span class="c"&gt;# Python SDK&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;librefang-sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;Full Changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/releases/tag/v2026.7.31" rel="noopener noreferrer"&gt;GitHub Release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.gg/DzTYqAZZmc" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/docs/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>opensource</category>
      <category>release</category>
    </item>
    <item>
      <title>LibreFang 2026.7.27 Released</title>
      <dc:creator>涼風羽月</dc:creator>
      <pubDate>Tue, 28 Jul 2026 06:33:53 +0000</pubDate>
      <link>https://dev.to/suzukazehaduki/librefang-2026727-released-3mc4</link>
      <guid>https://dev.to/suzukazehaduki/librefang-2026727-released-3mc4</guid>
      <description>&lt;h1&gt;
  
  
  LibreFang 2026.7.27 Released
&lt;/h1&gt;

&lt;p&gt;We're shipping &lt;strong&gt;v2026.7.27&lt;/strong&gt; with 33 improvements spanning provider integrations, operational polish, and critical fidelity fixes.&lt;br&gt;
Here's what matters for your Agent OS deployments.&lt;/p&gt;

&lt;h2&gt;
  
  
  New: Provider Integrations &amp;amp; Deployment
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;EveryAPI is now a first-class model provider.&lt;/strong&gt;&lt;br&gt;
Connect it via &lt;code&gt;librefang models connect everyapi&lt;/code&gt; in the CLI or the new Providers page UI.&lt;br&gt;
The CLI includes a built-in wiring doctor to catch misconfiguration—no more debugging silent auth failures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;macOS users: LibreFang now runs at boot.&lt;/strong&gt;&lt;br&gt;
The new &lt;code&gt;service install --system&lt;/code&gt; command installs a LaunchDaemon so your daemon starts automatically at boot, before anyone logs in and without a user session.&lt;br&gt;
Forget about manual restarts after reboot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NixOS and additional Linux distros are now officially supported.&lt;/strong&gt;&lt;br&gt;
We've added first-class deployment support for NixOS with deepin and Debian distro awareness baked in, making it trivial to package and deploy across diverse Linux environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fixes: Correctness &amp;amp; Data Integrity
&lt;/h2&gt;

&lt;p&gt;Three correctness fixes ship with this release:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Audit logs are now WORM-protected.&lt;/strong&gt;
Audit entries persist even when an agent is purged, preventing accidental evidence loss in compliance-sensitive deployments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool results are no longer lossy.&lt;/strong&gt;
We fixed a spill dead band that was truncating tool outputs.
Results now round-trip without silent truncation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context windows from &lt;code&gt;agent.toml&lt;/code&gt; are now honored everywhere.&lt;/strong&gt;
Previously some turn-execution paths ignored the configured &lt;code&gt;context_window&lt;/code&gt;, leading to inconsistent behavior.
This is fixed across all paths.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Under the Hood
&lt;/h2&gt;

&lt;p&gt;Security dependency bumps clear high-severity advisories in libvips (via sharp &amp;gt;=0.35.0) and Next.js App Router.&lt;br&gt;
We've also hardened credential-pattern detection to reduce false positives, improved test reliability with connection pool timeouts, and fixed callback message ID resolution for MCP OAuth flows.&lt;/p&gt;

&lt;p&gt;The TUI now runs on a process-lifetime runtime, preventing startup panics and silent session-summary loss during shutdown.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;33 PRs from 2 contributors since v2026.7.21.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Install / Upgrade
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Binary&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://get.librefang.ai | sh

&lt;span class="c"&gt;# Rust SDK&lt;/span&gt;
cargo add librefang

&lt;span class="c"&gt;# JavaScript SDK&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; @librefang/sdk

&lt;span class="c"&gt;# Python SDK&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;librefang-sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;Full Changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/releases/tag/v2026.7.27" rel="noopener noreferrer"&gt;GitHub Release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.gg/DzTYqAZZmc" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/docs/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>opensource</category>
      <category>release</category>
    </item>
    <item>
      <title>LibreFang 2026.7.21 Released</title>
      <dc:creator>涼風羽月</dc:creator>
      <pubDate>Mon, 27 Jul 2026 11:33:15 +0000</pubDate>
      <link>https://dev.to/suzukazehaduki/librefang-2026721-released-1g3h</link>
      <guid>https://dev.to/suzukazehaduki/librefang-2026721-released-1g3h</guid>
      <description>&lt;h1&gt;
  
  
  LibreFang 2026.7.21 Released
&lt;/h1&gt;

&lt;p&gt;61 PRs from 4 contributors since v2026.7.11.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's New
&lt;/h2&gt;

&lt;p&gt;This release brings &lt;strong&gt;critical security improvements&lt;/strong&gt;, &lt;strong&gt;multi-user isolation fixes&lt;/strong&gt;, and &lt;strong&gt;powerful credential management&lt;/strong&gt; — all while expanding MCP integration and shipping quality-of-life wins across the dashboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔐 Security &amp;amp; Multi-User Data Isolation
&lt;/h3&gt;

&lt;p&gt;If you're running LibreFang with multiple users or on shared infrastructure, pay close attention here.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Per-user LLM provider credentials&lt;/strong&gt; — Users can now bring their own API keys with transparent per-owner spend tracking. Operators set org-wide provider allowlists and enforce per-user budgets directly at the API level.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge graph per-user scoping&lt;/strong&gt; — Fixed a cross-user data leak: the knowledge graph is now partitioned by user on multi-user agents, ensuring shared agents don't expose one user's memory to another.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-account channel guards&lt;/strong&gt; — Enforced through the MCP bridge to prevent unauthorized agent-to-channel sends.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session-owned compacted summaries&lt;/strong&gt; — Prevents prompt leaks across user sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Four-pass security audit&lt;/strong&gt; — Caught and fixed 15+ bugs ranging from authorization gaps to token-quota races.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🚀 Better Developer Experience
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MCP resources primitive&lt;/strong&gt; — Agents can now access MCP-exposed resources, completing the MCP integration beyond tools alone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Slack progress for long tasks&lt;/strong&gt; — Long-running agent tasks now post real-time phase updates in Slack using Block Kit message edits, so users see progress instead of waiting for a single final reply.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HAND.toml online editing&lt;/strong&gt; — Edit hand manifests directly from the Hands panel in the dashboard — no file editing required.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expanded delivery-target channel presets&lt;/strong&gt; — All sidecar adapters now support shortcut presets for common targets.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🛠️ Infrastructure &amp;amp; Provider Robustness
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-provider improvements&lt;/strong&gt; — Added response_format support for Gemini and Vertex AI; prefer live model catalog with build-time fallback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token quota safety&lt;/strong&gt; — Release reservations on drop to prevent self-imposed quota DoS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provider alias safety&lt;/strong&gt; — Canonicalize providers before per-user key lookup to block chargeback leaks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better error visibility&lt;/strong&gt; — Surface mid-stream provider errors instead of garbled or empty turns.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Added
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Env opt-out (TELEGRAM_STREAMING) for the streaming path (#6482) (@houko)&lt;/li&gt;
&lt;li&gt;Per-user LLM provider credentials with per-owner usage attribution (initial) (#6483) (@houko)&lt;/li&gt;
&lt;li&gt;Org-wide LLM provider allowlist (fail-closed at driver resolution) (#6484) (@houko)&lt;/li&gt;
&lt;li&gt;Slack multi-step progress display via AgentPhase-driven Block Kit updates (#6487) (@houko)&lt;/li&gt;
&lt;li&gt;Per-user attribution survey + API-level user filtering of audit queries (#6488) (@houko)&lt;/li&gt;
&lt;li&gt;Process_start completion notification via the async task tracker (#6489) (@houko)&lt;/li&gt;
&lt;li&gt;Edit HAND.toml online from the Hands panel (#6490) (@houko)&lt;/li&gt;
&lt;li&gt;Scope the knowledge graph per user (peer_id) on multi-user agents (#6494) (#6502) (@houko)&lt;/li&gt;
&lt;li&gt;Expand delivery-target channel presets to all sidecar adapters (#6506) (@houko)&lt;/li&gt;
&lt;li&gt;Owner-gated CRUD for per-user provider credentials (#6460) (#6509) (@houko)&lt;/li&gt;
&lt;li&gt;Implement the MCP resources primitive (#6501) (#6532) (@houko)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fixed
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Prefer the live model catalog with a build fallback (#6384) (@pavver)&lt;/li&gt;
&lt;li&gt;Security and correctness hardening from repo-wide audit (#6438) (@houko)&lt;/li&gt;
&lt;li&gt;Second-pass security and correctness hardening from repo-wide audit (#6439) (@houko)&lt;/li&gt;
&lt;li&gt;Third-pass security and correctness hardening from repo-wide audit (#6441) (@houko)&lt;/li&gt;
&lt;li&gt;Fourth-pass security and correctness hardening from repo-wide audit (#6446) (@houko)&lt;/li&gt;
&lt;li&gt;Resolve four reported bugs (#6423, #6442, #6443, #6444) (#6449) (@houko)&lt;/li&gt;
&lt;li&gt;Enforce cross-account channel_send guard through the /mcp bridge (#6443) (#6455) (@houko)&lt;/li&gt;
&lt;li&gt;Trust operator env allowlist in sandbox_command (#6465) (@houko)&lt;/li&gt;
&lt;li&gt;Treat retired pnpm audit endpoint as skip, not a dependency issue (#6466) (@houko)&lt;/li&gt;
&lt;li&gt;Field-scope dm_policy/group_policy so a partial override stops silently gating groups, and expose them on [sidecar_channels] (#6468) (@houko)&lt;/li&gt;
&lt;li&gt;Distinguish context and budget limits (#6479) (@houko)&lt;/li&gt;
&lt;li&gt;Allow dashboard login script under CSP (#6480) (@houko)&lt;/li&gt;
&lt;li&gt;Treat auto_dream fork tool calls as system-internal so RBAC does not gate them (#6485) (@houko)&lt;/li&gt;
&lt;li&gt;Login page unreadable in light theme (CSS cascade source-order bug) (#6486) (@houko)&lt;/li&gt;
&lt;li&gt;Pin login_page.html to LF so the CSP-hash test passes on Windows (#6481) (#6496) (@houko)&lt;/li&gt;
&lt;li&gt;Gate compacted summary by owning session to stop cross-user prompt leak (#6493) (#6497) (@houko)&lt;/li&gt;
&lt;li&gt;Honour glob patterns in per-agent tool_allowlist/tool_blocklist (#6495) (#6498) (@houko)&lt;/li&gt;
&lt;li&gt;Approvals approve 415 false-success + status column in approvals list (#6492) (#6500) (@houko)&lt;/li&gt;
&lt;li&gt;Stop over-blocking MCP arguments that carry a long numeric id (#6499) (#6503) (@houko)&lt;/li&gt;
&lt;li&gt;Route post-approval reply through account-qualified outbound (#6492) (#6511) (@houko)&lt;/li&gt;
&lt;li&gt;Surface mid-stream provider errors instead of empty/garbled turns (#6512) (@houko)&lt;/li&gt;
&lt;li&gt;Release the token reservation on drop to stop a quota self-DoS (#6513) (@houko)&lt;/li&gt;
&lt;li&gt;Attribute owner-key spend and enforce per-user budget on authenticated API turns (#6514) (@houko)&lt;/li&gt;
&lt;li&gt;Honor response_format in the Gemini and Vertex AI drivers (#6515) (@houko)&lt;/li&gt;
&lt;li&gt;Treat [browser] config-reload as restart-required, not a false hot-reload (#6516) (@houko)&lt;/li&gt;
&lt;li&gt;Canonicalize provider before the per-user key lookup to stop an alias chargeback leak (#6517) (@houko)&lt;/li&gt;
&lt;li&gt;Serialize a canonical-session override on the per-agent lock to stop a lost-update race (#6518) (@houko)&lt;/li&gt;
&lt;li&gt;Scope MCP knowledge_add_* writes to the calling agent, not agent_id="" (#6519) (@houko)&lt;/li&gt;
&lt;li&gt;Recognize CHANGELOG attribution on a bullet's continuation lines (#6520) (@houko)&lt;/li&gt;
&lt;li&gt;Don't orphan another agent's relations when deleting a shared entity's first-writer (#6522) (@houko)&lt;/li&gt;
&lt;li&gt;Honor auto_approve and return 409 on double-resolve (#6492) (#6528) (@houko)&lt;/li&gt;
&lt;li&gt;Surface on-disk upload path to agents for every file type (#6531) (@neo-wanderer)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Changed
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Normalize on-disk upload naming to . (#6530) (#6536) (@houko)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Documentation, maintenance, and other internal changes&lt;/p&gt;
&lt;h3&gt;
  
  
  Documentation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Explain trusted_senders vs [[users]] RBAC composition (#6492) (#6507) (@houko)&lt;/li&gt;
&lt;li&gt;Document per-user key precedence over operator rotation (#6460) (#6510) (@houko)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Maintenance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Bump the cargo-minor-patch group with 10 updates (#6452) (@app/dependabot)&lt;/li&gt;
&lt;li&gt;Bump tokio-tungstenite from 0.29.0 to 0.30.0 (#6453) (@app/dependabot)&lt;/li&gt;
&lt;li&gt;Update yanked spin 0.9.8 to 0.9.9 (#6454) (@houko)&lt;/li&gt;
&lt;li&gt;Bump the actions-minor-patch group with 3 updates (#6456) (@app/dependabot)&lt;/li&gt;
&lt;li&gt;Bump actions/setup-node from 6.4.0 to 7.0.0 (#6457) (@app/dependabot)&lt;/li&gt;
&lt;li&gt;Lock in env trust split across defer→approve→resume (follow-up to #6465) (#6467) (@houko)&lt;/li&gt;
&lt;li&gt;Bump the web-minor-patch group in /web with 5 updates (#6472) (@app/dependabot)&lt;/li&gt;
&lt;li&gt;Bump the dashboard-minor-patch group in /crates/librefang-api/dashboard with 6 updates (#6473) (@app/dependabot)&lt;/li&gt;
&lt;li&gt;Bump @eslint/js from 9.39.4 to 9.39.5 in /crates/librefang-api/dashboard (#6474) (@app/dependabot)&lt;/li&gt;
&lt;li&gt;Bump serde_with from 3.18.0 to 3.21.0 (#6475) (@app/dependabot)&lt;/li&gt;
&lt;li&gt;Bump the docs-minor-patch group in /docs with 4 updates (#6491) (@app/dependabot)&lt;/li&gt;
&lt;li&gt;Update model snapshot (#6523) (@houko)&lt;/li&gt;
&lt;li&gt;Bump wasmtime from 46.0.1 to 47.0.1 (#6527) (@app/dependabot)&lt;/li&gt;
&lt;li&gt;Bump the cargo-minor-patch group across 1 directory with 17 updates (#6533) (@app/dependabot)&lt;/li&gt;
&lt;li&gt;Migrate librefang-acp to agent-client-protocol 1.3.0 (supersedes #6526) (#6534) (@houko)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install / Upgrade
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Binary&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://get.librefang.ai | sh

&lt;span class="c"&gt;# Rust SDK&lt;/span&gt;
cargo add librefang

&lt;span class="c"&gt;# JavaScript SDK&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; @librefang/sdk

&lt;span class="c"&gt;# Python SDK&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;librefang-sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;Full Changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/releases/tag/v2026.7.21" rel="noopener noreferrer"&gt;GitHub Release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.gg/DzTYqAZZmc" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/docs/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>opensource</category>
      <category>release</category>
    </item>
    <item>
      <title>LibreFang 2026.7.10 Released</title>
      <dc:creator>涼風羽月</dc:creator>
      <pubDate>Fri, 10 Jul 2026 10:39:58 +0000</pubDate>
      <link>https://dev.to/suzukazehaduki/librefang-2026710-released-4oh</link>
      <guid>https://dev.to/suzukazehaduki/librefang-2026710-released-4oh</guid>
      <description>&lt;h1&gt;
  
  
  LibreFang 2026.7.10 Released
&lt;/h1&gt;

&lt;p&gt;This release unlocks &lt;strong&gt;extended thinking for reasoning models&lt;/strong&gt;, improves &lt;strong&gt;Slack formatting&lt;/strong&gt;, eliminates &lt;strong&gt;redundant artifact output&lt;/strong&gt;, and expands &lt;strong&gt;international reach&lt;/strong&gt;. Alongside that, we've locked down security advisories and made your test suites faster and more reliable.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;39 PRs from 4 contributors since v2026.6.29.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's New
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🧠 Extended Thinking &amp;amp; Reasoning Support
&lt;/h3&gt;

&lt;p&gt;The OpenAI-compatible driver now correctly forwards &lt;code&gt;reasoning_effort&lt;/code&gt; to supported models, unlocking extended thinking and o1-style reasoning flows. If you're using Claude, o1, or other reasoning-enabled models, this is a substantial unlock for complex problem-solving agents that need to think deeply before acting.&lt;/p&gt;

&lt;h3&gt;
  
  
  💬 Native Slack Message Formatting
&lt;/h3&gt;

&lt;p&gt;Markdown messages sent to Slack are now automatically converted to Slack's native &lt;code&gt;mrkdwn&lt;/code&gt; format in the Slack sidecar. Your Slack agents now produce properly-formatted, native-looking messages instead of raw Markdown syntax — a small change that makes a big difference in readability.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎯 Smarter Output Deduplication
&lt;/h3&gt;

&lt;p&gt;Artifact read results are no longer re-spilled at the post-tool chokepoint, eliminating redundant output and keeping agent conversations cleaner. This is especially valuable in longer runs where output verbosity can distract from the actual work.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔍 Dashboard Model Transparency
&lt;/h3&gt;

&lt;p&gt;The Codex CLI now exposes which model it's configured to run, visible directly in the dashboard. No more mystery about what's powering your agents.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌍 Internationalization
&lt;/h3&gt;

&lt;p&gt;Dashboard and website translations have been completed and proofread across multiple languages, opening LibreFang to a global community of developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛡️ Security &amp;amp; Reliability Hardening
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Tests can now run offline with &lt;code&gt;LIBREFANG_REGISTRY_OFFLINE&lt;/code&gt;, removing network dependencies and accelerating your CI pipelines&lt;/li&gt;
&lt;li&gt;Multiple security advisories cleared: quick-xml, crossbeam-epoch, and cargo-deny all updated&lt;/li&gt;
&lt;li&gt;WS terminal frames now correctly correlate with chat turns, improving observability and debugging&lt;/li&gt;
&lt;li&gt;Fixed edge cases in media handling and TUI formatting for smoother operation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install / Upgrade
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Binary&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://get.librefang.ai | sh

&lt;span class="c"&gt;# Rust SDK&lt;/span&gt;
cargo add librefang

&lt;span class="c"&gt;# JavaScript SDK&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; @librefang/sdk

&lt;span class="c"&gt;# Python SDK&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;librefang-sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;Full Changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/releases/tag/v2026.7.10" rel="noopener noreferrer"&gt;GitHub Release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.gg/DzTYqAZZmc" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/docs/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>opensource</category>
      <category>release</category>
    </item>
    <item>
      <title>LibreFang 2026.6.29 Released</title>
      <dc:creator>涼風羽月</dc:creator>
      <pubDate>Mon, 29 Jun 2026 07:00:20 +0000</pubDate>
      <link>https://dev.to/suzukazehaduki/librefang-2026629-released-4pfe</link>
      <guid>https://dev.to/suzukazehaduki/librefang-2026629-released-4pfe</guid>
      <description>&lt;h1&gt;
  
  
  LibreFang 2026.6.29 Released
&lt;/h1&gt;

&lt;p&gt;This release marks &lt;strong&gt;three major engineering priorities&lt;/strong&gt;: bringing LibreFang to global audiences, expanding hardware support, and squashing critical reliability edge cases. &lt;strong&gt;14 PRs from 4 contributors&lt;/strong&gt; landed since v2026.6.26-beta.24.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's New
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🌍 Full Korean Language Support
&lt;/h3&gt;

&lt;p&gt;We've shipped complete Korean translations across the entire stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UI&lt;/strong&gt;: 233 language keys translated&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI/TUI&lt;/strong&gt;: Commands and help text in Korean&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error messages&lt;/strong&gt;: Expanded from 43 to 233 localized keys&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Korean-speaking developers and teams can now use LibreFang entirely in their language.&lt;/p&gt;

&lt;h3&gt;
  
  
  🏗️ Multiplatform: ARM64 Linux &amp;amp; Android Ready
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;aarch64 Linux is now fully supported:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Official ARM64 binaries published to AUR and the project-maintained pacman repository alongside x86_64&lt;/li&gt;
&lt;li&gt;Android NDK cross-compilation fixed (legacy binutils symlink + PATH resolution)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deploy confidently on Raspberry Pi, Apple Silicon Linux containers, cloud ARM instances, and Android environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛡️ Reliability Fixes &amp;amp; Security
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mixed-media message batches&lt;/strong&gt; — edge case fixed where coalesced batches with mixed content types weren't enriched on the debounced path&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Telegram setup form resilience&lt;/strong&gt; — stays available even if the describe call times out, preventing users from getting stuck mid-setup&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security patch&lt;/strong&gt; — bumped &lt;code&gt;pdf-extract&lt;/code&gt; to 0.12 to patch &lt;a href="https://rustsec.org/" rel="noopener noreferrer"&gt;RUSTSEC-2026-0187&lt;/a&gt; (lopdf vulnerability)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚡ Developer Experience
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Codex CLI&lt;/strong&gt; now works outside Git repositories — remove the requirement to run inside a &lt;code&gt;.git&lt;/code&gt; tree. Perfect for standalone scripts, CI pipelines, and one-off analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Changes at a Glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Changes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Internationalization&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Korean UI (#6349), Korean errors (#6353), Korean CLI/TUI (#6356)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Multiplatform&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;aarch64 packages (#6358), NDK binutils fix (#6335), NDK PATH fix (#6338)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reliability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Telegram setup (#6345), mixed-media enrichment (#6351), security patch (#6339)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Developer Tools&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Codex CLI outside Git (#6347)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Operations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AUR automation (#6341), pacman repo to R2 (#6352), CI improvements (#6340, #6346)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Detailed changelog&lt;/p&gt;
&lt;h3&gt;
  
  
  Added
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;UI Korean translation (#6349) (&lt;a class="mentioned-user" href="https://dev.to/seungjin"&gt;@seungjin&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Complete Korean error translations (43 → 233 keys) (#6353) (@houko)&lt;/li&gt;
&lt;li&gt;Add Korean (ko) translation for the CLI/TUI (#6356) (@houko)&lt;/li&gt;
&lt;li&gt;Publish aarch64 packages alongside x86_64 (#6334) (#6358) (@houko)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Fixed
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Bump pdf-extract 0.10→0.12 to patch lopdf RUSTSEC-2026-0187 (#6339) (@houko)&lt;/li&gt;
&lt;li&gt;Keep Telegram setup form available after describe timeout (#6345) (@pavver)&lt;/li&gt;
&lt;li&gt;Allow Codex CLI outside Git repositories (#6347) (@pavver)&lt;/li&gt;
&lt;li&gt;Enrich coalesced mixed-media batches on the debounced path (#6348) (#6351) (@houko)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Maintenance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Symlink legacy NDK binutils so vendored OpenSSL cross-compiles for Android (#6335) (@houko)&lt;/li&gt;
&lt;li&gt;Put NDK bin on PATH so openssl-src finds the legacy ranlib symlink (#6338) (@houko)&lt;/li&gt;
&lt;li&gt;Enable auto-merge instead of forcing --admin (#6340) (@houko)&lt;/li&gt;
&lt;li&gt;Publish AUR packages on release (#6334) (#6341) (@houko)&lt;/li&gt;
&lt;li&gt;Publish project-maintained pacman repo to R2 (#6334) (#6352) (@houko)&lt;/li&gt;
&lt;li&gt;Fix[flake.nix]: Add perl to nativeBuildInputs (#6346) (@FrantaNautilus)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install / Upgrade
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Binary&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://get.librefang.ai | sh

&lt;span class="c"&gt;# Rust SDK&lt;/span&gt;
cargo add librefang

&lt;span class="c"&gt;# JavaScript SDK&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; @librefang/sdk

&lt;span class="c"&gt;# Python SDK&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;librefang-sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;Full Changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/releases/tag/v2026.6.29" rel="noopener noreferrer"&gt;GitHub Release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.gg/DzTYqAZZmc" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/docs/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>opensource</category>
      <category>release</category>
    </item>
    <item>
      <title>LibreFang 2026.4.27 Released</title>
      <dc:creator>涼風羽月</dc:creator>
      <pubDate>Mon, 04 May 2026 13:14:41 +0000</pubDate>
      <link>https://dev.to/suzukazehaduki/librefang-2026427-released-1pki</link>
      <guid>https://dev.to/suzukazehaduki/librefang-2026427-released-1pki</guid>
      <description>&lt;h1&gt;
  
  
  LibreFang 2026.4.27 Released
&lt;/h1&gt;

&lt;p&gt;LibreFang v2026.4.27 ships the changes below. See the &lt;a href="https://github.com/librefang/librefang/blob/main/CHANGELOG.md#2026-4-27" rel="noopener noreferrer"&gt;full changelog&lt;/a&gt; for the complete list.&lt;/p&gt;

&lt;h3&gt;
  
  
  Added
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;TUI setup wizard now offers &lt;code&gt;microsoft&lt;/code&gt;, &lt;code&gt;zai&lt;/code&gt;, &lt;code&gt;zai_coding&lt;/code&gt;, &lt;code&gt;volcengine&lt;/code&gt;, &lt;code&gt;volcengine_coding&lt;/code&gt;, &lt;code&gt;byteplus&lt;/code&gt;, &lt;code&gt;byteplus_coding&lt;/code&gt; alongside the existing first-run options. The wizard's PROVIDERS list had drifted from &lt;code&gt;PROVIDER_REGISTRY&lt;/code&gt; and silently hid these from new installs; a unit test now pins these entries against future regressions. (@houko)&lt;/li&gt;
&lt;li&gt;Treat CLI logins as first-class default providers (#3061) (@houko)&lt;/li&gt;
&lt;li&gt;Grafana Tempo + business-level span instrumentation (#3064) (@houko)&lt;/li&gt;
&lt;li&gt;/new creates a new session instead of resetting the current one (#3071) (@neo-wanderer)&lt;/li&gt;
&lt;li&gt;Support image-generation models (registry modality field) (#3074) (@houko)&lt;/li&gt;
&lt;li&gt;Wire chat attachment uploads in ChatPage (#3075) (@houko)&lt;/li&gt;
&lt;li&gt;Add Novita AI as OpenAI-compatible provider (#3076) (@houko)&lt;/li&gt;
&lt;li&gt;Agent name prefix on outbound + Signal plain-text default (#3077) (@houko)&lt;/li&gt;
&lt;li&gt;SSE attach endpoint for multi-client session co-watching (#3078) (@houko)&lt;/li&gt;
&lt;li&gt;Add SearXNG self-hosted search provider (#3079) (@houko)&lt;/li&gt;
&lt;li&gt;Add AWS Bedrock provider with Bearer token auth (#3080) (@houko)&lt;/li&gt;
&lt;li&gt;AuditCheck framework + first 3 CLAUDE.md gotcha checks (#3082) (@houko)&lt;/li&gt;
&lt;li&gt;Add LlmFamily enum + LlmDriver::family() (#3083) (@houko)&lt;/li&gt;
&lt;li&gt;SSE attach hook for multi-client session co-watching (#3087) (@houko)&lt;/li&gt;
&lt;li&gt;Add ToolApprovalClass + tool_classifier (no behavior change yet) (#3092) (@houko)&lt;/li&gt;
&lt;li&gt;Session lifecycle event bus (additive, no subscribers yet) (#3093) (@houko)&lt;/li&gt;
&lt;li&gt;Support PDF and text/code file attachments end-to-end (#3094) (@houko)&lt;/li&gt;
&lt;li&gt;Trajectory export endpoint with privacy redaction (#3097) (@houko)&lt;/li&gt;
&lt;li&gt;Extend detect_embedding_provider with vLLM + LM Studio fallback (#3099) (@houko)&lt;/li&gt;
&lt;li&gt;Cron multi-destination delivery with failure isolation (#3102) (@houko)&lt;/li&gt;
&lt;li&gt;UI for cron multi-destination delivery targets (#3103) (@houko)&lt;/li&gt;
&lt;li&gt;Cache /config + reject pageno=0 + annotate truncation (#3108) (@houko)&lt;/li&gt;
&lt;li&gt;Re-read agent context.md per turn (#3115) (@houko)&lt;/li&gt;
&lt;li&gt;Central slash command registry (PR-1/3) (#3122) (@houko)&lt;/li&gt;
&lt;li&gt;Slash command registry — CLI/TUI surface (PR-2/3) (#3123) (@houko)&lt;/li&gt;
&lt;li&gt;Configurable max history messages (per-agent + global override) (#3125) (@neo-wanderer)&lt;/li&gt;
&lt;li&gt;System_and_3 prompt cache stamping for Anthropic (M1) (#3126) (@houko)&lt;/li&gt;
&lt;li&gt;ParallelSafety projection for batch tool dispatch (PR-1/6) (#3127) (@houko)&lt;/li&gt;
&lt;li&gt;Plan_batch + path-overlap planner for tool dispatch (PR-2/6) (#3129) (@houko)&lt;/li&gt;
&lt;li&gt;Model metadata lookup pipeline (PR-1/3, layers 1+2+5) (#3133) (@houko)&lt;/li&gt;
&lt;li&gt;Model metadata L3 cache + L4 Ollama probe (PR-2/3) (#3134) (@houko)&lt;/li&gt;
&lt;li&gt;Model metadata L4 Anthropic + OpenAI-compat probes (PR-2.5/3) (#3140) (@houko)&lt;/li&gt;
&lt;li&gt;KernelConfig.parallel_tools section (PR-3/6) (#3144) (@houko)&lt;/li&gt;
&lt;li&gt;Cron pre_script + silent_marker schema (PR-1/3) (#3145) (@houko)&lt;/li&gt;
&lt;li&gt;Cache_hit_ratio metric + trajectory field (M2/2) (#3149) (@houko)&lt;/li&gt;
&lt;li&gt;Agent detail drawer + filter pill i18n (#3159) (@houko)&lt;/li&gt;
&lt;li&gt;Right-side drawer pattern for inspect-detail surfaces (#3166) (@houko)&lt;/li&gt;
&lt;li&gt;Convert hand detail panel to drawer variant (#3168) (@houko)&lt;/li&gt;
&lt;li&gt;Roll out drawer/panel pattern across all page modals (#3175) (@houko)&lt;/li&gt;
&lt;li&gt;Add Jaeger as second trace backend alongside Tempo (#3176) (@houko)&lt;/li&gt;
&lt;li&gt;Granular MCP taint policy + dashboard tree editor (closes #3050) (#3193) (@houko)&lt;/li&gt;
&lt;li&gt;Jaeger trace backend + Loki/Alloy logs + CLI wiring (#3194) (@houko)&lt;/li&gt;
&lt;li&gt;Per-(agent, session) liveness tracking and session-scoped stop (#3195) (@houko)&lt;/li&gt;
&lt;li&gt;RBAC M2 — audit user/channel attribution + stable UserId (#3054) (#3196) (@houko)&lt;/li&gt;
&lt;li&gt;Hot-reload log_level via dashboard without daemon restart (#3200) (@houko)&lt;/li&gt;
&lt;li&gt;RBAC M4 — channel-native role mapping (Telegram/Discord/Slack) (#3054) (#3202) (@houko)&lt;/li&gt;
&lt;li&gt;RBAC M5 — audit query/export + per-user budget API (#3054) (#3203) (@houko)&lt;/li&gt;
&lt;li&gt;RBAC M3 — per-user tool policy + memory namespace ACL (#3054) (#3205) (@houko)&lt;/li&gt;
&lt;li&gt;RBAC M6 — dashboard (users, identity linking, simulator, CSV import + stubs) (#3054) (#3209) (@houko)&lt;/li&gt;
&lt;li&gt;Per-agent + global lane caps for trigger dispatch (#3210) (@neo-wanderer)&lt;/li&gt;
&lt;li&gt;Auto-download voice messages mirroring file path (#3212) (@neo-wanderer)&lt;/li&gt;
&lt;li&gt;Wip (#3213) (@houko)&lt;/li&gt;
&lt;li&gt;Hand agent runtime overrides with restart persistence (#3216) (@leszek3737)&lt;/li&gt;
&lt;li&gt;Deliver HealthCheckFailed to notification.alert_channels (#3218) (@neo-wanderer)&lt;/li&gt;
&lt;li&gt;Per-user budget write/clear endpoints + dashboard editor (#3224) (@houko)&lt;/li&gt;
&lt;li&gt;Activate AuditPage now that M5 audit endpoints shipped (#3225) (@houko)&lt;/li&gt;
&lt;li&gt;Per-action retention policy with chain-anchor trim (#3227) (@houko)&lt;/li&gt;
&lt;li&gt;RBAC effective-permissions snapshot — wire simulator (#3054) (#3228) (@houko)&lt;/li&gt;
&lt;li&gt;RBAC M3 — per-user policy GET/PUT + dashboard editor (#3229) (@houko)&lt;/li&gt;
&lt;li&gt;RBAC — single-decision authz/check endpoint (#3054) (#3231) (@houko)&lt;/li&gt;
&lt;li&gt;User-list summary flags + custom channel rule editor (#3229 follow-up) (#3232) (@houko)&lt;/li&gt;
&lt;li&gt;Owner-only API key rotation with live session kill (#3233) (@houko)&lt;/li&gt;
&lt;li&gt;External mount points in agent.toml (#3230) (#3234) (@houko)&lt;/li&gt;
&lt;li&gt;Channel field as dynamic dropdown with custom fallback (#3248) (@houko)&lt;/li&gt;
&lt;li&gt;URL-synced filters, JSON export, row detail modal (#3252) (@houko)&lt;/li&gt;
&lt;li&gt;Move filters into right-docked drawer (#3254) (@houko)&lt;/li&gt;
&lt;li&gt;BeforePromptBuild hook can contribute labeled DynamicSection injected into the system prompt, with 8KiB per-section / 32KiB total caps (closes #3326) (#3358) (@houko)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fixed
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Reconnect WhatsApp gateway after transient disconnects (#21) (@houko)&lt;/li&gt;
&lt;li&gt;Render connection screen via custom URI scheme (closes #3052) (#3056) (@houko)&lt;/li&gt;
&lt;li&gt;Create log dir + open log before stdout redirect (#3057) (@houko)&lt;/li&gt;
&lt;li&gt;Surface CLI logins as their own providers, not API-provider fallbacks (#3059) (@houko)&lt;/li&gt;
&lt;li&gt;Pre-create logs dir in entrypoint (defense for #3058) (#3060) (@houko)&lt;/li&gt;
&lt;li&gt;Bundle compose stack in-binary, add OTLP collector (#3062) (@houko)&lt;/li&gt;
&lt;li&gt;Create HTTP trace spans at INFO so OTel exporter sees them (#3063) (@houko)&lt;/li&gt;
&lt;li&gt;Move env_filter to fmt layer so OTel sees INFO spans (#3065) (@houko)&lt;/li&gt;
&lt;li&gt;Drop ingester/compactor from Tempo config (#3067) (@houko)&lt;/li&gt;
&lt;li&gt;Boot-time TOML drift detection now reaches hand agents (#3068) (@neo-wanderer)&lt;/li&gt;
&lt;li&gt;Reprobe local providers every 60s + refresh on test (#3069) (@houko)&lt;/li&gt;
&lt;li&gt;Add missing files to src to fix librefang-cli build (#3073) (@FrantaNautilus)&lt;/li&gt;
&lt;li&gt;Honor session_mode=new with per-fire isolated sessions (#3081) (@houko)&lt;/li&gt;
&lt;li&gt;Copilot streaming empty tool calls + Claude assistant strip (#3084) (@houko)&lt;/li&gt;
&lt;li&gt;Gemini array-items default + first-message-must-be-user (#3085) (@houko)&lt;/li&gt;
&lt;li&gt;Safe UTF-8 boundary in three remaining truncation sites (#3086) (@houko)&lt;/li&gt;
&lt;li&gt;PowerShell sandbox bypass + agent-config persistence + WS race + Revolt self-host (#3088) (@houko)&lt;/li&gt;
&lt;li&gt;Cron preservation across hand reactivation + telegram startup timeout + token estimation includes ToolUse (#3090) (@houko)&lt;/li&gt;
&lt;li&gt;Capture text from intermediate tool_use iterations (#3091) (@houko)&lt;/li&gt;
&lt;li&gt;Percent-decode WS auth token to preserve base64 characters (#3095) (@houko)&lt;/li&gt;
&lt;li&gt;Skip heartbeat timeout for agents in their idle grace window (#3096) (@houko)&lt;/li&gt;
&lt;li&gt;Handle BrokenPipe gracefully in doctor --json (#3100) (@houko)&lt;/li&gt;
&lt;li&gt;UTF-8-safe error truncation + 502/504 retry + response classify tests (#3104) (@houko)&lt;/li&gt;
&lt;li&gt;Cap accumulated_text + document streaming non-redelivery contract (#3106) (@houko)&lt;/li&gt;
&lt;li&gt;Cron dedupe + next_run + token_length annotation (#3109) (@houko)&lt;/li&gt;
&lt;li&gt;Sticky has_processed_message replaces time-based grace (#3111) (@houko)&lt;/li&gt;
&lt;li&gt;Use 127.0.0.1 instead of localhost for local LLM URLs (#3112) (@houko)&lt;/li&gt;
&lt;li&gt;Pass agents_dir to hand route candidate scan to silence WARN flood (#3113) (@houko)&lt;/li&gt;
&lt;li&gt;Close non-loopback auth bypass when api_key is empty (#3114) (@houko)&lt;/li&gt;
&lt;li&gt;Downgrade pure-normalization to debug, keep WARN for real repair (#3117) (@houko)&lt;/li&gt;
&lt;li&gt;Use "default" provider/model in custom-agent template (#3121) (@houko)&lt;/li&gt;
&lt;li&gt;Forward api_key as Bearer in local provider probe (#3128) (@houko)&lt;/li&gt;
&lt;li&gt;Degrade Memory page gracefully when proactive memory is disabled (#3131) (@houko)&lt;/li&gt;
&lt;li&gt;Allow named workspaces in read-side path resolution (#3137) (@neo-wanderer)&lt;/li&gt;
&lt;li&gt;Unbreak cron_delivery tests + move guards to input validation (#3139) (@houko)&lt;/li&gt;
&lt;li&gt;Unbreak local provider config in GUI (#3141) (@houko)&lt;/li&gt;
&lt;li&gt;Re-render hand [[settings]] tail after boot-time TOML drift (#3142) (@neo-wanderer)&lt;/li&gt;
&lt;li&gt;Relax probe timeout for remote local-provider URLs (#3146) (@houko)&lt;/li&gt;
&lt;li&gt;Preserve tool annotations for parallel safety classification (PR-6/6) (#3147) (@houko)&lt;/li&gt;
&lt;li&gt;Include SearXNG in web_search_available check (#3152) (@houko)&lt;/li&gt;
&lt;li&gt;Drop redundant runtime SSRF check in deliver_webhook (#3155) (@houko)&lt;/li&gt;
&lt;li&gt;Add .desktop entry and install icon (#3157) (@FrantaNautilus)&lt;/li&gt;
&lt;li&gt;Seed [[settings]] defaults into hand instance config on activation (#3160) (@houko)&lt;/li&gt;
&lt;li&gt;Skip empty Blocks when stamping prompt cache markers (review fix for #3126) (#3161) (@houko)&lt;/li&gt;
&lt;li&gt;Expose vLLM + LM Studio in embedding provider dropdown (refs #3138) (#3162) (@houko)&lt;/li&gt;
&lt;li&gt;Re-render Reference Knowledge + Your Team tails after TOML drift (#3164) (@houko)&lt;/li&gt;
&lt;li&gt;Provide .desktop entry and icon for librefang-desktop (#3156) (#3165) (@houko)&lt;/li&gt;
&lt;li&gt;Regenerate config_schema golden after parallel_tools addition (#3167) (@houko)&lt;/li&gt;
&lt;li&gt;Stop drawer scroll chaining into the page (#3169) (@houko)&lt;/li&gt;
&lt;li&gt;Observability auto-start opt-in + home_dir isolation + RAII cleanup (#3170) (@houko)&lt;/li&gt;
&lt;li&gt;Surface provider model list above the fold (#3179) (@houko)&lt;/li&gt;
&lt;li&gt;Wire OS keyring (libsecret/Keychain/Credential Manager) (#3180) (@houko)&lt;/li&gt;
&lt;li&gt;Wrap with wrapGAppsHook3 so tray icon resolves on NixOS (#3197) (@houko)&lt;/li&gt;
&lt;li&gt;Probe OpenAI fallback for ollama-slot servers, hide non-discovered local models (#3204) (@houko)&lt;/li&gt;
&lt;li&gt;Correct max_level_hint test assertions (#3206) (@houko)&lt;/li&gt;
&lt;li&gt;Correct max_level_hint test assertions (#3207) (@houko)&lt;/li&gt;
&lt;li&gt;Set sender_user_id metadata so RBAC works in groups (#3215) (@neo-wanderer)&lt;/li&gt;
&lt;li&gt;Serialize channel config writes via toml_edit + lock (#3183) (#3223) (@houko)&lt;/li&gt;
&lt;li&gt;Attribute loopback callers to user_api_keys when token provided (#3236) (@houko)&lt;/li&gt;
&lt;li&gt;Invalidate effective-permissions on policy/budget mutations (#3228 follow-up) (#3237) (@houko)&lt;/li&gt;
&lt;li&gt;Prefix sender_chat ids so they can't collide with user namespace (#3215 follow-up) (#3238) (@houko)&lt;/li&gt;
&lt;li&gt;RBAC M3 follow-up — memory ACL fail-closed for anonymous callers (#3239) (@houko)&lt;/li&gt;
&lt;li&gt;Include prev_hash so verifiers can replay the chain (#3203 follow-up) (#3240) (@houko)&lt;/li&gt;
&lt;li&gt;RBAC M4 follow-up — role_cache reload + Telegram DM owner-escalation (#3241) (@houko)&lt;/li&gt;
&lt;li&gt;Mark scope as user_policy_only to match implementation (#3231 follow-up) (#3242) (@houko)&lt;/li&gt;
&lt;li&gt;Attribute admin actions to caller + log old-&amp;gt;new diffs (#21 follow-up) (#3245) (@houko)&lt;/li&gt;
&lt;li&gt;Harden CSV import + flag identity-link risk (#3209 follow-up) (#3246) (@houko)&lt;/li&gt;
&lt;li&gt;RBAC M3 follow-up — namespace traversal + case-insensitive deny + memory audit emit (#3205) (#3249) (@houko)&lt;/li&gt;
&lt;li&gt;Autonomous-loop tool calls bypass user gate (closes #3243) (#3251) (@houko)&lt;/li&gt;
&lt;li&gt;Channel dropdown uses /api/channels for full 44-adapter list (#3253) (@houko)&lt;/li&gt;
&lt;li&gt;Enforce deterministic ordering for LLM-bound MCP server / skill registries to stabilize provider prompt cache (closes #3298) (#3325) (@houko)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Changed
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Derive JSON Schema from KernelConfig via schemars (#3055) (@houko)&lt;/li&gt;
&lt;li&gt;Extract SessionStore trait alongside SQLite substrate (#3089) (@houko)&lt;/li&gt;
&lt;li&gt;Make bridge helpers crate-private (#3181) (@houko)&lt;/li&gt;
&lt;li&gt;Remove unused public helpers (#3182) (@houko)&lt;/li&gt;
&lt;li&gt;Tighten visibility of internal request structs (#3184) (@houko)&lt;/li&gt;
&lt;li&gt;Merge duplicate type definitions across crates (#3185) (@houko)&lt;/li&gt;
&lt;li&gt;Rename Action enums to disambiguate from domain types (#3188) (@houko)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BREAKING&lt;/strong&gt;: Split coding-provider API keys onto dedicated env vars — &lt;code&gt;byteplus_coding&lt;/code&gt; now reads &lt;code&gt;BYTEPLUS_CODING_API_KEY&lt;/code&gt; (was &lt;code&gt;BYTEPLUS_API_KEY&lt;/code&gt;), &lt;code&gt;volcengine_coding&lt;/code&gt; reads &lt;code&gt;VOLCENGINE_CODING_API_KEY&lt;/code&gt; (was &lt;code&gt;VOLCENGINE_API_KEY&lt;/code&gt;), &lt;code&gt;zai_coding&lt;/code&gt; reads &lt;code&gt;ZAI_CODING_API_KEY&lt;/code&gt; (was &lt;code&gt;ZHIPU_API_KEY&lt;/code&gt;), &lt;code&gt;zhipu_coding&lt;/code&gt; reads &lt;code&gt;ZHIPU_CODING_API_KEY&lt;/code&gt; (was &lt;code&gt;ZHIPU_API_KEY&lt;/code&gt;). Per-token siblings (&lt;code&gt;byteplus&lt;/code&gt;, &lt;code&gt;volcengine&lt;/code&gt;, &lt;code&gt;zai&lt;/code&gt;, &lt;code&gt;zhipu&lt;/code&gt;) keep their original env vars. Set the new env var if you use any &lt;code&gt;_coding&lt;/code&gt; provider. (#3279) (@houko)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BREAKING&lt;/strong&gt;: Register &lt;code&gt;microsoft&lt;/code&gt; (GitHub Models / Azure AI Inference) as an explicit driver-registry entry with its own &lt;code&gt;GITHUB_MODELS_TOKEN&lt;/code&gt; env var, distinct from &lt;code&gt;github-copilot&lt;/code&gt;'s &lt;code&gt;GITHUB_TOKEN&lt;/code&gt;. Same PAT works for both, but the env vars are now separate so configuring one product no longer auto-activates the other in the model picker. Set &lt;code&gt;GITHUB_MODELS_TOKEN&lt;/code&gt; if you use the &lt;code&gt;microsoft&lt;/code&gt; provider. (#3281) (@houko)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BREAKING&lt;/strong&gt;: Split &lt;code&gt;zai&lt;/code&gt; from sharing &lt;code&gt;ZHIPU_API_KEY&lt;/code&gt; with &lt;code&gt;zhipu&lt;/code&gt; — &lt;code&gt;zai&lt;/code&gt; (api.z.ai) now reads &lt;code&gt;ZAI_API_KEY&lt;/code&gt; while &lt;code&gt;zhipu&lt;/code&gt; (open.bigmodel.cn) keeps &lt;code&gt;ZHIPU_API_KEY&lt;/code&gt;. Same Zhipu credential value works for both, but the env vars are now separate so configuring one no longer auto-activates the other. Set &lt;code&gt;ZAI_API_KEY&lt;/code&gt; if you use the &lt;code&gt;zai&lt;/code&gt; provider. (#3285) (@houko)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Documentation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Add tool_timeouts configuration documentation (#3098) (@leszek3737)&lt;/li&gt;
&lt;li&gt;Backfill reference for cron / config / providers / channels / api / observability (#3189) (@houko)&lt;/li&gt;
&lt;li&gt;Clarify worktree continuation drives to PR (#3190) (@houko)&lt;/li&gt;
&lt;li&gt;Align left nav with file tree (#3199) (@houko)&lt;/li&gt;
&lt;li&gt;Backfill source-vs-doc gaps (providers / channels — config / API / CLI to follow) (#3201) (@houko)&lt;/li&gt;
&lt;li&gt;Drop HTML comment that broke Deploy Docs on main (#3208) (@houko)&lt;/li&gt;
&lt;li&gt;Align Chinese translations with English source (#3220) (@houko)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Maintenance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Rename normalize_schema_recursive + warn on items fallback (#3105) (@houko)&lt;/li&gt;
&lt;li&gt;Document apply_agent_prefix idempotency caveats (#3107) (@houko)&lt;/li&gt;
&lt;li&gt;Timing-side-channel mitigation in percent_decode (#3110) (@houko)&lt;/li&gt;
&lt;li&gt;Align localhost test expectations with #3112 default change (#3118) (@houko)&lt;/li&gt;
&lt;li&gt;Ignore local .plans/ working notes directory (#3130) (@houko)&lt;/li&gt;
&lt;li&gt;Sync librefang-types tracing dep into Cargo.lock (#3132) (@houko)&lt;/li&gt;
&lt;li&gt;Unbreak main — cargo fmt for model_metadata.rs (#3150) (@houko)&lt;/li&gt;
&lt;li&gt;Unbreak main — fix clippy manual_pattern_char_comparison (#3153) (@houko)&lt;/li&gt;
&lt;li&gt;Hand-level skills propagation regression for #3135 (#3163) (@houko)&lt;/li&gt;
&lt;li&gt;Pull librefang-api into selective lane on librefang-types changes (#3171) (@houko)&lt;/li&gt;
&lt;li&gt;Drop LEGACY_TEAM_TAIL_MARKER fallback (#3177) (@houko)&lt;/li&gt;
&lt;li&gt;Install libdbus-1-dev for OpenAPI Drift job (#3186) (@houko)&lt;/li&gt;
&lt;li&gt;Remove unused dependencies across workspace (#3187) (@houko)&lt;/li&gt;
&lt;li&gt;Pin push_notification routing for health_check_failed (#3222) (@houko)&lt;/li&gt;
&lt;li&gt;Unbreak typecheck on sessions-stream test (#3235) (@houko)&lt;/li&gt;
&lt;li&gt;Unbreak typecheck on UserBudgetPage + duplicate type export (#3244) (@houko)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Other
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Unbreak main — use local user_api_keys snapshot (#3250) (@houko)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CHANGELOG.md#2026-4-27" rel="noopener noreferrer"&gt;Full Changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/releases/tag/v2026.4.27" rel="noopener noreferrer"&gt;GitHub Release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.gg/DzTYqAZZmc" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>opensource</category>
      <category>release</category>
    </item>
    <item>
      <title>We just launched the new LibreFang website</title>
      <dc:creator>涼風羽月</dc:creator>
      <pubDate>Wed, 25 Mar 2026 08:13:52 +0000</pubDate>
      <link>https://dev.to/suzukazehaduki/we-just-launched-the-new-librefang-website-342b</link>
      <guid>https://dev.to/suzukazehaduki/we-just-launched-the-new-librefang-website-342b</guid>
      <description>&lt;p&gt;We just shipped the new &lt;a href="https://librefang.ai" rel="noopener noreferrer"&gt;librefang.ai&lt;/a&gt; — a complete redesign of the official website for &lt;a href="https://github.com/librefang/librefang" rel="noopener noreferrer"&gt;LibreFang&lt;/a&gt;, our open-source Agent Operating System built in Rust.&lt;/p&gt;

&lt;p&gt;If you haven't heard of LibreFang: it's a production-grade runtime for autonomous AI agents. Single binary, 180ms cold start, 40MB memory. 15 built-in autonomous capability units ("Hands"), 44 channel adapters, 50 LLM providers. It runs agents 24/7 on a schedule — no user prompts needed.&lt;/p&gt;

&lt;p&gt;Here's what we built for the new site.&lt;/p&gt;

&lt;h2&gt;
  
  
  7 languages, day one
&lt;/h2&gt;

&lt;p&gt;The site ships with full translations in English, 简体中文, 繁體中文, 日本語, 한국어, Deutsch, and Español. Not machine-translated placeholders — every string was reviewed for grammar and natural phrasing.&lt;/p&gt;

&lt;p&gt;Language detection is automatic based on your browser, and you can switch anytime from the nav.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture visualized
&lt;/h2&gt;

&lt;p&gt;The homepage walks through LibreFang's five-layer architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Channels&lt;/strong&gt; — 44 adapters: Telegram, Slack, Discord, WhatsApp, Signal, Matrix, Teams, and more&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hands&lt;/strong&gt; — 15 autonomous units, each with its own model, tools, and workflow&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kernel&lt;/strong&gt; — agent lifecycle, workflow orchestration, budget control, scheduling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtime&lt;/strong&gt; — Tokio async, WASM sandbox, Merkle audit chain, SSRF protection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardware&lt;/strong&gt; — runs everywhere: laptop, VPS, Raspberry Pi, bare metal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each layer is interactive — click to explore the components inside.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance benchmarks, not marketing claims
&lt;/h2&gt;

&lt;p&gt;We put a comparison table right on the homepage:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Others&lt;/th&gt;
&lt;th&gt;LibreFang&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cold Start&lt;/td&gt;
&lt;td&gt;2.5 ~ 4s&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;180ms&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Idle Memory&lt;/td&gt;
&lt;td&gt;180 ~ 250MB&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;40MB&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Binary Size&lt;/td&gt;
&lt;td&gt;100 ~ 200MB&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;32MB&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security Layers&lt;/td&gt;
&lt;td&gt;2 ~ 3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;16&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Channel Adapters&lt;/td&gt;
&lt;td&gt;8 ~ 15&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;44&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Built-in Hands&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;15&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Rust, not TypeScript. Production, not prototype.&lt;/p&gt;

&lt;h2&gt;
  
  
  One command install with OS detection
&lt;/h2&gt;

&lt;p&gt;The install section detects your OS automatically and shows the right command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;macOS / Linux:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://librefang.ai/install | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Windows (PowerShell):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://librefang.ai/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tabs let you switch between macOS, Windows, and Linux manually too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Downloads &amp;amp; changelog
&lt;/h2&gt;

&lt;p&gt;The downloads section pulls release data in real-time through our own API proxy. Desktop apps, CLI binaries, everything categorized by platform.&lt;/p&gt;

&lt;p&gt;The changelog page shows a full timeline of releases with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Category filters (features, fixes, etc.)&lt;/li&gt;
&lt;li&gt;Download counts per asset&lt;/li&gt;
&lt;li&gt;Auto-linked &lt;code&gt;#issue&lt;/code&gt; references and &lt;code&gt;@username&lt;/code&gt; mentions in release notes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tech stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;React + TypeScript + Vite&lt;/li&gt;
&lt;li&gt;Tailwind CSS for styling&lt;/li&gt;
&lt;li&gt;Framer Motion for animations&lt;/li&gt;
&lt;li&gt;TanStack Query for data fetching&lt;/li&gt;
&lt;li&gt;Cloudflare Workers for the GitHub stats proxy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No heavy frameworks. No CMS. Just a fast SPA that gets out of your way.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;LibreFang itself is moving fast — WhatsApp bidirectional routing just landed, prompt versioning and A/B experiments are in, and we're working toward the v1.0 milestone.&lt;/p&gt;

&lt;p&gt;The website will keep evolving with the project. Docs are at &lt;a href="https://docs.librefang.ai" rel="noopener noreferrer"&gt;docs.librefang.ai&lt;/a&gt;, and the deploy page at &lt;a href="https://deploy.librefang.ai" rel="noopener noreferrer"&gt;deploy.librefang.ai&lt;/a&gt; has one-click options for Fly.io and more.&lt;/p&gt;




&lt;p&gt;If this sounds interesting, check out the repo: &lt;strong&gt;&lt;a href="https://github.com/librefang/librefang" rel="noopener noreferrer"&gt;github.com/librefang/librefang&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We're open source, merge-first PR policy, and all contributions are welcome. Drop a ⭐ if you like what you see.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>rust</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>LibreFang 2026.3.22 Released</title>
      <dc:creator>涼風羽月</dc:creator>
      <pubDate>Sat, 21 Mar 2026 16:32:36 +0000</pubDate>
      <link>https://dev.to/suzukazehaduki/librefang-2026322-released-gh1</link>
      <guid>https://dev.to/suzukazehaduki/librefang-2026322-released-gh1</guid>
      <description>&lt;h1&gt;
  
  
  LibreFang 2026.3.22 Released
&lt;/h1&gt;

&lt;p&gt;We're thrilled to announce &lt;strong&gt;LibreFang v2026.3.22&lt;/strong&gt; — a massive release with expanded provider support, powerful new capabilities, and a completely overhauled dashboard. This release marks our evolution to Calendar Versioning and brings 50+ improvements across the entire platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's New
&lt;/h2&gt;

&lt;h3&gt;
  
  
  📊 Major Architecture Update: Calendar Versioning
&lt;/h3&gt;

&lt;p&gt;We've switched to &lt;strong&gt;CalVer (YYYY.M.DDHH)&lt;/strong&gt; for more transparent and predictable release cycles. This change makes it easier to track what's fresh and plan your upgrades accordingly.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔌 Expanded Provider Ecosystem
&lt;/h3&gt;

&lt;p&gt;Connect to virtually any LLM provider now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;New providers&lt;/strong&gt;: DeepInfra, Azure OpenAI, Qwen International/US endpoints&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT device auth flow&lt;/strong&gt; for seamless authentication&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom model support&lt;/strong&gt; with proper alias registration and provider routing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embedding dimensions&lt;/strong&gt; configurable per agent — fine-tune costs and quality&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🤖 Agent &amp;amp; Workflow Superpowers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pipeline runner agents&lt;/strong&gt; let you orchestrate complex multi-step workflows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IMAP email reader script&lt;/strong&gt; for email-triggered automation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WorkflowTemplate registry&lt;/strong&gt; (in-memory) for reusable workflow definitions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-agent plugin scoping&lt;/strong&gt; with granular &lt;code&gt;allowed_plugins&lt;/code&gt; config&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graceful context reset&lt;/strong&gt; via &lt;code&gt;/reboot&lt;/code&gt; slash command&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚙️ Configuration &amp;amp; Persistence
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Global workspace directory&lt;/strong&gt; for cross-session state persistence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom log directory config&lt;/strong&gt; — store logs anywhere you want&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Config validation with tolerant mode&lt;/strong&gt; — cleaner error messages, safer defaults&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arbitrary config keys in skills&lt;/strong&gt; — unlimited flexibility for custom skill parameters&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configurable session reset prompt&lt;/strong&gt; — personalize context resets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge query improvements&lt;/strong&gt; — JOIN matches entities by name or ID, indexed by agent&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  💬 Chat Platform Enhancements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Slack&lt;/strong&gt;: Unfurl links option, force-flat replies config for cleaner threads&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord&lt;/strong&gt;: Configurable mention patterns for smarter mentions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HAND.toml format&lt;/strong&gt; now accepts flexible [hand] wrappers for better compatibility&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🚀 Performance &amp;amp; Stability
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Infinite retry guard&lt;/strong&gt; — prevents runaway loops&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming safety&lt;/strong&gt; — prevent interrupts during multi-tool sequences&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory caching&lt;/strong&gt; — workspace and skill metadata cached to reduce per-message overhead&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimized KV operations&lt;/strong&gt; — faster, more efficient state management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migration tools&lt;/strong&gt; — refresh param for cache bypassing, sparse chart data handling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved polling detection&lt;/strong&gt; — replaced fragile heuristics with robust LoopGuard&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎨 Dashboard &amp;amp; UX
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Complete React UI/UX overhaul&lt;/strong&gt; — modern, responsive, beautiful&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Japanese localization&lt;/strong&gt; + comprehensive i18n coverage for goals/analytics&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SVG branding banners&lt;/strong&gt; — fresh promotional materials&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fixed navigation&lt;/strong&gt; — better link structure and mobile indicators&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dev server integration&lt;/strong&gt; — &lt;code&gt;just api&lt;/code&gt; now starts dashboard + API together&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🛠️ Developer Experience
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rustfmt.toml&lt;/strong&gt; for consistent code formatting across the project&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Version &amp;amp; git hash in startup logs&lt;/strong&gt; — instant transparency on what's running&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop app &lt;code&gt;.env&lt;/code&gt; support&lt;/strong&gt; — easier local configuration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Homebrew Cask CI sync&lt;/strong&gt; — streamlined distribution&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved Qwen Code CLI detection&lt;/strong&gt; — smoother integration&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📚 Documentation
&lt;/h3&gt;

&lt;p&gt;Comprehensive review — fixed errors, updated all numbers, filled missing gaps.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔧 Infrastructure &amp;amp; CI/CD
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Stats Worker&lt;/strong&gt; integration for better analytics&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-update PR branches&lt;/strong&gt; on main push&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker Compose fixes&lt;/strong&gt; for admin interface port binding&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP server names&lt;/strong&gt; now allow hyphens&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Release.sh macOS compatibility&lt;/strong&gt; — no more grep headaches&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare Pages SPA fallback&lt;/strong&gt; — corrected _redirects format&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PWA manifest &amp;amp; OG image&lt;/strong&gt; fixes for better sharing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install / Upgrade
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Binary&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://get.librefang.ai | sh

&lt;span class="c"&gt;# Rust SDK&lt;/span&gt;
cargo add librefang

&lt;span class="c"&gt;# JavaScript SDK&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; @librefang/sdk

&lt;span class="c"&gt;# Python SDK&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;librefang-sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;Full Changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/releases/tag/v2026.3.2201" rel="noopener noreferrer"&gt;GitHub Release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.gg/DzTYqAZZmc" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>opensource</category>
      <category>release</category>
    </item>
    <item>
      <title>LibreFang 0.7.0 Released</title>
      <dc:creator>涼風羽月</dc:creator>
      <pubDate>Sat, 21 Mar 2026 16:32:35 +0000</pubDate>
      <link>https://dev.to/suzukazehaduki/librefang-070-released-1aif</link>
      <guid>https://dev.to/suzukazehaduki/librefang-070-released-1aif</guid>
      <description>&lt;h1&gt;
  
  
  LibreFang 0.7.0 Released
&lt;/h1&gt;

&lt;p&gt;We're thrilled to announce &lt;strong&gt;LibreFang v0.7.0&lt;/strong&gt;—a release focused on smarter LLM routing, expanded provider support, and migration tooling for OpenFang users.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤖 Core AI Improvements
&lt;/h2&gt;

&lt;p&gt;The centerpiece of this release is &lt;strong&gt;LLM intent routing&lt;/strong&gt; with a unified registry, giving you more control over how agents route requests across providers. Streaming has been rock-solid, and we've squashed internal LLM call bugs that were stripping provider prefixes unexpectedly.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 Provider Ecosystem Expansion
&lt;/h2&gt;

&lt;p&gt;You can now detect and integrate with &lt;strong&gt;Gemini CLI, Codex CLI, and Aider providers&lt;/strong&gt; through unified CLI detection. We've also added proper support for &lt;strong&gt;Qwen Code CLI&lt;/strong&gt; across the setup wizard and test connections. If you're running OpenFang, our new &lt;code&gt;migrate --from openfang&lt;/code&gt; command makes switching over painless—we've hardened the migration inputs and completed the migration across the init wizard, API, and dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔧 Operations &amp;amp; Configuration
&lt;/h2&gt;

&lt;p&gt;This release brings finer-grained control over your deployment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configurable &lt;strong&gt;CORS policies&lt;/strong&gt; for your environment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Channel rate limits&lt;/strong&gt; to prevent runaway resource usage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit pruning&lt;/strong&gt; to keep log storage under control&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Media gates&lt;/strong&gt; for content filtering&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📖 Documentation
&lt;/h2&gt;

&lt;p&gt;We've reorganized docs as a Next.js deployment directory for better maintainability, added a comprehensive &lt;strong&gt;comparison page&lt;/strong&gt; to help you understand LibreFang's positioning, and cleaned up remaining artifacts.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Under the Hood
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fixed npm/PyPI publish workflows (now running via Shell)&lt;/li&gt;
&lt;li&gt;Synced upstream improvements&lt;/li&gt;
&lt;li&gt;Hardened OpenClaw migration inputs&lt;/li&gt;
&lt;li&gt;Various streaming and registry fixes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install / Upgrade
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Binary&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://get.librefang.ai | sh

&lt;span class="c"&gt;# Rust SDK&lt;/span&gt;
cargo add librefang

&lt;span class="c"&gt;# JavaScript SDK&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; @librefang/sdk

&lt;span class="c"&gt;# Python SDK&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;librefang-sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;Full Changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/releases/tag/v0.7.0-20260321" rel="noopener noreferrer"&gt;GitHub Release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.gg/DzTYqAZZmc" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>opensource</category>
      <category>release</category>
    </item>
    <item>
      <title>LibreFang 2026.3.21 Released</title>
      <dc:creator>涼風羽月</dc:creator>
      <pubDate>Sat, 21 Mar 2026 14:56:50 +0000</pubDate>
      <link>https://dev.to/suzukazehaduki/librefang-2026321-released-4p58</link>
      <guid>https://dev.to/suzukazehaduki/librefang-2026321-released-4p58</guid>
      <description>&lt;h1&gt;
  
  
  LibreFang 2026.3.21 Released
&lt;/h1&gt;

&lt;p&gt;We're thrilled to announce &lt;strong&gt;LibreFang v2026.3.21&lt;/strong&gt; — a major release packed with new provider support, a completely redesigned dashboard, granular configuration control, and 30+ stability fixes.&lt;/p&gt;

&lt;p&gt;This release also marks our switch to &lt;strong&gt;CalVer&lt;/strong&gt; (YYYY.M.DDHH) for clearer versioning. Here's what's new:&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Expanded LLM Provider Ecosystem
&lt;/h2&gt;

&lt;p&gt;Connect to more models than ever before:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Azure OpenAI&lt;/strong&gt; — Enterprise deployment ready&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepInfra&lt;/strong&gt; — Access a wide range of open-source models&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen International &amp;amp; US&lt;/strong&gt; — Regional endpoints for lower latency&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT Device Auth&lt;/strong&gt; — New authentication flow for ChatGPT integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All providers now include enriched error handling with provider/model context baked into &lt;code&gt;ClassifiedError&lt;/code&gt; for faster debugging.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚙️ Configuration &amp;amp; Control You Demanded
&lt;/h2&gt;

&lt;p&gt;This release delivers fine-grained control over agent behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Config Validation with Tolerant Mode&lt;/strong&gt; — Validate configs before startup with graceful fallback options&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-Agent Plugin Scoping&lt;/strong&gt; — Control which plugins each agent can access via &lt;code&gt;allowed_plugins&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configurable Embedding Dimensions&lt;/strong&gt; — Tune embedding models for your use case&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FTS-Only Memory Indexing&lt;/strong&gt; — Skip embeddings if you only need full-text search&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Log Directory&lt;/strong&gt; — Point logs wherever you want&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configurable Session Reset Prompt&lt;/strong&gt; — Customize agent context reset behavior&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arbitrary Config Keys in Skills&lt;/strong&gt; — Add custom metadata to skill entries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global Workspace Directory&lt;/strong&gt; — Share state across sessions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎨 Dashboard &amp;amp; UI Overhaul
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;comprehensive React redesign&lt;/strong&gt; makes agent management delightful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New layout and navigation flow&lt;/li&gt;
&lt;li&gt;Better mobile responsiveness&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Japanese localization&lt;/strong&gt; support&lt;/li&gt;
&lt;li&gt;Expanded i18n coverage for goals and analytics&lt;/li&gt;
&lt;li&gt;Fixed sidebar navigation and broken links&lt;/li&gt;
&lt;li&gt;Corrected provider/model counts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plus a fresh promotional banner! 🎉&lt;/p&gt;

&lt;h2&gt;
  
  
  🤖 Agent Workflows &amp;amp; Automation
&lt;/h2&gt;

&lt;p&gt;Build more sophisticated agents with new tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pipeline Runner Agents&lt;/strong&gt; — Execute multi-step workflows with built-in IMAP email reader for email automation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WorkflowTemplate Types&lt;/strong&gt; — In-memory registry for reusable workflow definitions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;/reboot Slash Command&lt;/strong&gt; — Graceful context reset without restarting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow Editor Improvements&lt;/strong&gt; — Better handling of nested mode/error_mode definitions from the UI&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔌 Slack &amp;amp; Discord Integration Enhancements
&lt;/h2&gt;

&lt;p&gt;More control over how agents interact with chat platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;unfurl_links&lt;/code&gt; for Slack — Disable link previews when needed&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;force_flat_replies&lt;/code&gt; for Slack — Keep messages in flat mode&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mention_patterns&lt;/code&gt; for Discord — Define custom mention behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🐛 Stability &amp;amp; Performance Improvements
&lt;/h2&gt;

&lt;p&gt;30+ bug fixes and optimizations under the hood:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Streaming Reliability&lt;/strong&gt; — Prevent interrupts during multi-tool sequences&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infinite Retry Guard&lt;/strong&gt; — Dead branch cleanup and body size limits&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LoopGuard Improvements&lt;/strong&gt; — Replaced fragile heuristics with robust poll detection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Queries&lt;/strong&gt; — Fixed JOINs to match entities by name/ID with proper agent scoping&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Stats&lt;/strong&gt; — Resolved zero values and optimized KV operations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP Improvements&lt;/strong&gt; — Now supports hyphens in server names&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop App&lt;/strong&gt; — Properly load .env files at startup&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker Compose&lt;/strong&gt; — Fixed admin interface port binding&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Windows Stability&lt;/strong&gt; — Fixed browser hand connection issues&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skill Resolution&lt;/strong&gt; — Fixed file path resolution for installed skill execution&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache Performance&lt;/strong&gt; — Metadata caching reduces per-message overhead&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session History&lt;/strong&gt; — Replace processed images with text placeholders&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📚 Documentation &amp;amp; Infrastructure
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Comprehensive docs review with updated numbers and new sections&lt;/li&gt;
&lt;li&gt;Auto-updating PR branches on main push&lt;/li&gt;
&lt;li&gt;GitHub Stats Worker in deploy workflow&lt;/li&gt;
&lt;li&gt;Improved Homebrew Cask Formula generation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install / Upgrade
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Binary&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://get.librefang.ai | sh

&lt;span class="c"&gt;# Rust SDK&lt;/span&gt;
cargo add librefang

&lt;span class="c"&gt;# JavaScript SDK&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; @librefang/sdk

&lt;span class="c"&gt;# Python SDK&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;librefang-sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;Full Changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/releases/tag/v2026.3.2123-rc1" rel="noopener noreferrer"&gt;GitHub Release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.gg/DzTYqAZZmc" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>opensource</category>
      <category>release</category>
    </item>
    <item>
      <title>LibreFang 0.6.8 Released</title>
      <dc:creator>涼風羽月</dc:creator>
      <pubDate>Fri, 20 Mar 2026 09:46:15 +0000</pubDate>
      <link>https://dev.to/suzukazehaduki/librefang-068-released-em4</link>
      <guid>https://dev.to/suzukazehaduki/librefang-068-released-em4</guid>
      <description>&lt;h1&gt;
  
  
  LibreFang 0.6.8 Released
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;LibreFang v0.6.8&lt;/strong&gt; is here, and we've made it easier than ever to get started! This release focuses on &lt;strong&gt;accessibility&lt;/strong&gt; — our biggest win is distributing the CLI binary through npm and PyPI, so you can install LibreFang alongside your other dev tools. We've also improved multi-agent communication and tightened up our CI/CD pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Game-Changer: CLI Now on npm &amp;amp; PyPI
&lt;/h2&gt;

&lt;p&gt;The standout feature of this release: &lt;strong&gt;you can now install the LibreFang CLI directly from npm and PyPI&lt;/strong&gt; (#1323). No more hunting for pre-built binaries or compiling from source unless you want to. If you're a JavaScript or Python developer, it's as simple as &lt;code&gt;npm install -g librefang-cli&lt;/code&gt; or &lt;code&gt;pip install librefang-cli&lt;/code&gt;. This dramatically lowers the barrier to entry for teams already using these ecosystems.&lt;/p&gt;

&lt;h2&gt;
  
  
  💬 Better Multi-Agent Communication
&lt;/h2&gt;

&lt;p&gt;We've enhanced how LibreFang handles external DM routing. Your agents can now intelligently route owner responses when handling external direct messages (#1266) — meaning cleaner, more predictable conversation flows across federated agent networks.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Under the Hood
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Smarter automation&lt;/strong&gt;: We now use the GitHub API directly to create Go SDK tags (#1321), making our release process more reliable and less error-prone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cleaner CI/CD&lt;/strong&gt;: Removed wasteful workflows and fixed several bugs to keep the build system lean (#1320).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install / Upgrade
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Binary&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://get.librefang.ai | sh

&lt;span class="c"&gt;# Rust SDK&lt;/span&gt;
cargo add librefang

&lt;span class="c"&gt;# JavaScript SDK&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; @librefang/sdk

&lt;span class="c"&gt;# Python SDK&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;librefang-sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;Full Changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/releases/tag/v0.6.8-20260320" rel="noopener noreferrer"&gt;GitHub Release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.gg/DzTYqAZZmc" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>opensource</category>
      <category>release</category>
    </item>
    <item>
      <title>LibreFang 0.6.7 Released</title>
      <dc:creator>涼風羽月</dc:creator>
      <pubDate>Fri, 20 Mar 2026 07:56:54 +0000</pubDate>
      <link>https://dev.to/suzukazehaduki/librefang-067-released-25ff</link>
      <guid>https://dev.to/suzukazehaduki/librefang-067-released-25ff</guid>
      <description>&lt;h1&gt;
  
  
  LibreFang 0.6.7 Released
&lt;/h1&gt;

&lt;p&gt;We're thrilled to release &lt;strong&gt;LibreFang v0.6.7&lt;/strong&gt;—a focused update that strengthens extensibility, improves developer experience, and hardens our release pipeline. If you're building custom agents with HAND manifests or relying on context hooks, this one's for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extensibility &amp;amp; Scripting Improvements
&lt;/h2&gt;

&lt;p&gt;The foundation of LibreFang's power is its flexibility. This release fixes critical gaps in how your custom code integrates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Include user-installed HAND manifests in hand routing&lt;/strong&gt; (#1205) — Custom HAND agent manifests are now properly discovered and included in the routing system, eliminating the friction of manual registration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pass raw JSON payloads to context hook scripts&lt;/strong&gt; (#1207) — Context hooks now receive unprocessed JSON instead of serialized strings, giving you full control and eliminating unnecessary parsing overhead.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Better Developer Experience
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self-heal fish config PATH entries&lt;/strong&gt; (#1303) — Your shell configuration now automatically recovers from corrupted PATH entries in fish, keeping your development environment stable without manual fixes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Community &amp;amp; Documentation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Add GitHub Discussions link to dashboard sidebar&lt;/strong&gt; (#1302) — Find answers and connect with the community without leaving the dashboard. We're making it easier for everyone to share knowledge and get help.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Release &amp;amp; CI Reliability
&lt;/h2&gt;

&lt;p&gt;Behind the scenes, we've tightened our release process to ensure smooth deployments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pass GITHUB_TOKEN to contributor/star-history scripts&lt;/strong&gt; (#1300) — Improved authentication for release automation, reducing friction in contributor tracking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix 3 release workflow failures from v0.6.6&lt;/strong&gt; (#1309) — Resolved critical blockers in the release pipeline for more reliable deployments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install / Upgrade
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Binary&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://get.librefang.ai | sh

&lt;span class="c"&gt;# Rust SDK&lt;/span&gt;
cargo add librefang

&lt;span class="c"&gt;# JavaScript SDK&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; @librefang/sdk

&lt;span class="c"&gt;# Python SDK&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;librefang-sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;Full Changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/releases/tag/v0.6.7-20260320" rel="noopener noreferrer"&gt;GitHub Release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.gg/DzTYqAZZmc" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/librefang/librefang/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>opensource</category>
      <category>release</category>
    </item>
  </channel>
</rss>
