|
1 | 1 | # Waggle |
2 | 2 |
|
| 3 | +[](https://github.com/stacklok/waggle/actions/workflows/build.yml) |
| 4 | +[](https://github.com/stacklok/waggle/actions/workflows/test.yml) |
| 5 | +[](LICENSE) |
| 6 | +[](go.mod) |
| 7 | + |
| 8 | +> [!WARNING] |
| 9 | +> **Experimental** — Waggle is under active development. APIs, configuration, and behavior may change without notice. Use at your own risk and expect breaking changes between releases. |
| 10 | +
|
3 | 11 | An MCP server that gives AI agents their own isolated coding environments. Each environment is a real microVM — spin one up, write code, execute it, install packages, read results, tear it down. All through 8 simple MCP tools. |
4 | 12 |
|
5 | 13 | > The waggle dance is one of the most fascinating things in nature — bees encode distance, direction, and quality of resources in a figure-eight dance pattern. Waggle encodes execution environments, runs code, and communicates structured results back to the AI. |
6 | 14 |
|
| 15 | +## Table of Contents |
| 16 | + |
| 17 | +- [What It Looks Like](#what-it-looks-like) |
| 18 | +- [MCP Tools](#mcp-tools) |
| 19 | +- [Why MicroVMs](#why-microvms) |
| 20 | +- [Quick Start](#quick-start) |
| 21 | +- [Configuration](#configuration) |
| 22 | +- [Security](#security) |
| 23 | +- [Runtime Images](#runtime-images) |
| 24 | +- [Development](#development) |
| 25 | +- [Contributing](#contributing) |
| 26 | +- [License](#license) |
| 27 | + |
7 | 28 | ## What It Looks Like |
8 | 29 |
|
9 | 30 | When an AI agent connects to Waggle, it gets tools to create and use isolated environments. Here's a typical interaction: |
@@ -101,31 +122,29 @@ The trade-off is startup time (seconds vs milliseconds), but you get a real Linu |
101 | 122 |
|
102 | 123 | ## Quick Start |
103 | 124 |
|
| 125 | +### Prerequisites |
| 126 | + |
| 127 | +- [Go](https://go.dev/dl/) 1.26+ |
| 128 | +- [Task](https://taskfile.dev/) (`go install github.com/go-task/task/v3/cmd/task@latest`) |
| 129 | +- [GitHub CLI](https://cli.github.com/) (`gh`) — used to download the propolis runtime |
| 130 | +- KVM access on Linux (`/dev/kvm`) or Hypervisor.framework on macOS |
| 131 | + |
| 132 | +### Build and Run |
| 133 | + |
104 | 134 | ```bash |
105 | | -# Clone alongside propolis (required as sibling directory) |
106 | | -cd ~/Development/stacklok |
107 | 135 | git clone https://github.com/stacklok/waggle.git |
108 | | - |
109 | | -# Build |
110 | 136 | cd waggle |
111 | | -task build |
112 | | - |
113 | | -# Optional: override runtime images |
114 | | -# export WAGGLE_IMAGE_PYTHON=ghcr.io/stacklok/waggle/python:latest |
115 | | -# export WAGGLE_IMAGE_NODE=ghcr.io/stacklok/waggle/node:latest |
116 | | -# export WAGGLE_IMAGE_SHELL=ghcr.io/stacklok/waggle/shell:latest |
117 | | -task run |
| 137 | +task build # Downloads propolis runtime + firmware, builds a self-contained binary |
| 138 | +task run # Starts the MCP server |
118 | 139 | ``` |
119 | 140 |
|
120 | 141 | The server starts on `127.0.0.1:8080` with the MCP endpoint at `/mcp` (Streamable HTTP transport). |
121 | 142 |
|
122 | | -### Prerequisites |
| 143 | +Verify it's running: |
123 | 144 |
|
124 | | -- Go 1.25.7+, [Task](https://taskfile.dev/) |
125 | | -- [propolis](https://github.com/stacklok/propolis) checked out at `../propolis` |
126 | | -- `propolis-runner` binary in PATH (see propolis docs) |
127 | | -- libkrun (Linux: `libkrun-devel`, macOS: Homebrew) |
128 | | -- KVM access on Linux (`/dev/kvm`) or Hypervisor.framework on macOS |
| 145 | +```bash |
| 146 | +curl -s http://127.0.0.1:8080/healthz |
| 147 | +``` |
129 | 148 |
|
130 | 149 | ## Configuration |
131 | 150 |
|
@@ -208,6 +227,18 @@ task verify # Full CI gate (fmt + lint + test) |
208 | 227 |
|
209 | 228 | See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the DDD layer breakdown and [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md) for the full dev guide. |
210 | 229 |
|
| 230 | +## Contributing |
| 231 | + |
| 232 | +Contributions are welcome! Whether it's bug reports, feature requests, or pull requests — all contributions help. |
| 233 | + |
| 234 | +To get started with development: |
| 235 | + |
| 236 | +```bash |
| 237 | +task verify # Full CI gate: format, lint, test |
| 238 | +``` |
| 239 | + |
| 240 | +See [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md) for the full development guide, including how to add new MCP tools and runtimes. |
| 241 | + |
211 | 242 | ## License |
212 | 243 |
|
213 | | -Apache-2.0 — see [LICENSE](LICENSE). |
| 244 | +This project is licensed under the Apache 2.0 License — see the [LICENSE](LICENSE) file for details. |
0 commit comments