clawdie-ai/README-CLAWDIE.md
2026-03-08 09:43:33 +01:00

13 KiB

Clawdie - Personal AI Assistant on FreeBSD

Clawdie for FreeBSD 15 with the Warden runtime on native jails

FreeBSD Jail Runtime ZFS

Overview

Clawdie is a lean personal AI assistant for FreeBSD 15 with the Warden runtime on native FreeBSD jails instead of Docker. It builds on NanoClaw's minimal design, then replaces Linux-container assumptions with FreeBSD-native runtime choices.

Key Features:

  • 🏠 Native FreeBSD - No Linux emulation, no Docker overhead
  • 🔒 Jail Isolation - Secure OS-level containers with ZFS snapshots
  • 🛡️ Warden Runtime - Clawdie's isolated execution layer on top of FreeBSD jails
  • Better Performance - Single layer: FreeBSD → Jail → Node.js
  • 💾 ZFS Integration - Snapshots, quotas, compression
  • 📊 Online Documentation - Live docs at domedog.pro

Architecture Decision: Jails vs Docker

We chose FreeBSD jails over Docker for:

Aspect Docker on FreeBSD FreeBSD Jails
Performance Good (emulation overhead) Excellent (native)
Layers FreeBSD → Linux → Docker FreeBSD → Jail
Security Good Excellent
Networking Docker bridge Native IP
Complexity High Low
ZFS Integration Manual Native

Result: Simpler, faster, more secure.

Warden Runtime

Clawdie uses Warden as the project name for its isolated execution layer.

  • FreeBSD jail: the native isolation primitive
  • Bastille: the host-side jail manager
  • Warden runtime: Clawdie's jailed agent execution model

See Warden Runtime for the naming model.

Current Setup

System Information

Component Value
OS FreeBSD 15.0-RELEASE
Hostname osa
Architecture amd64 (x86_64)
Runtime FreeBSD Jail (native)
Node.js v24+ (via pkg or nvm)
Python 3.12.12 + uv package manager
Filesystem ZFS
User clawdie

ZFS Layout

NAME                       USED  AVAIL  REFER  MOUNTPOINT
zroot                     6.01G  89.4G   424K  none
zroot/ROOT                5.83G  89.4G   424K  none
zroot/ROOT/default        5.83G  89.4G  4.90G  /
zroot/home                 152M  89.4G   156K  /home
zroot/home/clawdie         152M  89.4G   152M  /home/clawdie
zroot/tmp                 3.07M  89.4G  3.07M  /tmp
zroot/var                 11.8M  89.4G   424K  /var

Jail Configuration (Planned)

Jail: clawdie
├── Hostname: ai.clawdie.si
├── IP: 192.168.1.xxx
├── Path: /jails/clawdie
├── Mounts:
│   ├── /home/clawdie/clawdie-cp (ro)
│   └── /home/clawdie/.config/clawdie-cp (rw)
└── Resources:
    ├── Memory: 2G max
    ├── CPU: 2 cores
    └── Processes: 1000 max

Installation

Prerequisites

  • FreeBSD 15.0-RELEASE
  • ZFS root installation
  • Root access or sudo
  • Domain: clawdie.si (registered 28.02.2026)

Quick Start

# 1. Clone your fork
git clone https://codeberg.org/Clawdie/Clawdie-AI.git /home/clawdie/clawdie-cp
cd /home/clawdie/clawdie-cp

# 2. Install dependencies
pkg install node24 npm git python312 py312-uv

# 3. Install project dependencies
npm install

# 4. Install the default PI TUI engine
npm install -g @mariozechner/pi-coding-agent

# 5. Copy environment template
cp .env.example .env

# 6. Add your provider key to .env (default: OPENROUTER_API_KEY)

# 7. Setup
npm run setup

See these docs for the current host-side jail plan:

Quick jail setup:

# Create ZFS datasets for jail
sudo zfs create -o mountpoint=/jails zroot/jails
sudo zfs create zroot/jails/clawdie
sudo zfs create zroot/jails/clawdie/home

# Create jail configuration
sudo vi /etc/jail.conf.d/clawdie.conf

# Start jail
sudo service jail start clawdie

# Install Node.js inside jail
sudo pkg -j clawdie install node20 npm git

Applied Skills

This installation includes the following Clawdie skills and customizations:

Skill Description
/add-telegram Telegram channel support
/add-voice-transcription Whisper voice note transcription
/add-gmail Gmail integration
/add-slack Slack channel support
/add-discord Discord channel support
/add-telegram-swarm Agent swarm teams in Telegram
/x-integration X (Twitter) posting/replying
/qodo-pr-resolver AI-powered PR review
/get-qodo-rules Load coding rules from Qodo

Configuration Differences From Upstream

Setting NanoClaw Default Clawdie Custom
Main channel WhatsApp Telegram
Date format en-US locale de-DE locale (European)
Memory Local files Supabase (planned)
Identity None SOUL.md + IDENTITY.md
Operator console Logs only tmux glass-pane
Runtime Docker FreeBSD Jail

Documentation

Live Documentation

Local Documentation

Testing

Jail Validation Tests

We have comprehensive tests to ensure the FreeBSD jail runtime behaves as expected:

# Run jail validation tests
npm test src/freebsd-jail.test.ts

# Run jail runtime tests
npm test src/jail-runtime.test.ts

# Run jail configuration tests
npm test src/jail-config.test.ts

# Run all tests
npm test

What Tests Validate

  • Linux emulation is disabled
  • Running inside a jail
  • Jail configuration exists
  • Native FreeBSD syscalls (no emulation)
  • Proper jail security isolation
  • Resource limits configured

Development

File Structure

/home/clawdie/clawdie-cp/
├── src/
│   ├── jail-runtime.ts          # Jail detection and management
│   ├── jail-runtime.test.ts     # Jail runtime tests
│   ├── jail-config.ts           # Jail configuration generation
│   ├── jail-config.test.ts      # Jail config tests
│   ├── freebsd-jail.test.ts     # Comprehensive jail validation
│   ├── index.ts                 # Main entry point
│   └── ...
├── docs/
│   ├── FREEBSD-JAIL-IMPLEMENTATION.md  # Jail setup guide
│   ├── NANOCLAW-TO-CLAWDIE.md          # Version tracking
│   └── ...
├── .agent/skills/               # Applied skills
├── skills-engine/                # Skills management
└── package.json

Key Files Modified From Upstream

File Change
src/index.ts Channel routing for Telegram, Gmail, Slack, Discord
src/config.ts Channel configurations
jail/agent-runner/src/index.ts Voice transcription, Gmail tools
AGENTS.md European date format, custom rules

Added Files (Not in Upstream)

src/channels/telegram.ts
src/channels/gmail.ts
src/channels/slack.ts
src/channels/discord.ts
src/jail-runtime.ts
src/jail-config.ts
src/freebsd-jail.test.ts
skills-engine/
.agent/skills/add-telegram/
.agent/skills/add-gmail/
.agent/skills/add-slack/
.agent/skills/add-discord/
.agent/skills/add-telegram-swarm/
.agent/skills/add-voice-transcription/
.agent/skills/x-integration/
.agent/skills/qodo-pr-resolver/
.agent/skills/get-qodo-rules/

Version Tracking

State is tracked in .nanoclaw/state.json:

{
  "version": "1.0.0",
  "base_commit": "abc123...",
  "applied_skills": [
    {
      "name": "add-telegram",
      "applied_at": "2026-02-28T10:00:00Z",
      "file_hashes": { ... }
    }
  ]
}

Current Version: v0.6 (06.03.2026)

Update Process

To pull upstream NanoClaw changes while preserving Clawdie customizations:

# Add upstream remote (one-time)
git remote add upstream https://github.com/openclaw/nanoclaw

# Check for updates
npm run update:preview

# Apply updates (skills engine handles merge)
npm run update

The skills engine automatically rebases your customizations onto the new base.

Security

Jail Security Features

  • Devfs Ruleset 4 - Basic devices only (null, zero, random)
  • No host filesystem access - Isolated from /home/clawdie on host
  • Network isolation - Own IP, no access to host network stack
  • Resource limits - Memory, CPU, and process limits
  • ZFS quotas - Disk space limits per jail

Attack Surface Reduction

Surface Upstream NanoClaw Clawdie on FreeBSD
Runtime Docker daemon None (native jails)
Emulation layer Linux compat None
Extensions 34+ 10 (curated)
Channels 13+ available 4 (Telegram, Gmail, Slack, Discord)

See SECURITY.md for full security model.

Future Plans

Git Hosting

  • Current: codeberg.org/Clawdie/Clawdie-AI
  • Planned: git.clawdie.si (self-hosted)
  • Strategy: Mirror to both locations

Roadmap

MVP (Current - v0.6)

  • FreeBSD 15 setup
  • ZFS configuration
  • Jail implementation design
  • Tests for jail validation
  • Jail creation and deployment
  • Telegram working
  • tmux glass-pane working

v0.7 (Next)

  • Self-hosted git.clawdie.si
  • clawdie.si landing page
  • Supabase memory integration
  • Jail snapshots and backup strategy

v1.0

  • 2+ weeks stable operation
  • Browser automation (Playwright in jail)
  • Memory system reliable
  • Security audit

Contributing

This is the active Clawdie project for FreeBSD. For upstream contributions:

For Clawdie-specific issues, use Codeberg issues.

License

Same as upstream NanoClaw (check LICENSE file).


Clawdie · clawdie.si · built on NanoClaw

Last updated: 06.03.2026 - v0.6