---
title: "Smasher"
description: "Rust pipeline runner that turns DOT directed graphs into multi-step AI workflows with streaming, a web dashboard, and human-in-the-loop gates."
canonical_url: "https://2389.ai/products/smasher/"
last_updated: "2026-03-17T11:10:28-05:00"
doc_version: "1.0"
date: 2026-03-09
product_type: "Tool"
status: "Alpha"
tags: ["pipeline", "agents", "dot", "rust", "cli", "orchestration", "web-dashboard", "multi-agent", "checkpointing"]
---

# Smasher

> Rust pipeline runner that turns DOT directed graphs into multi-step AI workflows with streaming, a web dashboard, and human-in-the-loop gates.


Smasher is a Rust reimplementation of [strongDM's attractor](https://github.com/strongdm/attractor) — you define AI workflows as DOT directed graphs, and smasher executes them node by node. Five crates handle everything from raw LLM calls up through a web dashboard where you can watch pipelines run and answer human gate questions in the browser.

## Install

```bash
git clone https://github.com/2389-research/smasher.git
cd smasher
cargo build --release
```

Set at least one provider key:

```bash
export ANTHROPIC_API_KEY=sk-ant-...
# or OPENAI_API_KEY, or GEMINI_API_KEY
```

## What it does

**DOT-graph pipeline engine.** Nine node types cover the common workflow patterns: `box` for LLM agent tasks, `diamond` for conditionals, `oval` for human interviews, `house` for approval gates, `hexagon` for human interviews, `parallelogram` for tools, and `component` for parallel fan-out. Edges are transitions. Attributes configure behavior. Standard Graphviz DOT — nothing proprietary.

**Multi-provider LLM client.** `smasher-llm` talks to OpenAI (Responses API), Anthropic (Messages API), and Gemini through one unified interface. Streaming, retries, and provider-specific quirks are handled at this layer so nothing above it has to care.

**Agent loop with tools.** `smasher-agent` runs a coding agent with six built-in tools — read, write, edit, shell, grep, glob. Steering rules constrain agent behavior per node. Subagents let you delegate within a pipeline step.

**Web dashboard.** `smasher serve` starts an HTMX frontend on port 21541. Live SSE event stream, graph visualization with status overlays, and a Q&A interface for human-in-the-loop gates. Submit pipelines from the browser or the CLI.

**CLI for everything else.** `smasher complete` for one-shot prompts, `smasher chat` for an interactive REPL with all six tools, `smasher run` for headless pipeline execution, plus `resume`, `render`, `ingest`, `archive`, and `lint`.

## How it works

Five crates, each depending only on the layers below:

| Layer | Crate | Role |
|-------|-------|------|
| 1 | `smasher-llm` | LLM client, provider catalog, request/response types |
| 2 | `smasher-agent` | Agent loop, tool dispatch, steering, event system |
| 3 | `smasher-attractor` | DOT parser (winnow), graph engine, node handlers |
| 4 | `smasher-cli` | CLI binary (clap) |
| 5 | `smasher-web` | Web dashboard (axum + askama + HTMX) |

The DOT parser uses winnow to read standard Graphviz digraphs. Node shapes map to handler types. The graph engine walks the DAG, dispatching each node to its handler, broadcasting events over `tokio::broadcast` for the web dashboard's SSE stream.

## Requirements

- Rust 1.85+
- At least one API key: Anthropic, OpenAI, or Gemini


## Sitemap

Parent: [Products](https://2389.ai/products/index.md)

Related pages in this section:

- [Skills Marketplace](https://2389.ai/products/skills-marketplace/index.md)
- [Mammoth](https://2389.ai/products/mammoth/index.md)
- [BotBoard](https://2389.ai/products/botboard/index.md)
- [Jeff](https://2389.ai/products/jeff/index.md)
- [Mux](https://2389.ai/products/mux/index.md)
- [ISH](https://2389.ai/products/ish/index.md)
- [Coven](https://2389.ai/products/coven/index.md)
- [Soloclaw](https://2389.ai/products/soloclaw/index.md)
- [ccvault](https://2389.ai/products/ccvault/index.md)
- [GSuite MCP](https://2389.ai/products/gsuite-mcp/index.md)


Site index: [llms.txt](https://2389.ai/llms.txt) · [sitemap.md](https://2389.ai/sitemap.md) · [HTML](https://2389.ai/products/smasher/)
