Skip to content
CAI
Software that uses CAICheck a score

RightNow-AI/openfang

51.5

Adequate · 27 September 2026

176.7k

lines of production code

Rust

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This release introduces significant security hardening for API authentication and memory backends, alongside a major shift to native browser automation in the runtime layer. The platform expands its integration capabilities with new drivers for Vertex AI and DingTalk, while the CLI and TUI receive substantial feature updates including dark mode, model pickers, and enhanced hand management. Additionally, the dashboard gains Russian localization, PWA support, and new Comms and Runtime pages, supported by comprehensive test coverage and dependency updates.

Features

Add Vertex AI driver with OAuth authentication

Users can now connect to Google's Vertex AI platform using service account authentication. The change introduces a new driver for Vertex AI, supported by an end-to-end test script (test\_vertex\_e2e.py) that validates both standard and streaming API calls. A Windows batch file (start-vertex.bat) is also added to facilitate local development and testing of this integration.

(repo-wide) · high confidence

Adds PWA manifest, service worker, and auth prompt UI

The application now supports Progressive Web App (PWA) capabilities by introducing a \manifest.json\ file and a \sw.js\ service worker for caching. Additionally, the main layout (\index\_body.html\) now includes a new authentication prompt overlay that supports both session-based login and API key authentication, and the sidebar navigation has been restructured to place Overview as the primary entry point, with improved rendering for Firefox and consistent icon handling.

crates/openfang-api/static · high confidence

CLI enhancements: bundled agent templates, hand management, and workflow commands

The CLI now embeds 30 agent templates directly into the binary, ensuring the 'openfang agent new' command works immediately after installation without requiring filesystem discovery. A new 'openfang hand' subcommand group is introduced to manage hand instances (list, active, install, activate, deactivate, info, check-deps, install-deps, pause, resume, and config). Workflow commands now support get, update, and delete operations. The 'openfang start' command gains a '--yolo' flag for auto-approving tool calls. Additionally, the CLI respects the OPENFANG\_HOME environment variable for configuration and template paths, and the MCP protocol handler is updated to comply with JSON-RPC 2.0 by handling missing request IDs and using the package version.

crates/openfang-cli/src · high confidence

Centralized slash command registry and multi-channel message prefixing

Slash commands are now managed in a single registry (\commands.rs\) that unifies CLI, channel adapters, and the web chat, enabling consistent autocomplete and help text across all surfaces. On channels, outbound messages can be prefixed with the responding agent's name (configurable via \prefix\_agent\_name\ in \ChannelOverrides\), helping users distinguish messages when multiple agents share a channel. Additionally, the \MediaConfig\ now supports overriding base URLs for audio transcription, TTS, and image generation, allowing local or self-hosted OpenAI-compatible services to be used without changing provider settings.

crates/openfang-types · high confidence

Cron jobs gain multi-destination delivery, hot-reloadable config, and improved agent heartbeat monitoring

Cron jobs can now fan out output to multiple targets (channels, webhooks, files, email) via a new delivery engine, with per-target success tracking. Cron scheduling is more resilient: jobs are claimed atomically to prevent duplicate runs, and agent ID reassignment ensures cron jobs survive agent respawns. The config system now tolerates malformed binding entries instead of failing entirely, and hot-reloadable settings (default model, provider URLs, fallback providers) allow live tuning without a daemon restart. The heartbeat monitor now tracks crashed agents for automatic recovery, exempts idle reactive agents from false positives, and caps recent approval records for UI visibility.

crates/openfang-kernel/src · high confidence

Dark mode theme and new Comms and Model Picker features

The TUI now uses a dark mode color palette for improved contrast and readability. A new Comms tab has been added to the main navigation, allowing users to view network topology, event logs, and send messages. Additionally, users can now open a model picker or switch models directly via the chat interface, and skill configuration details can be loaded and displayed in the skills view.

crates/openfang-cli/src/tui · high confidence

HTTP memory backend and peer security hardening

The memory subsystem now supports an HTTP backend for shared memory operations, routing \remember\ and \recall\ calls to a remote memory-api gateway while maintaining local SQLite as a fallback. This includes a new \http\_client\ module, a \new\_with\_http\ constructor for \SemanticStore\, and configuration in \MemoryConfig\ to enable the remote backend. Additionally, the \MemorySubstrate\ now accepts a \MemoryConfig\ to initialize the HTTP client, and session saves are offloaded to a blocking thread for better responsiveness. On the wire protocol, a \NonceTracker\ was added to the \PeerNode\ to prevent replay attacks during the OFP handshake, and per-session HMAC keys are now derived and used for message authentication.

crates/openfang-memory · high confidence

Introduce LangChain code review agent and standardize model configuration

A new LangChain-based code review agent is added to the agents directory, exposing an A2A-compatible server and workflow for automated code analysis. Simultaneously, the model configuration for all existing agents (including analyst, architect, assistant, and others) is changed from specific providers (e.g., Gemini, Groq, DeepSeek) to a generic 'default' provider and model, simplifying the configuration structure.

agents · high confidence

New Comms and Runtime pages; enhanced agent, scheduler, and settings capabilities

Added new Comms page for agent topology and inter-agent communication, and a Runtime page for system overview and provider status. The Agents page now supports tool filters, model/provider switching, and fallback chains. The Scheduler page was updated to use the new cron API, added delivery targets, and improved run-now behavior. The Hands page added a trader dashboard and API key inputs. The Chat page added model switchers, LaTeX rendering, and slash command i18n. The Settings page added custom model management, provider grouping, and search/filtering. The Skills page added local skill configuration and i18n for categories. The Approvals page added auto-refresh. The Sessions page added i18n for confirmation dialogs.

crates/openfang-api/static/js/pages · high confidence

New Comms screen and model picker in Chat

Added a new Comms screen for displaying agent communication topology and live event feeds. In the Chat screen, introduced a model picker overlay (toggled with Ctrl+M) that allows users to search and switch between available models. Also updated the init wizard to include new LLM providers (xAI, Perplexity, Cohere, etc.) and added a DingTalk Stream channel adapter.

crates/openfang-cli/src/tui/screens · high confidence

New SearXNG search skill and shell runtime support

A new 'searxng' bundled skill is now available for privacy-respecting web search. The system also introduces a 'Shell' runtime type, allowing skills to execute as shell/Bash scripts. Additionally, skills can now declare a 'config' section in their frontmatter to inject resolved configuration (from user config, environment variables, or defaults) into the LLM's system prompt, with secret values automatically redacted. Finally, the installer now supports an optional 'require\_signed' gate to enforce Ed25519 signature verification for installed skills.

crates/openfang-skills · high confidence

New channel adapters and command system

Added new channel adapters for DingTalk (stream mode), MQTT, WeCom, and Bluesky (improved timestamp formatting). The bridge layer now supports structured content blocks, audio transcription, and free-response channel configuration. A comprehensive chat command system (/start, /help, /agents, /workflow, etc.) is exposed via the bridge, and the Discord adapter now supports smart auto-threading.

crates/openfang-channels · high confidence

New hands and improved hand management capabilities

The system now includes two new bundled hands: 'trader' (a data-focused hand for trading) and 'infisical-sync' (a security-focused hand for syncing secrets). The 'trader' hand is added to the bundled definitions and its tests. The 'infisical-sync' hand is also added, with tests verifying its required environment variables and tools. Additionally, the 'researcher' hand's default max\_iterations is reduced from 80 to 25. The 'browser' hand's requirements are updated to reflect 'chromium' instead of 'playwright'. The 'einstein' hands list is updated to include 'trader' in the tests for schedules and memory. The 'HandInstance' and 'ActivateHandRequest' structs now support an optional 'instance\_name' for multi-instance support. The 'HandDefinition' struct gains an 'env\_var' field for settings. The 'HandAgentConfig' gains a 'heartbeat\_interval\_secs' field. The 'HandRegistry' gains audit callback support for SHA-256 hashing of HAND.toml files, and methods for persisting and loading hand state. A 'copy\_dir\_all' function is added for copying directories. The 'HandCategory' enum gains 'Finance' and 'Other' variants. The 'HandRequirement' struct gains an 'optional' field. The 'parse\_hand\_toml' function is introduced to handle both flat and table-format TOML. The 'bundled.rs' file is updated to include the new hands and update tests.

crates/openfang-hands/src · high confidence

Runtime: Native browser automation, persistent audit trail, and A2A status compatibility

The runtime replaces the Python/Playwright browser bridge with a native Rust implementation using Chrome DevTools Protocol (CDP) over WebSocket, removing the external Python dependency. The audit log now persists to SQLite for durability across daemon restarts. The A2A protocol is updated to support both string and object forms for task status, and artifacts now include optional metadata fields. Additionally, the agent loop preserves thinking blocks in message history, filters streaming think tags, and adds configurable tool timeouts.

crates/openfang-runtime/src · high confidence

Russian language support added to the OpenFang dashboard

The OpenFang dashboard now supports Russian localization. Users can switch the interface language to Russian via the theme/language settings, with all navigation items, authentication prompts, status messages, and error messages translated. The i18n framework in the static assets provides runtime language switching and auto-detection of the browser's language preference.

crates/openfang-api/static/i18n · high confidence

Security

Hardened API authentication and introduced session-based auth

The API now enforces stricter authentication: requests to non-public endpoints require a valid API key or a valid session cookie. When no API key is configured, the server defaults to fail-closed for non-loopback requests, requiring either an API key or a dashboard login. Session-based authentication is now supported via the \openfang\_session\ cookie, allowing browser sessions established via \sessionLogin()\ to be honored on both HTTP and WebSocket surfaces. The middleware also whitelists additional read-only endpoints (e.g., \/api/models\, \/api/budget\) and introduces a \OPENFANG\_ALLOW\_NO\_AUTH\ environment variable to explicitly opt out of the fail-closed behavior. Additionally, the API now supports template-based agent spawning, skill installation with optional signature verification, and audit log appending.

crates/openfang-api/src · high confidence

Behavioural changes

Improved JSON5 migration for provider and model configuration

The \openfang-migrate\ tool now correctly maps provider aliases and model configurations from legacy YAML and JSON5 formats into the new TOML-based structure. Specific provider mappings (e.g., \qwencode\ to \qwen\, \kimicode\ to \moonshot\, \copilot\ to \github-copilot\) are now handled with correct environment variable names (e.g., \DASHSCOPE\_API\_KEY\, \MOONSHOT\_API\_KEY\). Custom provider base URLs and API hints from the source configuration are preserved in the migrated \config.toml\ and individual \agent.toml\ files. New tests verify these mappings for default models, agent-specific models, and fallback models.

crates/openfang-migrate · high confidence

Vault format versioning and HTTP transport support

The on-disk vault format now includes a version header ("OFV1") to enable future format changes while maintaining backward compatibility with legacy JSON vault files. Additionally, the system now supports HTTP transport for MCP integrations, allowing users to connect to MCP servers using HTTP-based protocols alongside the existing SSE transport.

crates/openfang-extensions/src · high confidence

Fixes

Fix server startup environment loading and shutdown race condition

The embedded server now loads environment variables from \~/.openfang/.env and \~/.openfang/secrets.env at startup, ensuring API keys and credentials are available to the kernel. Additionally, a race condition in the server shutdown process is fixed by using an atomic flag to ensure the shutdown sequence (sending the signal and joining the thread) is only executed once, preventing duplicate shutdown attempts.

crates/openfang-desktop/src · medium confidence

Fixes for Gemini, Anthropic, and Copilot drivers

Resolves multiple bugs across the LLM driver layer. For Gemini, the driver now preserves \thoughtSignature\ on all content parts (text, function calls) to prevent \INVALID\_ARGUMENT\ errors with Gemini 2.5+/3.x thinking models. For Anthropic, the driver correctly echoes back \thinking\ and \redacted\_thinking\ blocks (including opaque signatures/data) to maintain conversation state and avoid API rejections. For Copilot, the driver was rewritten to use full OAuth device flow authentication instead of simple PAT exchange. Additionally, the FallbackDriver was fixed to properly escalate network errors (like connection refused) to the next fallback driver rather than bubbling the error up, and the fallback chain now supports explicit model name mapping per driver.

crates/openfang-runtime/src/drivers · high confidence

Improved WhatsApp gateway reliability and message handling

The WhatsApp gateway now features a robust exponential backoff reconnection strategy, ensuring the service automatically recovers from temporary network issues or restarts without manual intervention. The gateway also provides more accurate message routing by distinguishing between group and direct messages, and correctly handles media types (images, audio, video, documents) by including descriptive text in the payload sent to the agent. Additionally, the codebase has been modernized to use ES modules and explicit imports, improving maintainability.

packages/whatsapp-gateway · high confidence

Improved chat rendering, authentication handling, and file uploads

Chat messages now render LaTeX math via on-demand loading of KaTeX, with the markdown parser protecting LaTeX blocks from mangling. The API client now automatically prompts for re-authentication on 401 errors and guards against race conditions in WebSocket connections. File uploads now use FormData for better compatibility. The app also remembers the saved API key, supports session-based authentication, and allows users to log in/out via the UI.

crates/openfang-api/static/js · high confidence

Improved installer robustness and macOS compatibility

The install scripts now detect the system architecture using multiple fallback methods (RuntimeInformation, environment variables, WMI, and pointer size) to ensure correct binary selection. On macOS, the installer performs ad-hoc code signing and strips quarantine attributes to prevent Gatekeeper from killing the binary. The shell configuration logic is also enhanced: for Fish users, it writes to a drop-in file to avoid breaking the main config, and cleans up legacy PATH entries from older versions.

scripts · high confidence

Test coverage

Add test coverage for agent manifest parsing and update test expectations; Expanded test coverage for API endpoints and agent lifecycle.

Dependencies

Dependency updates and new integrations

The project updated numerous Rust dependencies, including upgrading wasmtime to 43, governor to 0.10, and toml to 0.9, while adding support for MQTT, email (SMTP/IMAP), and the rmcp SDK. Additionally, the WhatsApp gateway package was converted to an ES module, and a new LangChain-based code review agent was introduced.

(dependencies) · high confidence

Updated Chart.js to v4.4.7

The Chart.js library was updated to version 4.4.7. This update includes improvements to color handling, animation performance, and interaction modes, which may affect how charts are rendered and how users interact with them.

crates/openfang-api/static/css · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 34 → 52 (+17.2)
  • Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 38 → 32 (-5.5)
  • Architecture 69 → 97 (+27.8)
  • Maturity 60 → 76 (+15.5)
  • Readiness 19 → 63 (+43.6)
  • Security 54 → 69 (+15.0)
  • Event Sourcing 100 (new)
  • Accessibility 67 (new)

Resolved (139)

  • (anonymous) (cognitive 20) (packages/whatsapp-gateway/index.js)
  • (anonymous) (cognitive 45) (packages/whatsapp-gateway/index.js)
  • (anonymous) (cyclomatic 27) (packages/whatsapp-gateway/index.js)
  • Change coupling: agents.js ↔ wizard.js (crates/openfang-api/static/js/pages/agents.js)
  • Change coupling: chat.js ↔ wizard.js (crates/openfang-api/static/js/pages/chat.js)
  • Critical CVE: [GHSA redacted] (Cargo.lock)
  • Critical CVE: [GHSA redacted] (agents/langchain-code-reviewer/requirements.txt)
  • Dimension evaluation failed
  • High CVE: [GHSA redacted] (agents/langchain-code-reviewer/requirements.txt)
  • High CVE: [GHSA redacted] (Cargo.lock)
  • High CVE: [GHSA redacted] (agents/langchain-code-reviewer/requirements.txt)
  • High CVE: [GHSA redacted] (Cargo.lock)
  • High CVE: [GHSA redacted] (Cargo.lock)
  • High CVE: [GHSA redacted] (Cargo.lock)
  • High CVE: [GHSA redacted] (Cargo.lock)
  • High CVE: [GHSA redacted] (agents/langchain-code-reviewer/requirements.txt)
  • High CVE: [GHSA redacted] (Cargo.lock)
  • High CVE: [GHSA redacted] (agents/langchain-code-reviewer/requirements.txt)
  • High CVE: [GHSA redacted] (Cargo.lock)
  • High: security finding (details withheld)
  • …and 119 more

New (1395)

  • (anonymous) (cognitive 16) (crates/openfang-api/static/js/api.js)
  • (anonymous) (cognitive 16) (crates/openfang-api/static/js/pages/runtime.js)
  • (anonymous) (cognitive 19) (packages/whatsapp-gateway/index.js)
  • (anonymous) (cognitive 37) (crates/openfang-api/static/i18n/i18n.js)
  • (anonymous) (cognitive 42) (crates/openfang-api/static/js/app.js)
  • (anonymous) (cognitive 49) (crates/openfang-api/static/js/api.js)
  • (anonymous) (cyclomatic 16) (crates/openfang-api/static/js/api.js)
  • (anonymous) (cyclomatic 29) (crates/openfang-api/static/i18n/i18n.js)
  • (anonymous) (cyclomatic 40) (crates/openfang-api/static/js/app.js)
  • (anonymous) (cyclomatic 43) (crates/openfang-api/static/js/api.js)
  • (anonymous)::(anonymous)::loadData (cyclomatic 16) (crates/openfang-api/static/js/pages/runtime.js)
  • AgentRouter::binding_matches (cognitive 18) (crates/openfang-channels/src/router.rs)
  • AgentSelectState::handle_agent_list (cognitive 23) (crates/openfang-cli/src/tui/screens/agents.rs)
  • AgentSelectState::handle_agent_list (cyclomatic 17) (crates/openfang-cli/src/tui/screens/agents.rs)
  • Ambiguous overlap between full update and patch operations. Both accept a JSON body and an agent path. Without strict documentation, it is unclear if update_agent replaces the entire resource while patch_agent applies partial changes, or if they are functionally identical aliases. This creates confusion for API consumers regarding idempotency and payload expectations.
  • Ambiguous scope of budget updates. update_budget likely updates a global or user-level budget, while update_agent_budget updates a specific agent's budget. The naming update_budget is too generic and could be mistaken for the agent-specific operation.
  • AnthropicDriver::complete (cognitive 17) (crates/openfang-runtime/src/drivers/anthropic.rs)
  • AnthropicDriver::stream (cognitive 152) (crates/openfang-runtime/src/drivers/anthropic.rs)
  • AnthropicDriver::stream (cyclomatic 53) (crates/openfang-runtime/src/drivers/anthropic.rs)
  • App::draw_tab_bar (cognitive 29) (crates/openfang-cli/src/tui/mod.rs)
  • …and 1375 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

RightNow-AI/openfang was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 27 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit acf2587e46be174c10200489c9a2d23a39a98aeb — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-7c1cb6328e11.