dae-wing
November 29, 2025 ยท View on GitHub
A lightweight GraphQL API wrapper for dae โ the high-performance eBPF-based proxy solution.
โจ Features
- ๐ GraphQL API โ Modern, type-safe API for managing dae
- ๐ Hot Reload โ Switch configs without restarting
- ๐ฆ Subscription Management โ Import and manage proxy subscriptions
- ๐ณ Docker Ready โ Easy deployment with Docker/Docker Compose
- ๐ Extensible โ Perfect backend for building custom dashboards
๐ Prerequisites
| Dependency | Version | Required |
|---|---|---|
| Go | >= 1.22 | โ |
| Clang | >= 15 | โ |
| LLVM | >= 15 | โ |
| Git | Latest | โ |
| Docker | Latest | Optional |
๐ Quick Start
Clone the Repository
git clone https://github.com/daeuniverse/dae-wing
cd dae-wing
git submodule update --init --recursive
Run Locally
API Only Mode (for development):
make deps
go run . run -c ./ --api-only
Full Mode (with dae proxy):
make deps
go run -exec sudo . run
Run with Docker
Pull the prebuilt image:
docker pull ghcr.io/daeuniverse/dae-wing
Or build from source:
# Using Docker Compose (recommended)
docker compose up -d
# Or using Docker CLI
docker build -t dae-wing .
docker run -d \
--privileged \
--network=host \
--pid=host \
--restart=always \
-v /sys:/sys \
-v /etc/dae-wing:/etc/dae-wing \
--name=dae-wing \
dae-wing
๐ API Documentation
dae-wing uses GraphQL for its API.
Export Schema
go build -o dae-wing
./dae-wing export schema > schema.graphql
GraphQL Playground
Use GraphQL Playground for interactive API exploration:
- Open GraphQL Playground
- Set endpoint to
http://localhost:2023/graphql - Explore the schema and test queries
Export Config Outline
./dae-wing export outline > outline.json
๐ก Tip: Use dae-outline2config to convert outlines to dae config format.
๐๏ธ Architecture
Config
Configs include global, dns, and routing sections from dae.
- Multiple Configs โ Switch between different configurations
- Shared Resources โ Nodes, subscriptions, and groups are shared across configs
- Hot Reload โ Selecting a new config automatically reloads dae
Subscription
A subscription contains:
- Source link (URL)
- Collection of resolved nodes
Node
Nodes represent proxy profiles imported via links. They can exist:
- Independently (manually added)
- Within subscriptions (auto-imported)
โ ๏ธ Nodes are deduplicated by link within the same collection.
Group
Groups serve as routing outbounds with:
- A collection of subscriptions and nodes
- Node selection policy for connections
- Preserved nodes during subscription updates
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
๐ License
This project is licensed under the AGPL-3.0 License.
Made with โค๏ธ by the dae universe team