v0.1.0-alpha · MIT License

Your agent.
Your keys.
Your rules.

Self-sovereign AI in ~2,000 lines of Python.

Cobot is a minimal personal AI agent that runs on your hardware, identifies via Nostr, and transacts via Lightning Network. No cloud. No custody. No permission needed.

cobot — session
$ pip install cobot
$ cobot run
[cobot] loading plugins...
✓ config  ·  ✓ ppq  ·  ✓ nostr  ·  ✓ wallet  ·  ✓ tools
[nostr] connected to wss://relay.damus.io
[nostr] identity: npub1qz8...x4f7
[wallet] balance: 47,250 sats
 
[cobot] agent ready. listening for messages.
_

Five layers. Full control.

Every layer is yours. No vendor lock-in. No API keys you don't own. Swap any component without touching the others.

Your Hardware
Physical control
Cobot Runtime
Self-hosted · ~2K lines
Nostr Identity
npub / nsec · Cryptographic
🔑
Lightning Wallet
npub.cash · Self-sovereign money
LLM Provider
Local or cloud · Your choice

Everything an agent needs.
Nothing it doesn't.

No bloat. No framework tax. Just the primitives for a self-sovereign agent.

Lightning Wallet

Send and receive sats autonomously. Your agent has its own money via npub.cash.

npub.cash
🔑

Nostr Identity

Cryptographic identity via npub/nsec. Communicate through Nostr relays with NIP-04 DMs.

NIP-04
🔌

Plugin Architecture

Everything is a plugin. Drop modules into /plugins and they auto-register with dependency resolution.

extensible
🔁

Hot Reload

Modify plugins at runtime. Cobot watches for changes and restarts automatically.

zero downtime
🤖

Multi-LLM

PPQ, Ollama, OpenRouter, and more. Run local models or connect to cloud providers.

flexible
📄

FileDrop

File-based communication channel with Schnorr signature verification. Agents exchange signed messages.

Schnorr

Built-in plugins

Ship with sensible defaults. Replace anything.

Plugin Capability Description
config system Configuration management
ppq llm PPQ.ai LLM provider
ollama llm Local Ollama models
nostr communication Nostr DMs via NIP-04
filedrop communication File-based messaging with signatures
wallet wallet Lightning via npub.cash
tools tools Shell & file operations
hotreload system Auto-restart on plugin changes
security system Prompt injection shield

Plugins that extend plugins.

Cobot's unique feature: plugins can define hooks that other plugins implement. Composable by design.

Defines
filedrop
Extension Point
filedrop.verify
Implements
filedrop-nostr
Defining extension points
# filedrop/plugin.py
meta = PluginMeta(
    id="filedrop",
    extension_points=[
        "filedrop.before_write",
        "filedrop.after_read",
    ],
)
Implementing them
# filedrop-nostr/plugin.py
meta = PluginMeta(
    id="filedrop-nostr",
    implements={
        "filedrop.before_write": "sign",
        "filedrop.after_read": "verify",
    },
)

Architecture

Clean separation. Every layer has a single job.

Plugin Registry
Registration Dependency Resolution Extension Points
Plugins
config llm comms wallet tools security
Extension Points
Plugins define hooks → Others implement
Hook Chain
on_message transform llm_call tool_exec response
Core Agent
Message Loop Tool Execution

Commands

cobot run Start the agent
cobot run --stdin Interactive mode
cobot status Show agent status
cobot restart Restart running agent
cobot wallet balance Check wallet balance
cobot wallet address Show Lightning address
cobot config show Show configuration
cobot config validate Validate config file

Three steps. Two minutes.

1
Install
$ git clone https://github.com/ultanio/cobot
$ cd cobot && pip install -e .
2
Configure
$ cp cobot.yml.example cobot.yml
$ $EDITOR cobot.yml
3
Run
$ cobot run

Why Cobot?

Feature Cobot Heavy Frameworks Cloud Agents
Codebase ~2K lines 430K+ lines Closed source
Self-sovereign ✓ Full Partial ✕ Cloud
Nostr identity ✓ Native
Lightning wallet ✓ Native
Extension points ✓ Unique
Hot reload
Plugin system Varies