VVM Skill

SkillAI & models

VVM (Vibe Virtual Machine) is a language for agentic programs where the LLM is the runtime.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the VVM Skill skill

What this skill tells your AI

The instructions your AI receives, as published by karanchawla/vvm in skills/vvm/SKILL.md and read by ahel’s review.

VVM (Vibe Virtual Machine) is a language for writing agentic programs where the LLM acts as the runtime.


When to Activate

Activate this skill when:

  1. User runs /vvm-boot, /vvm-compile, /vvm-run, /vvm-run-inspect, /vvm-registry-inspect, or /vvm-generate
  2. User opens or references a .vvm file
  3. User asks about VVM syntax, semantics, or patterns
  4. User wants to create an AI-powered workflow

Documentation Files

FileRoleWhen to Read
SKILL.mdQuick reference, triggersAlways first
vvm.mdExecution semanticsWhen running programs
spec.mdLanguage specificationFor syntax/validation questions
memory-spec.mdAgent memory (portable)When using persistent agents
patterns.mdDesign patternsWhen writing programs
antipatterns.mdAnti-patternsWhen reviewing programs

Quick Reference

Agent Definition

agent researcher(
  model="sonnet",
  prompt="thorough, cite sources",
  skills=["web-search"],
  permissions=perm(network="allow", bash="deny"),
)

Agent Call

result = @researcher `Find papers on {topic}.`(topic)
result = @researcher `Summarize.`(topic, retry=3, timeout="30s")

Agent Memory

agent assistant(model="sonnet", prompt="Helpful.", memory={ scope: "project", key: "user:alice" })
reply = @assistant `Continue.`(request)  # default: memory_mode="continue"
dry = @assistant `Read-only run.`(request, memory_mode="dry_run")
fresh = @assistant `Stateless run.`(request, memory_mode="fresh")

Semantic Predicate

ready = ?`production ready`(code)

if ?`needs more work`(draft):
  draft = @writer `Improve.`(draft)

Pattern Matching

match result:
  case ?`high quality`:
    publish(result)
  case error(kind="timeout"):
    result = @backup `Retry.`(request)
  case error(_):
    log_error(result)
  case _:
    pass

Choice

choose analysis by ?`best approach` as choice:
  option "quick":
    plan = @planner `Minimal plan.`()
  option "thorough":
    plan = @planner `Full plan.`()

Control Flow

# If/elif/else
if condition:
  do_something()
elif other:
  do_other()
else:
  do_default()

# While loop
while not ?`done`(result):
  result = @worker `Improve.`(result)

# For loop
for item in items:
  process(item)

Context Passing

# Implicit input (it)
with input data:
  result = @agent `Process.`()  # uses it == data

# Explicit input
result = @agent `Process.`(data)

Functions

def analyze(topic):
  research = @researcher `Find info on {topic}.`(topic)
  return @analyst `Analyze.`(research)

result = analyze("AI safety")

Error Handling

# Error values (match)
match result:
  case error(_):
    handle_error(result)

# Raised errors (try/except)
try:
  if ?`invalid`(input):
    raise "Invalid input"
except as err:
  log(err)
finally:
  cleanup()

Constraints

draft = @writer `Write report.`(data)

constrain draft(attempts=3):
  require ?`has citations`
  require ?`no hallucinations`

Imports/Exports

# Skill imports
import "web-search" from "github:anthropic/skills"

# Module value imports (agents are local)
from "./lib/research.vvm" import report

# Callable module import
from "./lib/research.vvm" import * as research
result = research(topic="AI", depth="deep")
report = result.report

# Exports (values only)
export result
export summary

Standard Library

# Parallel map
results = pmap(items, process)

# Sequential map/filter/reduce
mapped = map(items, transform)
filtered = filter(items, predicate)
def add(a, b):
  return a + b
total = reduce(items, add, init=0)

# Iterative refinement
final = refine(initial, max=5, done=is_ready, step=improve)

# Named fan-in
ctx = pack(research, analysis, topic=topic)

# Range
for i in range(10):
  process(i)

Examples

#NameConcepts
01hello-worldMinimal program
02simple-agent-callAgent with input
03semantic-predicate? predicates
04match-statementPattern matching
05if-elif-elseConditionals
06while-loopWhile loops
07for-loopFor loops
08with-inputContext passing
09agent-optionsretry, timeout, backoff
10code-council.with() derived agents
11parallel-pmapParallel execution
12functionsdef and return
13skill-importsSkill imports
14module-importsModule imports
15error-valuesError value matching
16try-except-finallyRaised errors
17choose-statementAI-selected branching
18constrain-requireQuality constraints
19refine-loopIterative improvement
20collection-helpersmap, filter, reduce
21devils-advocateAdversarial debate
22full-research-pipelineComplex workflow
23ralph-wiggum-loopContinuous improvement
24agent-memory-basicMemory binding + digest/ledger
25agent-memory-modesmemory_mode: continue/dry_run/fresh
26agent-memory-multi-tenantPer-key isolation
27agent-memory-parallel-safepmap-safe persistence
28ref-compositionRef composition patterns
29ref-loop-accumulationAccumulating refs in loops
30materializer-patternMaterializing refs
31run-inspectorInspecting run state
32ouroborosSelf-modifying workflow
33wisdom-of-crowdsEnsemble voting
34hydraMulti-headed agents
35forgeAgent factory
36inputsInput declarations
37debateModule composition

Commands

/vvm-boot

Initialize VVM for new or returning users. Detects existing files and provides onboarding.

/vvm-compile <file.vvm>

Validate a VVM program without executing. Reports errors and warnings with line numbers.

/vvm-run <file.vvm>

Execute a VVM program. You become the VVM runtime and execute statements sequentially, spawning subagents for agent calls.

/vvm-run-inspect

Inspect run state from filesystem, SQLite, or Postgres backends without re-running the workflow.

/vvm-registry-inspect <@handle/slug|https://...>

Inspect a remote module contract and cache metadata without executing the workflow.

/vvm-generate

Generate a VVM program from a natural language description. Analyzes intent, maps to VVM constructs, applies best practices, and produces well-structured code. Asks clarifying questions if the request is ambiguous.


Key Principles

  1. Minimal syntax - Familiar indentation-based blocks
  2. Explicit AI boundary - Agent calls are syntactically distinct (@agent)
  3. Eager execution - No lazy evaluation, sequential by default
  4. Semantic control flow - Branch on meaning, not just booleans
  5. Two error channels - Values (match) vs raised (try/except)
  6. Explicit parallelism - Only pmap runs concurrently

Signals

GitHub stars
60
Forks
39
Last commit
Mar 2026
Advanced
Catalog kind
skill
Gateway key
vvm
Source
github.com/karanchawla/vvm