# trifid

trifid is an open-souce reimplementation of the [Defined Networking](https://defined.net) management protocol for [Nebula](https://github.com/slackhq/nebula) networks.

It includes a reimplementation of the [API Server](https://api.defined.net), the [Web UI](https://admin.defined.net), and `dnclient` - all fully compatible with the original implementation.

The API implementation is tested with the official dnclient implementaiton, and the dnclient implementation is tested with the official API server, to ensure complete feature parity between the two.

The original Web UI does **not** work with trifid-api quite yet, as we haven't finished reverse engineering that API. Feature table below:

# Features

trifid-api feature table:

| Feature                                     | trifid-api   | api.defined.net |
|---------------------------------------------|--------------|-----------------|
| Enroll in sites with dnclient               | Yes          | Yes             |
| Automatic config update polling by dnclient | Not yet      | Yes             |
| Group-based firewalling                     | Not yet      | Yes             |
| SSO authentication                          | Not yet      | Yes             |
| Extensive API documentation                 | In the works | No              |
| Open-source server                          | Yes          | No              |
| All functionality avaliable via API         | Yes          | No              |

tfclient feature table:

| Feature                                    | tfclient | dnclient |
|--------------------------------------------|----------|----------|
| Enroll in trifid-api/api.defined.net sites | Not yet  | Yes      |
| Automatic VPN profile setup                | Not yet  | Yes      |
| CLI for using the full API                 | Not yet  | No       |

