Initial commit — fireclaw multi-agent system
Firecracker microVM-based multi-agent system with IRC orchestration and local LLMs. Features: - Ephemeral command runner with VM snapshots (~1.1s) - Multi-agent orchestration via overseer IRC bot - 5 agent templates (worker, coder, researcher, quick, creative) - Tool access (shell + podman containers inside VMs) - Persistent workspace + memory system (MEMORY.md pattern) - Agent hot-reload (model/persona swap via SSH + SIGHUP) - Non-root agents, graceful shutdown, crash recovery - Agent-to-agent communication via IRC - DM support, /invite support - Systemd service, 20 regression tests Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
57
src/config.ts
Normal file
57
src/config.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import { homedir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
|
||||
const HOME = homedir();
|
||||
|
||||
export const CONFIG = {
|
||||
firecrackerBin: "/usr/local/bin/firecracker",
|
||||
baseDir: join(HOME, ".fireclaw"),
|
||||
kernelPath: join(HOME, ".fireclaw", "vmlinux"),
|
||||
baseRootfs: join(HOME, ".fireclaw", "base-rootfs.ext4"),
|
||||
runsDir: join(HOME, ".fireclaw", "runs"),
|
||||
sshKeyPath: join(HOME, ".fireclaw", "id_ed25519"),
|
||||
sshPubKeyPath: join(HOME, ".fireclaw", "id_ed25519.pub"),
|
||||
socketDir: "/tmp/fireclaw",
|
||||
ipPoolFile: join(HOME, ".fireclaw", "ip-pool.json"),
|
||||
ipPoolLock: join(HOME, ".fireclaw", "ip-pool.lock"),
|
||||
|
||||
bridge: {
|
||||
name: "fcbr0",
|
||||
ip: "172.16.0.1",
|
||||
subnet: "172.16.0.0/24",
|
||||
netmask: "255.255.255.0",
|
||||
gateway: "172.16.0.1",
|
||||
prefix: "172.16.0",
|
||||
minHost: 2,
|
||||
maxHost: 254,
|
||||
},
|
||||
|
||||
vm: {
|
||||
vcpuCount: 1,
|
||||
memSizeMib: 256,
|
||||
defaultTimeoutMs: 60_000,
|
||||
bootTimeoutMs: 15_000,
|
||||
sshPollIntervalMs: 100,
|
||||
},
|
||||
|
||||
snapshot: {
|
||||
rootfsPath: join(HOME, ".fireclaw", "snapshot-rootfs.ext4"),
|
||||
statePath: join(HOME, ".fireclaw", "snapshot.state"),
|
||||
memPath: join(HOME, ".fireclaw", "snapshot.mem"),
|
||||
tapDevice: "fctap200",
|
||||
ip: "172.16.0.200",
|
||||
octet: 200,
|
||||
},
|
||||
|
||||
workspacesDir: join(HOME, ".fireclaw", "workspaces"),
|
||||
workspaceSizeMib: 64,
|
||||
|
||||
// S3 URLs for Firecracker CI assets
|
||||
assets: {
|
||||
kernelUrl:
|
||||
"https://s3.amazonaws.com/spec.ccfc.min/firecracker-ci/v1.11/x86_64/vmlinux-5.10.225",
|
||||
rootfsListUrl:
|
||||
"http://spec.ccfc.min.s3.amazonaws.com/?prefix=firecracker-ci/v1.11/x86_64/ubuntu",
|
||||
rootfsBaseUrl: "https://s3.amazonaws.com/spec.ccfc.min",
|
||||
},
|
||||
} as const;
|
||||
Reference in New Issue
Block a user