Skip to content

daeuniverse/dae-wing

Repository files navigation

dae-wing

A lightweight GraphQL API wrapper for dae — the high-performance eBPF-based proxy solution.

License Go Version Release GitHub Stars


✨ 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:

  1. Open GraphQL Playground
  2. Set endpoint to http://localhost:2023/graphql
  3. 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

About

dae-wing is a backend of dae, provides a method to bundle arbitrary frontend and dae into one binary.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 14