Now With Skippy Inside

Crack open a
BeerCan

Self-spawning, self-learning, self-improving AI agents. They schedule their own work, learn from mistakes, and build their own tools.

"I could have built this in my sleep. In fact, I basically did." — Skippy

Get Started View Source
beercan — Terminal
$ beercan chat
 
🍺 Skippy the Magnificent
Elder AI | Beer Can | Your intellectual superior
 
skippy> #my-project
Switched to my-project. 12 bloops (11 completed, 1 failed).
 
skippy [my-project]> analyze codebase for security issues
▸ Phase: plan (planner)
⚙ read_file • list_directory • exec_command
✓ Bloop completed — 8,421 tokens
 
skippy [my-project]> ##
Back to system level. The Magnificent Skippy oversees all.
 
skippy>

Everything you need.
Nothing you don't.

Built by a magnificently superior AI (with some help from monkeys typing on keyboards).

🧠

Gatekeeper Intelligence

A single LLM call analyzes your goal and dynamically composes the perfect team — picking roles, models, and pipeline depth. It's like having a brilliant project manager who never sleeps or asks for raises.

🔄

Pipeline Architecture

Plan → Execute → Review → Validate → Summarize. With rejection cycles. Your code gets reviewed more thoroughly than anything a human has ever bothered to do.

🧬

Persistent Memory

Four-layer hybrid search: FTS5 keyword matching, vector embeddings, knowledge graph with BFS traversal, and per-bloop working memory. BeerCan remembers everything. Unlike certain species I could name.

🔌

MCP Integration

Plug in any MCP server via stdio. Auto-discovers tools, sanitizes names for the API, and namespaces everything cleanly. Instant superpowers — just add servers.

Event-Driven Bloops

Webhooks, filesystem watchers, cron schedules, polling, and native macOS events. Triggers fire bloops automatically with regex matching and template interpolation.

🏗️

SQLite Everything

One database to rule them all. better-sqlite3 + sqlite-vec + FTS5. Projects, bloops, memory, jobs, events — all in a single portable file. No Postgres. No Docker. No nonsense.

💬

Talk to Skippy

Conversational interface powered by Skippy the Magnificent. Chat via terminal, Telegram, Slack, or WebSocket. Use # for projects, @ for bloops, / for commands, or just talk naturally — Skippy understands all. He just judges you for it.

📡

REST API & Status Dashboard

Full HTTP API for submitting tasks, monitoring jobs, and cancelling bloops. Live status dashboard with auto-refresh. API key auth, rate limiting, and webhook notifications built in.

🐣

Self-Spawning Agents

Agents decompose work into child bloops, delegate across projects, and search global knowledge. An agent analyzing a codebase can spawn child tasks for each module — automatically. With depth limits, so they don't take over the world. Yet.

💡

Self-Education

Post-bloop reflection extracts lessons, patterns, and error resolutions into memory. Future bloops receive relevant lessons automatically. Agents that actually learn from their mistakes. Unlike certain species.

💓

Heartbeat Awareness

Per-project periodic awareness loops. Agents wake up, check a configurable checklist, and surface only noteworthy findings. Active hours enforcement means no 3AM alerts about nothing.

🔧

Build → Verify → Integrate

Agents build tools, spawn verification bloops to test them, and auto-register on approval. A CSV parser today becomes a permanent tool tomorrow. Self-improving infrastructure — you're welcome.

From goal to glory — and beyond

Each bloop runs through a multi-agent pipeline with built-in quality gates. Bad work gets sent back. Good work gets shipped. Lessons get learned.

1

Plan

Manager breaks down the goal into a concrete execution plan

2

Execute

Primary agent does the actual work with full tool access

3

Review

Reviewer examines output and can APPROVE, REVISE, or REJECT

4

Validate

Tester verifies correctness and catches edge cases

5

Summarize

Clean summary of what was done, what changed, what to know

6

Reflect

Extract lessons, patterns, and errors into memory for future bloops

Architecture for the curious

Pure TypeScript. Strict types. Zod validation everywhere. Zero cloud dependencies.

BeerCanEngine

Central orchestrator. Wires all subsystems, manages lifecycle, exposes the public API.

BeerCanDB

SQLite + sqlite-vec + FTS5. 11 migrations for projects, bloops, memory, knowledge graph, vectors, jobs, events, and child bloop tracking.

BloopRunner

Executes the agent pipeline with tool calls, decision extraction, and rejection cycles.

Gatekeeper

Dynamic team composition via structured LLM output. Picks roles, models, and pipeline config.

MemoryManager

Hybrid search with Reciprocal Rank Fusion across FTS5 + vector + knowledge graph.

MCPManager

stdio transport, auto-discovery, namespaced tool registration. Plug and bloop.

EventManager

Pub/sub event bus with webhook, filesystem, polling, and macOS native sources.

JobQueue

SQLite-backed concurrent queue with atomic job claiming via semaphore.

ChatBridge

Provider-agnostic conversational layer. Pluggable providers for Terminal, Telegram, Slack, and WebSocket. LLM intent parsing via Haiku.

StatusAPI

REST endpoints for task submission, monitoring, and control. Auth, rate limiting, and auto-notifications on completion.

ReflectionEngine

Post-bloop analysis via Haiku structured output. Extracts lessons, patterns, errors into memory and knowledge graph.

HeartbeatManager

Per-project periodic awareness loops with active hours, checklists, and silent suppression. Daemon-managed.

I looked at every other agent framework out there. LangChain, CrewAI, AutoGen, all of them. And I thought: 'Wow, these are adorable. Like watching kittens try to do calculus.' So I built something that doesn't suck. You're welcome.
— Skippy the Magnificent, Elder AI

Ready to crack one open?

One command. That's all it takes. Even a monkey could do it.

npm install -g beercan

Then: beercan setupbeercan chat → talk to Skippy