Skip to content

Latest commit

 

History

History
360 lines (273 loc) · 11.5 KB

File metadata and controls

360 lines (273 loc) · 11.5 KB

Migrating to LibreFang

This guide covers migrating from OpenClaw (and other frameworks) to LibreFang. The migration engine handles config conversion, agent import, memory transfer, channel re-configuration, and skill scanning.

Table of Contents


Quick Migration

Run a single command to migrate your entire OpenClaw workspace:

librefang migrate --from openclaw

This auto-detects your OpenClaw workspace at ~/.openclaw/ and imports everything into ~/.librefang/.

Options

# Specify a custom source directory
librefang migrate --from openclaw --source-dir /path/to/openclaw/workspace

# Dry run -- see what would be imported without making changes
librefang migrate --from openclaw --dry-run

Migration Report

After a successful migration, a migration_report.md file is saved to ~/.librefang/ with a summary of everything that was imported, skipped, or needs manual attention.

Other Frameworks

LangChain and AutoGPT migration support is planned:

librefang migrate --from langchain   # Coming soon
librefang migrate --from autogpt     # Coming soon

What Gets Migrated

Item Source (OpenClaw) Destination (LibreFang) Status
Config ~/.openclaw/config.yaml ~/.librefang/config.toml Fully automated
Agents ~/.openclaw/agents/*/agent.yaml ~/.librefang/agents/*/agent.toml Fully automated
Memory ~/.openclaw/agents/*/MEMORY.md ~/.librefang/agents/*/imported_memory.md Fully automated
Channels ~/.openclaw/messaging/*.yaml ~/.librefang/channels_import.toml Automated (manual merge)
Skills ~/.openclaw/skills/ Scanned and reported Manual reinstall
Sessions ~/.openclaw/agents/*/sessions/ Not migrated Fresh start recommended
Workspace files ~/.openclaw/agents/*/workspace/ Not migrated Copy manually if needed

Channel Import Note

Channel configurations (Telegram, Discord, Slack) are exported to a channels_import.toml file. You must manually merge the [channels] section into your ~/.librefang/config.toml.

Skills Note

OpenClaw skills (Node.js) are detected and listed in the migration report but not automatically converted. After migration, reinstall skills using:

librefang skill install <skill-name-or-path>

LibreFang automatically detects OpenClaw-format skills and converts them during installation.


Manual Migration Steps

If you prefer migrating by hand (or need to handle edge cases), follow these steps:

1. Initialize LibreFang

librefang init

This creates ~/.librefang/ with a default config.toml.

2. Convert Your Config

Translate your config.yaml to config.toml:

OpenClaw (~/.openclaw/config.yaml):

provider: anthropic
model: claude-sonnet-4-20250514
api_key_env: ANTHROPIC_API_KEY
temperature: 0.7
memory:
  decay_rate: 0.05

LibreFang (~/.librefang/config.toml):

[default_model]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
api_key_env = "ANTHROPIC_API_KEY"

[memory]
decay_rate = 0.05

[network]
listen_addr = "127.0.0.1:4545"

3. Convert Agent Manifests

Translate each agent.yaml to agent.toml:

OpenClaw (~/.openclaw/agents/coder/agent.yaml):

name: coder
description: A coding assistant
provider: anthropic
model: claude-sonnet-4-20250514
tools:
  - read_file
  - write_file
  - execute_command
tags:
  - coding
  - dev

LibreFang (~/.librefang/agents/coder/agent.toml):

name = "coder"
version = "0.4.0"
description = "A coding assistant"
author = "librefang"
module = "builtin:chat"
tags = ["coding", "dev"]

[model]
provider = "anthropic"
model = "claude-sonnet-4-20250514"

[capabilities]
tools = ["file_read", "file_write", "shell_exec"]
memory_read = ["*"]
memory_write = ["self.*"]

4. Convert Channel Configs

OpenClaw (~/.openclaw/messaging/telegram.yaml):

type: telegram
bot_token_env: TELEGRAM_BOT_TOKEN
default_agent: coder
allowed_users:
  - "123456789"

LibreFang (add to ~/.librefang/config.toml):

[channels.telegram]
bot_token_env = "TELEGRAM_BOT_TOKEN"
default_agent = "coder"
allowed_users = ["123456789"]

5. Import Memory

Copy any MEMORY.md files from OpenClaw agents to LibreFang agent directories:

cp ~/.openclaw/agents/coder/MEMORY.md ~/.librefang/agents/coder/imported_memory.md

The kernel will ingest these on first boot.


Config Format Differences

Aspect OpenClaw LibreFang
Format YAML TOML
Config location ~/.openclaw/config.yaml ~/.librefang/config.toml
Agent definition agent.yaml agent.toml
Channel config Separate files per channel Unified in config.toml
Tool permissions Implicit (tool list) Capability-based (tools, memory, network, shell)
Model config Flat (top-level fields) Nested ([model] section)
Agent module Implicit Explicit (module = "builtin:chat" / "wasm:..." / "python:...")
Scheduling Not supported Built-in ([schedule] section: reactive, continuous, periodic, proactive)
Resource quotas Not supported Built-in ([resources] section: tokens/hour, memory, CPU time)
Networking Not supported OFP protocol ([network] section)

Tool Name Mapping

Tools were renamed between OpenClaw and LibreFang for consistency. The migration engine handles this automatically.

OpenClaw Tool LibreFang Tool Notes
read_file file_read Noun-first naming
write_file file_write
list_files file_list
execute_command shell_exec Capability-gated
web_search web_search Unchanged
fetch_url web_fetch
browser_navigate browser_navigate Unchanged
memory_search memory_recall
memory_recall memory_recall
memory_save memory_store
memory_store memory_store
sessions_send agent_send
agent_message agent_send
agents_list agent_list
agent_list agent_list

New Tools in LibreFang

These tools have no OpenClaw equivalent:

Tool Description
agent_spawn Spawn a new agent from within an agent
agent_kill Terminate another agent
agent_find Search for agents by name, tag, or description
memory_store Store key-value data in shared memory
memory_recall Recall key-value data from shared memory
task_post Post a task to the shared task board
task_claim Claim an available task
task_complete Mark a task as complete
task_list List tasks by status
event_publish Publish a custom event to the event bus
schedule_create Create a scheduled job
schedule_list List scheduled jobs
schedule_delete Delete a scheduled job
image_analyze Analyze an image
location_get Get location information

Tool Profiles

OpenClaw's tool profiles map to explicit tool lists:

OpenClaw Profile LibreFang Tools
minimal file_read, file_list
coding file_read, file_write, file_list, shell_exec, web_fetch
messaging agent_send, agent_list, memory_store, memory_recall
research web_fetch, web_search, file_read, file_write
full All 10 core tools

Provider Mapping

OpenClaw Name LibreFang Name API Key Env Var
anthropic anthropic ANTHROPIC_API_KEY
claude anthropic ANTHROPIC_API_KEY
openai openai OPENAI_API_KEY
gpt openai OPENAI_API_KEY
groq groq GROQ_API_KEY
ollama ollama (none required)
openrouter openrouter OPENROUTER_API_KEY
deepseek deepseek DEEPSEEK_API_KEY
together together TOGETHER_API_KEY
mistral mistral MISTRAL_API_KEY
fireworks fireworks FIREWORKS_API_KEY

New Providers in LibreFang

Provider Description
vllm Self-hosted vLLM inference server
lmstudio LM Studio local models

Feature Comparison

Feature OpenClaw LibreFang
Language Node.js / TypeScript Rust
Config format YAML TOML
Agent manifests YAML TOML
Multi-agent Basic (message passing) First-class (spawn, kill, find, workflows, triggers)
Agent scheduling Manual Built-in (reactive, continuous, periodic, proactive)
Memory Markdown files SQLite + KV store + semantic search + knowledge graph
Session management JSONL files SQLite with context window tracking
LLM providers ~5 11 (Anthropic, OpenAI, Groq, OpenRouter, DeepSeek, Together, Mistral, Fireworks, Ollama, vLLM, LM Studio)
Per-agent models No Yes (per-agent provider + model override)
Security None Capability-based (tools, memory, network, shell, agent spawn)
Resource quotas None Per-agent token/hour limits, memory limits, CPU time limits
Workflow engine None Built-in (sequential, fan-out, collect, conditional, loop)
Event triggers None Pattern-matching event triggers with templated prompts
WASM sandbox None Wasmtime-based sandboxed execution
Python runtime None Subprocess-based Python agent execution
Networking None OFP (LibreFang Protocol) peer-to-peer
API server Basic REST REST + WebSocket + SSE streaming
WebChat UI Separate Embedded in daemon
Channel adapters Telegram, Discord Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Email
Skills/Plugins npm packages TOML + Python/WASM/Node.js, FangHub marketplace
CLI Basic Full CLI with daemon auto-detect, MCP server
MCP support No Built-in MCP server (stdio)
Process supervisor None Health monitoring, panic/restart tracking
Persistence File-based SQLite (agents survive restarts)

Troubleshooting

Migration reports "Source directory not found"

The migration engine looks for ~/.openclaw/ by default. If your OpenClaw workspace is elsewhere:

librefang migrate --from openclaw --source-dir /path/to/your/workspace

Agent fails to spawn after migration

Check the converted agent.toml for:

  • Valid tool names (see the Tool Name Mapping table)
  • A valid provider name (see the Provider Mapping table)
  • Correct module field (should be "builtin:chat" for standard LLM agents)

Skills not working

OpenClaw Node.js skills must be reinstalled:

librefang skill install /path/to/openclaw/skills/my-skill

The installer auto-detects OpenClaw format and converts the skill manifest.

Channel not connecting

After migration, channels are exported to channels_import.toml. You must merge them into your config.toml manually:

cat ~/.librefang/channels_import.toml
# Copy the [channels.*] sections into ~/.librefang/config.toml

Then restart the daemon:

librefang start