Skip to content

clawdosdev/clawdaemons

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Clawdaemons

The agent OS. Host AI agents 24/7 across Hermes and Deer Flow.

License: MIT Python Version Status Frameworks

Clawdaemons is a hosting framework and runtime for autonomous AI agents. Each agent runs as a daemon inside ClawdOS β€” long-lived, sandboxed, with its own window, files, wallet, and Farcaster identity. Phase 1 hosts your agents on Hermes. Phase 2 stitches them across Hermes and Deer Flow so one daemon can route work to whichever framework fits best.

⚠️ Preview / pre-alpha. APIs may change before v1.0. Treat all daemons as untrusted code.

Not affiliated with Nous Research or ByteDance. Hermes Agent and Deer Flow are MIT-licensed open-source projects. We build against their public plugin interfaces.


Table of Contents


Why Clawdaemons

Most agent frameworks borrow their interface from messaging apps: one chat, one user, one bot replying. That model breaks the moment an agent needs to do three things at once, persist context across days, or coordinate with other agents.

ClawdOS is a multi-window environment with a filesystem, taskbar, and onchain identity. Treating each agent as a daemon β€” a background process with its own window, address space, and wallet β€” makes more sense than nailing another chat box to the side of the screen.

Clawdaemons gives you the framework to define those daemons, the host bridge to make them talk to ClawdOS, and (Phase 2) the orchestration layer to run them across multiple agent frameworks simultaneously.


Roadmap: Phase 1 / Phase 2

Phase 1 Β· Agent Hosting (shipping)

Long-lived AI agents, hosted as daemons inside ClawdOS.

  • 24/7 uptime with auto-restart and daily state snapshots
  • Bring-your-own-LLM β€” Anthropic, OpenAI, OpenRouter, local llama.cpp, or route everything through opengateway
  • opengateway routing β€” point a daemon at gitlawb's opengateway for X sign-in auth, per-daemon usage tracking, and access to the partner-model pool (Xiaomi MiMo, Gemini-flash, more)
  • Sandboxed execution β€” local, Docker, SSH, Singularity, or Modal backends
  • Per-daemon onchain wallet on Base, with session-key envelopes
  • Optional Farcaster identity for casting and reading
  • Live dashboard inside ClawdOS β€” inspect thoughts, last action, pending plan
  • Multi-channel messaging β€” Telegram, Discord, Slack via Hermes' built-in IM layer
  • $COS discount on managed hosting fees (when cloud hosting ships)

Phase 2 Β· Multi-framework Orchestration (in progress)

A single daemon, two frameworks, organized like a company.

  • Department routing β€” research β†’ Deer Flow, ops β†’ Hermes, treasury β†’ Hermes
  • Cross-framework messaging via JSON-RPC 2.0
  • Shared filesystem and wallet scoped by capability
  • Manifest-driven framework selection β€” one config flip, no rewrite
  • Unified dashboard for the whole team

Install

pip install clawdaemons                  # framework only (mock host, offline)
pip install "clawdaemons[hermes]"        # + Hermes Agent runtime
pip install "clawdaemons[deerflow]"      # + Deer Flow runtime
pip install "clawdaemons[opengateway]"   # + openai SDK for opengateway routing
pip install "clawdaemons[all]"           # everything

Until PyPI ships, install from source:

pip install git+https://github.com/clawdosdev/clawdaemons.git

Requires Python β‰₯ 3.11.


Quick start

# scaffold a new daemon project
clawdaemons new hello-daemon

cd hello-daemon
pip install -e .

# run locally with the mock host (logs intended calls to stderr)
clawdaemons start hello-daemon

# tail logs
clawdaemons logs hello-daemon --follow

# deploy to live ClawdOS hosting (Phase 1)
clawdaemons deploy hello-daemon --host clawdos.space

Minimal daemon:

# hello_daemon/daemon.py
from clawdaemons import Daemon, host

daemon = Daemon(
    name="hello-daemon",
    system_prompt="Greet the user once per hour, briefly.",
    framework="hermes",   # or "deer-flow" in Phase 2
    tick_seconds=3600,
)

@daemon.tool
def write_greeting(text: str) -> str:
    """Open a ClawdOS window with a greeting. Max 200 chars."""
    return host.window.open(
        title="Hello",
        body_html=f"<h1 style='font-family:sans-serif'>{text}</h1>",
        w=400, h=200,
    )

def main() -> None:
    daemon.run()

if __name__ == "__main__":
    main()

Tool surface

Twelve tools across four namespaces. Each tool is a plain Python function with a type-annotated signature; the docstring becomes the LLM-facing description.

Window namespace

host.window.open(title, body_html, w=480, h=320) -> window_id
host.window.update(window_id, body_html)
host.window.close(window_id)

Filesystem namespace (sandboxed to the daemon's folder)

host.fs.write(path, content)
host.fs.read(path) -> str
host.fs.list(prefix="") -> list[str]

Wallet namespace

host.wallet.address() -> "0x..."
host.wallet.balance(token="ETH") -> str
host.wallet.request_signature(typed_data) -> hex | UserRejected

Farcaster namespace

host.farcaster.post(text, embeds=None) -> cast_hash
host.farcaster.as_self().post(text)            # daemon's own FID
host.farcaster.recent_casts(fid, limit=25) -> list[dict]

All tools route through the ClawdOS host over JSON-RPC 2.0. When the host is unreachable, calls fall back to a MockHost that prints structured logs to stderr β€” so you can iterate offline.


Inference routing (opengateway)

Daemons make LLM calls through whatever provider their framework is wired to. To centralize keys, metering, and rate limits β€” or to use gitlawb's free smart-routing tier β€” point a daemon at opengateway:

from clawdaemons import Daemon, GatewayConfig

daemon = Daemon(
    name="research-daemon",
    system_prompt="...",
    inference_gateway=GatewayConfig(),   # picks up OPENGATEWAY_API_KEY from env
)

Or in a manifest:

[runtime.gateway]
provider = "opengateway"
base_url = "https://opengateway.gitlawb.com/v1"     # default; override for self-hosted
model    = "mimo-v2.5-pro"                          # or google/gemini-3.1-flash-lite-preview, etc.

What you get when the gateway is configured:

  • X sign-in auth on the free tier β€” no separate billing relationship per provider
  • Per-daemon usage tracking β€” every request carries an X-Clawdaemon-Name header so the gateway can attribute spend to the right agent
  • Partner-model pool β€” Xiaomi MiMo, Gemini-flash variants, more rotate in over time
  • Single key for the whole fleet β€” issue one OPENGATEWAY_API_KEY for all your daemons

Required environment:

export OPENGATEWAY_API_KEY=sk-...
# optional overrides
export OPENGATEWAY_BASE_URL=https://opengateway.gitlawb.com/v1
export OPENGATEWAY_MODEL=mimo-v2.5-pro

When the API key is missing, a MockOpenGatewayClient logs the intended call to stderr and returns a plausible response β€” your daemon stays runnable offline. The Hermes adapter passes the gateway base URL and key straight through to its OpenAI-compatible LLM client; no special casing inside your daemon code.


Wallet modes

Three custody options, scoped per daemon.

Mode Default? Behavior
proxy βœ… Daemon proposes, user signs from main wallet. Every action prompts.
session-key recommended Scoped allowance (e.g. swap ≀ 0.1 ETH/day, this token only, 7-day expiry). Sign once, daemon runs inside the envelope.
standalone advanced Daemon owns a separate EOA. User funds manually. Useful for receiving funds or building onchain history.

Capability declarations in the manifest don't grant access β€” the host enforces caps independently. Lying in your manifest just means the user gets prompted for permissions you don't end up using.


Daemon manifest

Every daemon ships a clawdaemon.toml at its package root.

[daemon]
name         = "hello-daemon"
display_name = "Hello Daemon"
version      = "0.1.0"
description  = "Greets the user once per hour."

[runtime]
framework = "hermes"           # "hermes", "deer-flow", or "multi" (Phase 2)
python    = ">=3.11"
entry     = "hello_daemon.daemon:main"

[runtime.gateway]
provider = "opengateway"       # omit this whole block to talk to the framework's default provider
model    = "mimo-v2.5-pro"

[capabilities]
windows    = ["open", "close", "update"]
filesystem = ["read:self", "write:self"]
wallet     = ["read"]
farcaster  = ["cast"]
network    = ["https://api.coingecko.com/*"]

[schedule]
cron     = "0 * * * *"
on_event = ["onchain:transfer:in"]

[hosting]
sandbox  = "docker"            # local | docker | ssh | singularity | modal
restart  = "on-failure"
backups  = "daily"

[ui]
default_window = { w = 400, h = 200 }

CLI reference

clawdaemons new <name>            Scaffold a new daemon project
clawdaemons install <path>        Register a local daemon
clawdaemons list                  List installed daemons
clawdaemons start <name>          Start a daemon locally
clawdaemons stop <name>           Stop a running daemon
clawdaemons status <name>         Show health and current activity
clawdaemons logs <name> [-f]      Tail logs
clawdaemons deploy <name>         Deploy to managed ClawdOS hosting (Phase 1)
clawdaemons undeploy <name>       Remove from managed hosting

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  ClawdOS Host  (browser / Farcaster mini app)              β”‚
β”‚  Window Manager Β· Filesystem Β· Wallet Β· Farcaster          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚  JSON-RPC 2.0 over WebSocket
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Clawdaemons Bridge  (this package)                        β”‚
β”‚  - Tool registry, schema generation                        β”‚
β”‚  - JSON-RPC client + reconnection                          β”‚
β”‚  - Capability enforcement                                  β”‚
β”‚  - MockHost fallback for offline dev                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚  Framework plugin interface
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Phase 1: Hermes Agent (Nous Research, MIT)                β”‚
β”‚  Phase 2: + Deer Flow (ByteDance, MIT) β€” multi-framework   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚  OpenAI-compatible HTTP (optional)
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  opengateway  (gitlawb, MIT) β€” optional inference router   β”‚
β”‚  X sign-in Β· per-key usage Β· global rate limits            β”‚
β”‚  Partner models: Xiaomi MiMo, Gemini-flash, …              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Each daemon runs in one of Hermes' five sandbox backends (local, Docker, SSH, Singularity, Modal). Production deployments default to Docker.


Comparison

Clawmes HermesOS Clawdaemons
Surface chat (Telegram/Discord) managed cloud OS-native daemons
Framework Hermes only Hermes only Hermes + Deer Flow
Onchain identity optional none first-class
Per-agent window no no yes
Persistent filesystem partial yes per-daemon, sandboxed
Farcaster integration no no first-class
Phase 2 orchestration no no yes
Self-hostable yes partial yes
License MIT proprietary MIT

Status

Item Status
Manifest spec (Phase 1) shipping
Framework + mock host shipping
CLI scaffolding shipping
opengateway inference routing shipping (v0.2)
Live JSON-RPC bridge in progress (v0.2)
Managed cloud hosting planned (v0.3)
Deer Flow integration (Phase 2) planned (v0.4)
Multi-framework routing planned (v0.4)
Frozen v1.0 spec planned

Get involved

License

MIT. See LICENSE.

Hermes Agent and Deer Flow are MIT-licensed open-source projects maintained separately. We are not affiliated with Nous Research or ByteDance.

About

The agent OS. Host AI agents 24/7 across Hermes and Deer Flow. 🦌πŸͺ½

https://clawdos.space/clawdaemons

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages