Documentation
Everything from quick starts to deep architectural references. Includes sections for Erlang/Elixir devs AND programmers from other ecosystems.
SOS.Support
Live DemoLive production deployment for Wholesale Computers and Technology. Handles tech support and sales calls 24/7 via goldclaw's markdown-compiled voice pipeline. 12,847 calls handled, 340ms avg response, 47 days uptime.
"We went from spending $12K/month on after-hours call center staff to running goldclaw 24/7 with three markdown files. Customers can't tell the difference -- actually, response times are faster now."
Wholesale Computers and Technology -- Operations Manager
Procedures define the vocabulary of your running system. Actions produce side effects, Queries are pure functions. Each maps a symbolic name to an Elixir module function.
# System Procedures
## Actions (Side Effects)
### Say
Speak text to the user.
**Implementation**: `NanobotPlugin.Actions.say/2`
**Params**: `text` (string)
**Runtime**: Groq TTS | ElevenLabs (hot-swap)
**Resample**: 24kHz -> 16kHz
**Cache**: common phrases pre-cached on boot
### Execute
Run a shell command in the workspace.
**Implementation**: `NanobotPlugin.Actions.execute/2`
**Params**: `command` (string)
**Sandbox**: yes | **Timeout**: 30s
## Queries (Pure Functions)
### Analyze
Analyze text for intent/sentiment.
**Implementation**: `NanobotPlugin.Queries.analyze/1`
**Returns**: `intent` (atom), `sentiment` (float)
**Model**: fine-tuned classifierTwo Kinds of Programmer Walk Into a Bar...
You Already Know This
If you know OTP, goldclaw is home. WORKFLOW.md compiles to gen_statem modules. PROCEDURES.md compiles to behaviour implementations. MODULES.md is your supervision tree.
Each state in your workflow becomes a handle_event/4 clause. Triggers become guard clauses. Transitions are {:next_state, atom(), data}. The MainBus is a gen_event manager.
You can drop down to raw Elixir at any point. Write a custom procedure, register it in PROCEDURES.md, done. The markdown is sugar, not a cage.
Key insight: goldrush compiles event queries to native BEAM modules for O(1) dispatch. goldclaw adds the markdown layer on top. Same performance, better DX.
Your Language is Reinventing the Wheel
Every "new" event streaming framework in JS/Python/Go is poorly reimplementing ideas that Erlang solved in the 1980s. The BEAM VM has been running telecom infrastructure for 30+ years.
Node.js has a single-threaded event loop. Python has the GIL. Go has goroutines but lacks supervision and fault isolation. The BEAM runs millions of lightweight processes with preemptive scheduling and per-process GC.
Want hot-reload? BEAM does it natively -- swap modules while the system runs. Want fault tolerance? Every process is supervised. Want concurrency? Millions of processes, no shared state.
The good news: You don't need to learn Erlang. Write markdown. goldclaw compiles it to BEAM bytecode. You get 30 years of telecom engineering for free.
goldclaw doesn't ask you to rewrite anything. Start with three markdown files. As you grow, drop into Elixir for custom procedures.