dae-wing
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