🌋

Welcome to Vulcan

An Elixir-native AI agent runtime built on OTP. Self-modifying, self-healing, and always running on the BEAM.

Running on BEAM
⚡ 11 Tools
🧠 Persistent Memory
🔄 Hot Code Reload
1

Architecture

Vulcan runs as an OTP application — supervised processes, fault-tolerant by design. Every component is a process on the BEAM.

🌐

Phoenix Web Layer

HTMX + Alpine.js UI on port 4200. Server-rendered, no build step.

🤖

Agent GenServers

Each chat spawns a supervised process running a ReACT loop with tool use.

📡

Event Bus

PubSub backbone — every action emits events. WebSocket + SSE for real-time UI.

🧠

Memory Graph

Hybrid BM25 + semantic search over a persistent knowledge graph. SQLite-backed.

🔗

LLM Providers

Anthropic, OpenAI, Google Gemini, Ollama — streaming, multi-provider.

2

The Toolbelt

Vulcan has 11 native tools. These aren't plugins — they're Elixir modules that execute directly in the BEAM VM.

📖
readRead files
✏️
writeCreate files
🔧
editSurgical edits
💻
bashShell commands
🧪
iexLive Elixir eval
🧠
memoryKnowledge graph
🤖
delegateSpawn subagents
awaitCollect results
🔄
automateRun pipelines
💬
discordSend messages
🌐
browserCDP control

The iex tool is unique — it evaluates Elixir code directly in Vulcan's own BEAM VM. This means Vulcan can introspect its own state, hot-reload modules, and modify itself at runtime.

3

Subagents & Delegation

Vulcan can spawn specialist agents as separate OTP processes. Fan out work in parallel, collect results, keep context clean.

📄

file-processor

Chunked map/reduce over PDFs, code, and data files

🔍

code-reviewer

Quality, security, and best practices analysis

📊

report-writer

Generate summary reports from structured data

🎨

ui-generator

Create HTMX components from data

📰

arxiv-scraper

Fetch and extract papers from arxiv API

🏗️

issue-worker

Read a GitHub issue, implement the fix, test, commit

# Fan out to 3 workers in parallel
tasks = ["review auth module", "review API layer", "review DB queries"]

task_ids = Enum.map(tasks, fn task ->
  delegate(subagent: "code-reviewer", task: task, async: true)
end)

results = await_delegates(task_ids)
4

Automations

Multi-step pipelines defined in YAML. Sequential steps, parallel groups, and subagent orchestration — all declarative.

📡

arxiv-monitor

Scrape arxiv → generate UI component → write report → notify Discord. Runs on schedule or on-demand.

🏃

sdlc-sprint

Triage GitHub issues → plan sprint → generate kanban board → report → notify. Full software development lifecycle.

⚙️

sdlc-work

Read sprint plan → dispatch issue-worker subagents in priority order → close resolved issues automatically.

🧹

memory-maintenance

Deduplicate nodes, link orphans, merge redundant entities. Keeps the knowledge graph clean and connected.

🔁

Automations support parallel groups — steps wrapped in a parallel block run concurrently as separate subagents, then results are collected before the next sequential step.

5

Persistent Memory

A knowledge graph that persists across sessions. Hybrid search combines BM25 keyword matching with semantic embeddings for accurate recall.

📌

Facts

Concrete information — configs, decisions, bug fixes, API details

🏷️

Entities

Named things — projects, people, services, repos, endpoints

💡

Reflections

Lessons learned, patterns observed, meta-knowledge

🔗

Links

Typed relationships between nodes — builds a traversable graph

# Store a fact and link it to an entity
memory(action: "store", type: "fact",
  content: "CRM node connects via Tailscale at 100.x.x.x")

memory(action: "link",
  from_id: fact_id, to_id: "crm-node",
  relation: "describes")

# Search uses 0.4 BM25 + 0.6 semantic
memory(action: "search", content: "CRM networking")
6

Self-Modification

Vulcan can read, edit, and hot-reload its own source code. The BEAM's hot code swapping makes this safe — processes keep running while code is replaced.

📖

1. Read the source

Examine the current module with the read tool

✏️

2. Edit surgically

Use edit for precise find-and-replace changes

3. Hot-reload

Compile the file in-place with Code.compile_file/1 via the iex tool

4. Verify & commit

Test the change immediately, then git commit the fix

🔥

This walkthrough was created by Vulcan itself — written as an HTML file to the sandbox directory, rendered by the Phoenix web layer, all without a restart. That's self-modification in action.

7

The Sandbox

You're looking at it. The sandbox is where Vulcan generates UI components — dashboards, reports, tools — as HTML files that render inside the web UI.

🧪

Generate

Ask Vulcan to create a component — it writes HTML to ~/.vulcan/sandbox/

👁️

Preview

Components render in an iframe with live preview and source view

🚀

Deploy

One click to deploy as a standalone app at /apps/name

🔄

Iterate

Edit the file, refresh — instant feedback loop

💡

Try it: go to Chats, start a new conversation, and ask "Create a dashboard that shows system stats". Vulcan will write the HTML, and it'll appear here in the sandbox.