Skip to content

Superagentsys/novalclaw

Repository files navigation

OmniNova Claw

OmniNova Claw Logo

A Next-Gen AI Agent Platform & Desktop Control Plane

中文文档 | Features | Getting Started | Architecture


OmniNova Claw is a powerful, local-first AI agent platform built on the Novalclaw architecture. It combines a high-performance Rust core runtime with a modern Tauri + React desktop interface, giving you complete control over your AI agents, skills, and model providers.

Whether you're building complex agent workflows, managing multiple LLM providers (OpenAI, Anthropic, Gemini, DeepSeek, etc.), or deploying bots across various channels (Slack, Discord, WeChat, etc.), OmniNova Claw provides a unified, secure, and extensible foundation.

✨ Features

👻 Soul System (Agent Persona & MBTI)

The Soul System gives your agent a unique identity and behavioral framework, deeply integrated with MBTI psychology.

  • MBTI-Driven Personality: Architect your agent's cognition using MBTI types (e.g., INTJ for logical strategy, ENFP for creative empathy). The system translates these types into distinct reasoning patterns and communication styles.
  • System Prompt: Define the core personality, tone, and constraints of your agent.
  • Behavioral Control: Fine-tune interaction styles, context handling (compact_context), and tool usage limits.
  • Adaptive Persona: Switch between different "Souls" (e.g., Coder, Researcher, Assistant) based on the task or channel.

🧠 Three-Layer Memory System

OmniNova Claw implements a sophisticated cognitive architecture with three distinct memory layers:

  1. Working Memory (Short-term): Manages the immediate conversation context with intelligent token compression and sliding windows to maintain focus.
  2. Episodic Memory (Long-term): Stores and retrieves past interaction history, preserving the lineage of sessions and enabling the agent to recall previous contexts.
  3. Semantic/Skill Memory (Knowledge): A persistent knowledge base derived from loaded Skills (SKILL.md) and external documents, allowing the agent to utilize specialized domain knowledge.

🛠️ Powerful Tools & Capabilities

  • Built-in Tools: File operations, Web Search, PDF reading, Git operations, Shell execution (sandboxed).
  • Skills System: Extensible capability system compatible with OpenClaw skills. Load skills from SKILL.md or local directories.
  • ACP Protocol: Implements the Agent Control Protocol for standardized agent-tool interaction.
  • Safety First: E-stop mechanism, tool policy enforcement, and dangerous command filtering.

🔌 Universal Connectivity

  • Multi-Provider Support: Seamlessly switch between OpenAI, Anthropic, Gemini, DeepSeek, Qwen, Ollama, and more.
  • Omni-Channel: Connect your agents to Slack, Discord, Telegram, WeChat, Feishu, Lark, DingTalk, WhatsApp, Email, and Webhooks.
  • Declarative Routing: Route messages to specific agents based on channel, user, or metadata without writing code.

🖥️ Modern Desktop Experience

  • Cross-Platform: Native apps for macOS (Apple Silicon/Intel), Windows, and Linux.
  • Visual Configuration: Configure providers, channels, and skills through an intuitive React-based UI.
  • Local Gateway: Run the entire stack locally with a built-in HTTP gateway and daemon management.

📞 Mobile Phone Agent (iOS / Android)

  • iOS client: apps/omninova-ios/ — SwiftUI + CallKit + SFSpeechRecognizer + Call Directory Extension. XcodeGen-driven project generation wired into CI (simulator build).
  • Android client: apps/omninova-android/ — Kotlin + Jetpack Compose + CallScreeningService + InCallService + foreground service (phoneCall|microphone). Supports auto-answer once the user grants default-dialer + ANSWER_PHONE_CALLS.
  • Spam detection: rule-driven (skills/phone-call-assistant/spam_detection_rules.json), hot-loadable from the gateway.
  • Key-info extraction: lightweight on-device extractor + gateway-side LLM normalization via key_info_extraction_schema.json.
  • Conversation logging: fully aligned with conversation_log_schema.json; complete JSON is synced to the gateway after every call.
  • Skill-driven: all capabilities live in the skills/phone-call-assistant/ skill and are exposed to the agent as phone_call_assistant.* tools.

🚀 Getting Started

Headless / no desktop (Linux, Unix, SSH, servers)

You do not need Tauri, Node.js, or desktop libraries such as libwebkit2gtk—only Rust. From the repo root omninovalclaw/:

cargo build -p omninova-core --release --bin omninova
cp target/release/omninova ~/.local/bin/   # or add target/release to PATH
omninova doctor
omninova setup          # or omninova configure
omninova gateway run    # foreground gateway (Ctrl+C to stop)

Background service (equivalent to a long-running omninova gateway): commands below register the service using the current omninova binary—put it on a stable path (e.g. ~/.local/bin/omninova) before daemon install.

  • Linux: systemd user unit (no root). Unit file: ~/.config/systemd/user/omninova-gateway.service. Logs: journalctl --user -u omninova-gateway.service.
omninova daemon install
omninova daemon status
  • macOS: launchd user agent. Plist: ~/Library/LaunchAgents/com.omninova.gateway.plist, label com.omninova.gateway. Default stdout/stderr: /tmp/omninova-gateway.out.log and /tmp/omninova-gateway.err.log.
omninova daemon install
omninova daemon status
launchctl list com.omninova.gateway   # optional: see if loaded
  • Windows: omninova daemon install registers via Task Scheduler; use omninova daemon check and omninova doctor for details.

Config defaults to ~/.omninova/config.toml; override with OMNINOVA_CONFIG_DIR if needed. All other CLI commands (agent, skills, channels, etc.) work the same as with the desktop app.

Prerequisites

  • Rust: Latest stable version (rustup update)
  • CLI-only / headless: Rust only; Node.js is not required.
  • Desktop (Tauri) builds also require:
    • Node.js: Version 22+ (node -v)
  • System dependencies (only for building or running the desktop app):
    • Linux: libwebkit2gtk-4.1-dev, libappindicator3-dev, librsvg2-dev
    • Windows: Microsoft Visual Studio C++ Build Tools

Installation

  1. Clone the repository

    git clone https://github.com/omninova/claw.git
    cd claw/omninovalclaw
  2. Install dependencies

    # Install frontend dependencies
    cd apps/omninova-tauri
    npm install
  3. Run in Development Mode

    # Run Tauri app (Frontend + Rust Backend)
    npm run tauri dev
  4. Build for Production

    You can build optimized binaries for specific platforms using the following commands:

    # Windows (x64)
    npm run build:windows
    
    # macOS (Apple Silicon / M1/M2/M3)
    npm run build:macos:apple
    
    # macOS (Intel)
    npm run build:macos:intel
    
    # Linux (x64)
    npm run build:linux

    Artifacts will be generated in apps/omninova-tauri/src-tauri/target/release/bundle/.

📞 Mobile (iOS / Android) builds

Mobile targets live under apps/omninova-ios/ (SwiftUI) and apps/omninova-android/ (Kotlin/Compose). Both are wired into the CI workflow .github/workflows/release.yml.

iOS (requires macOS + Xcode 15+)

brew install xcodegen
cd apps/omninova-ios
xcodegen generate --spec project.yml
# Or via the bundled helper (CI-friendly, unsigned simulator build):
./scripts/build-ios.sh

Highlights:

  • CallManager.autoAnswer=true dispatches CXAnswerCallAction through CXCallController.
  • CallDirectoryExtension consumes a shared App Group JSON for static block/ID entries.
  • SpamDetector applies skills/phone-call-assistant/spam_detection_rules.json heuristics.
  • KeyInfoExtractor does on-device extraction (name / org / phone / intent / summary / sentiment).

Android (requires JDK 17 + Android SDK 34)

cd apps/omninova-android
echo "sdk.dir=$ANDROID_SDK_ROOT" > local.properties
./gradlew assembleDebug          # app/build/outputs/apk/debug/app-debug.apk
./gradlew assembleRelease        # keystore required
# Or: ./scripts/build-android.sh

Key services:

  • OmniCallScreeningService — pre-ring allow/silence/reject via the skill rule set.
  • OmniInCallService — auto-answers incoming calls when the app is the default dialer.
  • CallAgentForegroundService — foreground service (phoneCall|microphone) running ASR → gateway → TTS.
  • Full session JSON is posted to POST /api/webhook when the call ends.

From the Tauri project (optional convenience)

cd apps/omninova-tauri
npm run build:phone-agent:ios
npm run build:phone-agent:android
npm run build:phone-agent:android:release

🏗️ Architecture

OmniNova Claw follows a modular workspace structure:

omninovalclaw/
├── skills/                  # Bundled SKILL.md packs (import into workspace)
│   └── phone-call-assistant/ # Mobile phone-agent skill (spam rules + key-info schema)
├── apps/
│   ├── omninova-tauri/      # Desktop Frontend (React 19 + TypeScript) & Tauri Config
│   │   ├── src/             # UI Components (Setup, Chat, Console)
│   │   ├── src-tauri/       # Tauri Backend Entrypoint
│   │   └── public/          # Static Assets
│   ├── omninova-ios/        # iOS phone agent (SwiftUI + CallKit, XcodeGen project.yml)
│   └── omninova-android/    # Android phone agent (Kotlin + Compose, Gradle project)
├── crates/
│   └── omninova-core/       # Core Runtime Library
│       ├── agent/           # Agent Logic & Dispatcher
│       ├── skills/          # Skills System Implementation
│       ├── tools/           # Native Tools (PDF, Web, File, etc.)
│       ├── providers/       # LLM Provider Integrations
│       ├── channels/        # IM & Webhook Adapters
│       └── gateway/         # HTTP API Gateway
└── .github/workflows/       # CI/CD Pipelines (release.yml)

⚙️ Configuration

OmniNova Claw uses a config.toml file for configuration, which can be managed via the Desktop UI or edited manually.

  • Config Location: ~/.omninova/config.toml (default)
  • Environment Variables: Can override config settings (e.g., OMNINOVA_OPENAI_API_KEY).

The Desktop App provides a Setup Wizard to easily configure:

  • Providers: API Keys and Base URLs.
  • Channels: Bot tokens and Webhook secrets.
  • Skills: Enable/Disable Open Skills and set import paths. Bundled examples live under skills/ (e.g. financial-analysis, financial-valuation, quantitative-research, quantitative-backtest, penetration-assessment); run omninova skills import --from ./skills from the repo root to copy them into the default skills directory.
  • Persona: Define your agent's system prompt and behavior.

📦 Releases

We use GitHub Actions for automated cross-platform builds.

  • Stable Releases: Tagged with v* (e.g., v0.1.0).
  • Platform Support:
    • macOS (Universal/Apple Silicon) .dmg
    • Windows (x64) .msi
    • Linux (x64) .AppImage / .deb

📄 License

This project is licensed under the MIT License.


Built with ❤️ by the OmniNova Team

About

novalclaw is next generation AI format

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors