Skip to content

Repository files navigation

AgentPad

Visual agentic workflow builder — design, run, and debug LLM-powered agent pipelines with a drag-and-drop canvas.

AgentPad

What it does

  • Visual DAG editor — drag LLM, Tool, Condition, and Output nodes onto the canvas, wire them with edges
  • Multi-provider LLM — routes to OpenAI (gpt-4o, gpt-4o-mini, etc.) or local Ollama (llama3, qwen2.5, gemma2) based on model name
  • Real-time execution — hit Run and watch nodes light up as the DAG executes via SSE streaming
  • Tool registry — web search, HTTP requests, code runner, file I/O
  • Save & load — persist workflows to SQLite, pick from saved workflows via the modal

Architecture

┌─────────────────────────────────────────────┐
│                  Frontend                    │
│  SolidJS + @dschz/solid-flow + Tailwind v4  │
│  Vite dev server (:5173) → proxies /api     │
└─────────────────┬───────────────────────────┘
                  │ HTTP + SSE
┌─────────────────▼───────────────────────────┐
│                  Backend                     │
│  FastAPI + SQLAlchemy + aiosqlite            │
│  • Workflow CRUD  • DAG executor             │
│  • LLM router (OpenAI / Ollama)             │
│  • Tool registry  • SSE execution stream     │
│  Uvicorn (:8000)                             │
└─────────────────┬───────────────────────────┘
                  │
           ┌──────▼──────┐
           │   SQLite     │
           │  (default)   │
           └─────────────┘

Quick Start

Prerequisites

  • Python 3.12+
  • Node.js 20+
  • (Optional) OpenAI API key for GPT models
  • (Optional) Ollama running locally for local models

Backend

cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

# Set your LLM keys (optional — Ollama works without an API key)
export OPENAI_API_KEY=sk-...

python -m uvicorn app.main:app --host 127.0.0.1 --port 8000

Frontend

cd frontend
npm install
npm run dev -- --port 5173 --host 127.0.0.1

Open http://localhost:5173 — the frontend proxies /api requests to the backend.

Docker Compose (alternative)

docker compose up

Backend on :8000, frontend on :3000.

Usage

  1. Drag nodes from the left palette onto the canvas (LLM Call, Tool, Condition, Output)
  2. Wire edges by dragging from a node's output handle to another node's input handle
  3. Edit properties — click a node to configure model, prompt, temperature, tool, etc.
  4. Save your workflow to the database
  5. Run — the DAG executor processes nodes in topological order, streaming status updates via SSE
  6. Monitor execution progress in real-time in the bottom-right Execution panel

Demo Workflows

Three pre-built workflows are seeded into the database:

Workflow Nodes Description
Research Agent LLM → Tool → LLM → Output Research a topic via web search, then summarize findings
Code Reviewer LLM → Condition → LLM/Output Analyze code, branch on whether issues were found
Data Pipeline Tool → LLM+LLM → LLM → Output Fetch data, extract insights + flag anomalies, generate report

Tech Stack

Backend: Python 3.12 · FastAPI · SQLAlchemy 2.0 (async) · aiosqlite · Pydantic v2 · httpx · openai · sse-starlette

Frontend: SolidJS · @dschz/solid-flow (xyflow for Solid) · Tailwind CSS v4 · Vite · TypeScript

Database: SQLite (upgrade path to PostgreSQL)

Project Structure

agentpad/
├── backend/
│   ├── app/
│   │   ├── main.py            # FastAPI app + CORS
│   │   ├── config.py          # Settings (DB path, API keys)
│   │   ├── db/
│   │   │   ├── models.py      # SQLAlchemy models
│   │   │   └── session.py    # Async session factory
│   │   ├── routers/
│   │   │   ├── workflows.py   # CRUD endpoints
│   │   │   ├── execute.py     # SSE execution stream
│   │   │   └── tools.py       # Tool registry
│   │   ├── engine/
│   │   │   ├── dag.py         # Topological sort + cycle detection
│   │   │   ├── context.py     # Execution context (node I/O passing)
│   │   │   └── executor.py    # DAG executor (async generator)
│   │   └── llm/
│   │       ├── router.py      # Model → provider routing
│   │       ├── openai_provider.py
│   │       └── ollama_provider.py
│   └── pyproject.toml
├── frontend/
│   ├── src/
│   │   ├── App.tsx
│   │   ├── api/client.ts      # Fetch wrapper
│   │   ├── components/
│   │   │   ├── Canvas.tsx      # SolidFlow canvas + drag-drop
│   │   │   ├── NodePalette.tsx # Draggable node list
│   │   │   ├── NodeEditor.tsx  # Property editor panel
│   │   │   ├── ExecutionMonitor.tsx
│   │   │   ├── Toolbar.tsx
│   │   │   └── WorkflowPicker.tsx  # Load modal
│   │   ├── nodes/
│   │   │   ├── LLMNode.tsx
│   │   │   ├── ToolNode.tsx
│   │   │   ├── ConditionNode.tsx
│   │   │   └── OutputNode.tsx
│   │   └── stores/
│   │       ├── workflow.ts     # SolidJS reactive store
│   │       └── execution.ts    # SSE execution state
│   └── package.json
├── docker-compose.yml
└── LICENSE

License

MIT

About

Visual agentic workflow builder — design, run, and debug LLM-powered agent pipelines with a drag-and-drop canvas

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages