Map

asciimoth/ygg (Yggdrasil fork)

Wiki entitynetworkinggofork โ†ณ show in map Markdown
title
asciimoth/ygg (Yggdrasil fork)
type
entity
summary
Fork of yggdrasil-go separating the library (ygglib) from the daemon (yggd) and adding an embedded userspace TCP/IP stack for in-process networking
tags
networking, go, fork
created
2026-05-10
updated
2026-05-10

asciimoth/ygg is a fork of yggdrasil-network/yggdrasil-go that exists because upstream rejected feature requests as "not a goal of Yggdrasil" (specifically issue #1060). The fork's stated mission is library-style consumption: embedding yggdrasil-network inside other Go applications without the daemon assumption.

What changed from upstream:

  • ygglib package separation โ€” Core, transports, addressing, autopeering, multicast all importable independently
  • In-process userspace TCP/IP stack (vtun) โ€” replaces the system TUN interface, so embedding doesn't require root or kernel support
  • Pluggable carrier networks โ€” swap in SOCKS, in-memory loopback, or custom transports per host pattern
  • gonnect and gonnect-netstack companion libraries โ€” reusable network abstractions

The author also maintains a web demo (asciimoth.github.io/ygg) that runs Yggdrasil inside the browser via WASM, which is the strongest argument for the embedding effort.

Status: active fork, single maintainer, branching from the official codebase but with substantial divergence. The upstream-vs-fork dynamic is the standard "we want X, upstream said no" pattern that produces the best forks (compare Vaultwarden vs Bitwarden, see vaultwarden).

Cross-references: yggdrasil-network, yggdrasil-embedded-go.