# shark-empire/mitos-network architecture

> Architecture diagram of the GitHub repository shark-empire/mitos-network, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/shark-empire/mitos-network
- Repository: https://github.com/shark-empire/mitos-network

## Overview

mitos-network is a Linux network-management daemon, not a TCP/IP stack. A local client sends requests over Unix-socket IPC; the daemon’s manager handles policy and dispatches operations such as device discovery, Wi-Fi, connections, firewall, proxy, and sharing, then reports state and events. Network configuration and saved profiles are separate concerns. The README documents additional VPN, Bluetooth, DHCP, DNS, routing, and monitoring capabilities. Sampled source confirms the daemon/IPC/manager path and selected operations; links for unsampled subsystem internals are omitted where wiring is uncertain.

Main entry points: [`src/manager/manager.rs`](https://github.com/shark-empire/mitos-network/blob/main/src/manager/manager.rs) (Network manager), [`src/main.rs`](https://github.com/shark-empire/mitos-network/blob/main/src/main.rs) (Daemon entry), [`src/ipc/server.rs`](https://github.com/shark-empire/mitos-network/blob/main/src/ipc/server.rs) (IPC server), [`bin/mitos-netctl.rs`](https://github.com/shark-empire/mitos-network/blob/main/bin/mitos-netctl.rs) (mitos-netctl)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_control["Control plane"]
  node_netctl["mitos-netctl<br/>[mitos-netctl.rs]"]
  node_daemon["Daemon entry<br/>[main.rs]"]
  node_ipc_server["IPC server<br/>[server.rs]"]
  node_manager["Network manager<br/>[manager.rs]"]
  node_scheduler["Periodic scheduler<br/>[scheduler.rs]"]
  node_config["Configuration<br/>[mod.rs]"]
end

subgraph group_devices["Devices and links"]
  node_device_registry["Device registry<br/>[manager.rs]"]
  node_discovery["Device discovery<br/>[discovery.rs]"]
  node_connection["Connections<br/>[mod.rs]"]
  node_wifi["Wi-Fi<br/>[mod.rs]"]
  node_ethernet["Ethernet<br/>[mod.rs]"]
  node_bluetooth["Bluetooth<br/>[mod.rs]"]
end

subgraph group_network_services["Network services"]
  node_ip["IP and netlink<br/>[mod.rs]"]
  node_dhcp["DHCP clients<br/>[mod.rs]"]
  node_dns["DNS<br/>[mod.rs]"]
  node_routing["Routing policy<br/>[mod.rs]"]
  node_vpn["VPN<br/>[mod.rs]"]
  node_sharing["Internet sharing<br/>[mod.rs]"]
  node_connectivity["Connectivity checks<br/>[mod.rs]"]
end

subgraph group_policy["Policy and state"]
  node_firewall["Firewall<br/>[mod.rs]"]
  node_proxy["Proxy and PAC<br/>[mod.rs]"]
  node_persistence[("Profiles and state<br/>[mod.rs]")]
  node_monitoring["Diagnostics and health<br/>[mod.rs]"]
end

subgraph group_integrations["System integrations"]
  node_kernel{{"Linux kernel"}}
  node_wpa{{"wpa_supplicant"}}
  node_nft{{"nft"}}
  node_openvpn{{"OpenVPN"}}
  node_bluez_tool{{"bluetoothctl"}}
  node_hostapd{{"hostapd"}}
end

node_local_client(("Local client"))

node_local_client -->|"invokes"| node_netctl
node_netctl -->|"sends requests"| node_ipc_server
node_daemon -->|"loads"| node_config
node_daemon -->|"starts"| node_manager
node_daemon -->|"starts"| node_ipc_server
node_daemon -->|"starts"| node_scheduler
node_ipc_server -->|"dispatches requests"| node_manager
node_manager -->|"queries and refreshes"| node_device_registry
node_manager -->|"activates profiles"| node_connection
node_manager -->|"handles Wi-Fi requests"| node_wifi
node_manager -->|"handles firewall requests"| node_firewall
node_manager -->|"applies and resolves"| node_proxy
node_manager -->|"starts hotspots"| node_sharing
node_manager -->|"loads and saves profiles"| node_persistence
node_manager -->|"tracks connectivity"| node_connectivity
node_manager -->|"serves diagnostics"| node_monitoring
node_scheduler -->|"sends timer commands"| node_manager
node_discovery -->|"monitors netlink"| node_kernel
node_device_registry -->|"scans devices"| node_discovery
node_ip -->|"configures via netlink"| node_kernel
node_wifi -->|"controls"| node_wpa
node_firewall -->|"applies rules"| node_nft
node_vpn -.->|"controls sessions"| node_openvpn
node_bluetooth -.->|"controls devices"| node_bluez_tool
node_sharing -.->|"runs access point"| node_hostapd

click node_netctl "https://github.com/shark-empire/mitos-network/blob/main/bin/mitos-netctl.rs"
click node_daemon "https://github.com/shark-empire/mitos-network/blob/main/src/main.rs"
click node_ipc_server "https://github.com/shark-empire/mitos-network/blob/main/src/ipc/server.rs"
click node_manager "https://github.com/shark-empire/mitos-network/blob/main/src/manager/manager.rs"
click node_scheduler "https://github.com/shark-empire/mitos-network/blob/main/src/manager/scheduler.rs"
click node_config "https://github.com/shark-empire/mitos-network/blob/main/src/config/mod.rs"
click node_device_registry "https://github.com/shark-empire/mitos-network/blob/main/src/device/manager.rs"
click node_discovery "https://github.com/shark-empire/mitos-network/blob/main/src/device/discovery.rs"
click node_connection "https://github.com/shark-empire/mitos-network/blob/main/src/connection/mod.rs"
click node_wifi "https://github.com/shark-empire/mitos-network/blob/main/src/wifi/mod.rs"
click node_ethernet "https://github.com/shark-empire/mitos-network/blob/main/src/ethernet/mod.rs"
click node_bluetooth "https://github.com/shark-empire/mitos-network/blob/main/src/bluetooth/mod.rs"
click node_ip "https://github.com/shark-empire/mitos-network/blob/main/src/ip/mod.rs"
click node_dhcp "https://github.com/shark-empire/mitos-network/blob/main/src/dhcp/mod.rs"
click node_dns "https://github.com/shark-empire/mitos-network/blob/main/src/dns/mod.rs"
click node_routing "https://github.com/shark-empire/mitos-network/blob/main/src/routing/mod.rs"
click node_vpn "https://github.com/shark-empire/mitos-network/blob/main/src/vpn/mod.rs"
click node_sharing "https://github.com/shark-empire/mitos-network/blob/main/src/sharing/mod.rs"
click node_connectivity "https://github.com/shark-empire/mitos-network/blob/main/src/connectivity/mod.rs"
click node_firewall "https://github.com/shark-empire/mitos-network/blob/main/src/firewall/mod.rs"
click node_proxy "https://github.com/shark-empire/mitos-network/blob/main/src/proxy/mod.rs"
click node_persistence "https://github.com/shark-empire/mitos-network/blob/main/src/persistence/mod.rs"
click node_monitoring "https://github.com/shark-empire/mitos-network/blob/main/src/monitoring/mod.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_netctl,node_daemon,node_ipc_server,node_manager,node_scheduler,node_config,node_local_client toneBlue
class node_device_registry,node_discovery,node_connection,node_wifi,node_ethernet,node_bluetooth toneAmber
class node_ip,node_dhcp,node_dns,node_routing,node_vpn,node_sharing,node_connectivity toneMint
class node_firewall,node_proxy,node_persistence,node_monitoring toneRose
class node_kernel,node_wpa,node_nft,node_openvpn,node_bluez_tool,node_hostapd toneIndigo
```

## Components

### Control plane

- [mitos-netctl](https://github.com/shark-empire/mitos-network/blob/main/bin/mitos-netctl.rs): `bin/mitos-netctl.rs`
- [Daemon entry](https://github.com/shark-empire/mitos-network/blob/main/src/main.rs): `src/main.rs`
- [IPC server](https://github.com/shark-empire/mitos-network/blob/main/src/ipc/server.rs): `src/ipc/server.rs`
- [Network manager](https://github.com/shark-empire/mitos-network/blob/main/src/manager/manager.rs): `src/manager/manager.rs`
- [Periodic scheduler](https://github.com/shark-empire/mitos-network/blob/main/src/manager/scheduler.rs): `src/manager/scheduler.rs`
- [Configuration](https://github.com/shark-empire/mitos-network/blob/main/src/config/mod.rs): `src/config/mod.rs`

### Devices and links

- [Device registry](https://github.com/shark-empire/mitos-network/blob/main/src/device/manager.rs): `src/device/manager.rs`
- [Device discovery](https://github.com/shark-empire/mitos-network/blob/main/src/device/discovery.rs): `src/device/discovery.rs`
- [Connections](https://github.com/shark-empire/mitos-network/blob/main/src/connection/mod.rs): `src/connection/mod.rs`
- [Wi-Fi](https://github.com/shark-empire/mitos-network/blob/main/src/wifi/mod.rs): `src/wifi/mod.rs`
- [Ethernet](https://github.com/shark-empire/mitos-network/blob/main/src/ethernet/mod.rs): `src/ethernet/mod.rs`
- [Bluetooth](https://github.com/shark-empire/mitos-network/blob/main/src/bluetooth/mod.rs): `src/bluetooth/mod.rs`

### Network services

- [IP and netlink](https://github.com/shark-empire/mitos-network/blob/main/src/ip/mod.rs): `src/ip/mod.rs`
- [DHCP clients](https://github.com/shark-empire/mitos-network/blob/main/src/dhcp/mod.rs): `src/dhcp/mod.rs`
- [DNS](https://github.com/shark-empire/mitos-network/blob/main/src/dns/mod.rs): `src/dns/mod.rs`
- [Routing policy](https://github.com/shark-empire/mitos-network/blob/main/src/routing/mod.rs): `src/routing/mod.rs`
- [VPN](https://github.com/shark-empire/mitos-network/blob/main/src/vpn/mod.rs): `src/vpn/mod.rs`
- [Internet sharing](https://github.com/shark-empire/mitos-network/blob/main/src/sharing/mod.rs): `src/sharing/mod.rs`
- [Connectivity checks](https://github.com/shark-empire/mitos-network/blob/main/src/connectivity/mod.rs): `src/connectivity/mod.rs`

### Policy and state

- [Firewall](https://github.com/shark-empire/mitos-network/blob/main/src/firewall/mod.rs): `src/firewall/mod.rs`
- [Proxy and PAC](https://github.com/shark-empire/mitos-network/blob/main/src/proxy/mod.rs): `src/proxy/mod.rs`
- [Profiles and state](https://github.com/shark-empire/mitos-network/blob/main/src/persistence/mod.rs): `src/persistence/mod.rs`
- [Diagnostics and health](https://github.com/shark-empire/mitos-network/blob/main/src/monitoring/mod.rs): `src/monitoring/mod.rs`

### System integrations

- **Linux kernel**
- **wpa_supplicant**
- **nft**
- **OpenVPN**
- **bluetoothctl**
- **hostapd**

### Other components

- **Local client**

## Connections

- Local client → mitos-netctl: invokes
- mitos-netctl → IPC server: sends requests
- Daemon entry → Configuration: loads
- Daemon entry → Network manager: starts
- Daemon entry → IPC server: starts
- Daemon entry → Periodic scheduler: starts
- IPC server → Network manager: dispatches requests
- Network manager → Device registry: queries and refreshes
- Network manager → Connections: activates profiles
- Network manager → Wi-Fi: handles Wi-Fi requests
- Network manager → Firewall: handles firewall requests
- Network manager → Proxy and PAC: applies and resolves
- Network manager → Internet sharing: starts hotspots
- Network manager → Profiles and state: loads and saves profiles
- Network manager → Connectivity checks: tracks connectivity
- Network manager → Diagnostics and health: serves diagnostics
- Periodic scheduler → Network manager: sends timer commands
- Device discovery → Linux kernel: monitors netlink
- Device registry → Device discovery: scans devices
- IP and netlink → Linux kernel: configures via netlink
- Wi-Fi → wpa_supplicant: controls
- Firewall → nft: applies rules
- VPN → OpenVPN: controls sessions
- Bluetooth → bluetoothctl: controls devices
- Internet sharing → hostapd: runs access point
