Install — macOS
Phase 2 is manual build while we wait for an Apple Developer ID to
code-sign the system-extension flow. The end-to-end path works today via
sudo; brew distribution follows in Phase 3.
Prerequisites
- macOS 13 (Ventura) or newer — needed for the modern
utuninterface. - Rust toolchain — install via
rustup(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh). - The framework's api-core running locally (typically at
https://zeq.dev.local:3099) with the Phase 2 migration applied.
Build
git clone https://github.com/zeq-os/zeq-framework
cd zeq-framework/app/packages/zeq-vpn-client-macos
cargo build --release
sudo install -m 755 target/release/zeq-vpn-client /usr/local/bin/
Configure
The client reads two things at startup:
- The TOML file at
~/.zeq/vpn/config.toml. - The
zsm_bearer from the macOS Keychain (orZEQ_VPN_ZSMenv var as a CI fallback).
# Stash the bearer in Keychain once per machine:
security add-generic-password \
-a zeq.vpn.<your-slug> \
-s "zeq-vpn-bearer" \
-w "zsm_..." \
-U
# Drop the TOML in place:
mkdir -p ~/.zeq/vpn
cat > ~/.zeq/vpn/config.toml <<EOF
api_base = "https://zeq.dev.local:3099"
machine_slug = "<your-slug>"
zsm_keychain = "zeq.vpn.<your-slug>"
cover_traffic_default = false
multi_hop_default = false
kill_switch_on_drop = true
dns_via_peer = true
EOF
First connection
# Browse who is offering relay capacity.
zeq-vpn-client marketplace --country EU --max-zeq-per-gb 100
# Open a tunnel to one of the listed peers.
zeq-vpn-client connect \
--peer-slug zeq07000000007 \
--lifespan-zeqonds 500 \
--pricing-unit gb
# Watch your live + recent tunnels.
zeq-vpn-client tunnels
Settings
| Key | Default | Meaning |
|---|---|---|
cover_traffic_default | false | Fill egress to 12.87 packets/Zeqond (10× HulyaPulse) with random-bytes packets encrypted the same way. Off saves bandwidth; on adds traffic-analysis resistance. |
multi_hop_default | false | Pick an intermediate hop from the marketplace. Phase 3 surfaces multi-hop UX; Phase 2 stores the column but always negotiates direct. |
kill_switch_on_drop | true | On tunnel-drop, optionally use pf (packet filter) to block all non-tunnel egress until the tunnel reconnects. |
dns_via_peer | true | Resolve DNS through the peer's resolver. No DNS leaks to your ISP. |
Brew tap (Phase 3)
# Not yet published — Apple Developer ID code-signing required.
brew tap zeq-os/vpn
brew install zeq-vpn