Agent Installation
Linux (Debian/Ubuntu)
# Add AVON repository
curl -fsSL https://packages.avon.example.com/gpg
| sudo gpg --dearmor -o /usr/share/keyrings/avon-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/avon-archive-keyring.gpg] https://packages.avon.example.com/apt stable main"
| sudo tee /etc/apt/sources.list.d/avon.list
sudo apt update && sudo apt install avon-agent Linux (RHEL/CentOS/Fedora)
sudo tee /etc/yum.repos.d/avon.repo << 'EOF'
[avon]
name=AVON Repository
baseurl=https://packages.avon.example.com/rpm
enabled=1
gpgcheck=1
gpgkey=https://packages.avon.example.com/gpg
EOF
sudo dnf install avon-agent Linux (Manual/Binary)
curl -LO https://github.com/ShaneDolphin/avons-corners/releases/latest/download/avon-agent-linux-amd64.tar.gz
tar -xzf avon-agent-linux-amd64.tar.gz
sudo mv avon-agent /usr/local/bin/
sudo chmod +x /usr/local/bin/avon-agent
avon-agent --version macOS (Homebrew)
brew tap shanedolphin/avon
brew install avon-agent After installation, approve the system extension in System Settings > Privacy & Security.
macOS (Manual)
curl -LO https://github.com/ShaneDolphin/avons-corners/releases/latest/download/avon-agent-macos.dmg
hdiutil attach avon-agent-macos.dmg
sudo installer -pkg "/Volumes/AVON Agent/AVON Agent.pkg" -target /
hdiutil detach "/Volumes/AVON Agent" Windows (MSI)
Download avon-agent-windows-amd64.msi from releases and run as Administrator.
Silent install via PowerShell:
Invoke-WebRequest `
-Uri "https://github.com/ShaneDolphin/avons-corners/releases/latest/download/avon-agent-windows-amd64.msi" `
-OutFile "avon-agent.msi"
Start-Process msiexec.exe -Wait -ArgumentList '/i avon-agent.msi /qn' Windows (Chocolatey)
choco install avon-agent Docker (Testing Only)
docker run -it --rm
--cap-add=NET_ADMIN
--device=/dev/net/tun
ghcr.io/shanedolphin/avons-corners/agent:latest
avon-agent --help Agent Usage
Enroll a Device
Generate an enrollment token from the Admin API:
curl -X POST https://admin.avon.example.com/api/v1/enrollment-tokens
-H "Authorization: Bearer $ADMIN_TOKEN"
-H "Content-Type: application/json"
-d '{
"name": "workstation-batch",
"groups": ["engineering"],
"expires_in": "24h",
"max_uses": 10
}' Then enroll the agent:
sudo avon-agent enroll
--gateway gateway.avon.example.com:4600
--token "ENROLLMENT_TOKEN_HERE"
--name "alice-laptop" With a corporate proxy:
sudo avon-agent enroll
--gateway gateway.avon.example.com:4600
--token "ENROLLMENT_TOKEN_HERE"
--http-proxy http://proxy.corp.example.com:8080 Check Status
avon-agent status Agent ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890
Name: alice-laptop
Status: Connected
Gateway: gateway.avon.example.com:4600
Session: Active (expires in 29m 45s)
Certificate: Valid (expires in 364 days)
Groups: engineering, vpn-users Run as a Service
Linux (systemd):
sudo systemctl enable --now avon-agent
sudo systemctl status avon-agent
sudo journalctl -u avon-agent -f macOS (launchd):
sudo launchctl load /Library/LaunchDaemons/com.avon.agent.plist
sudo launchctl list | grep avon Windows:
Set-Service -Name AvonAgent -StartupType Automatic
Start-Service AvonAgent
Get-Service AvonAgent Agent Configuration
Configuration file locations:
| Platform | Path |
|---|---|
| Linux | /etc/avon/agent.toml |
| macOS | /Library/Application Support/AVON/agent.toml |
| Windows | C:\ProgramData\AVON\agent.toml |
[gateway]
address = "gateway.avon.example.com:4600"
fallback = [
"gateway-backup.avon.example.com:4600",
"gateway-dr.avon.example.com:4600"
]
[connection]
max_retries = 10
retry_delay = "5s"
keepalive_interval = "30s"
[pulse]
interval = "10s"
timeout = "5s"
[interface]
name = "avon0"
mtu = 1400
dns = ["10.100.0.53", "10.100.0.54"]
[logging]
level = "info"
file = "/var/log/avon/agent.log"
format = "json"
[advanced]
metrics_enabled = true
metrics_port = 9091 Configuration can also be set via environment variables:
export AVON_GATEWAY_ADDRESS="gateway.avon.example.com:4600"
export AVON_LOG_LEVEL="debug"
export AVON_PULSE_INTERVAL="10s"