The CLI (command line interface) is a reference implementation of the sp-hydra-veil-core library. https://simplifiedprivacy.com
Find a file
2026-07-09 09:45:47 -05:00
cli feat(core): branch vless/hysteria2 immediately in ProfileController.enable() 2026-07-09 09:45:47 -05:00
.gitignore refactor: align cli with core architecture 2026-07-08 11:15:43 -05:00
LICENSE.txt Add LICENSE.txt 2025-02-24 22:24:51 +01:00
pyproject.toml add commands 2026-05-30 08:25:00 -05:00
README.md Update operator profile creation to use vless/hysteria2 code with location from SQLite 2026-07-07 16:08:54 -05:00

hydra-veil CLI

English · Español


What is this?

A command-line tool to manage VPN profiles and encrypted proxy connections. It supports two connection types:

  • WireGuard — system-level VPN tied to a specific location
  • Operator Proxy — encrypted proxy (vless or hysteria2) tied to an operator

Installation

pip install -e .
python -m cli --version

Commands overview

Command Description
profile Manage connection profiles
application Manage supported applications
operator List available operators
policy Manage system policies
get / set Read / write configuration
sync Sync data from the server
update Update the client

Creating a profile

WireGuard (system-level VPN)

python -m cli profile create system -i 2 -n "my-vpn" -l de:be
Argument Description
-i Profile ID (unique integer)
-n Profile name (any label)
-l Location in country:city format

Operator Proxy

python -m cli profile create operator -i 8 -n "zenaku-vless" -o 3 -pr vless
Argument Description
-i Profile ID (unique integer)
-n Profile name (any label)
-o Operator ID (see operator list)
-pr Protocol: vless or hysteria2

To see available operators:

python -m cli operator list

Enabling a profile

python -m cli profile enable -i 8

On first run, the profile has no subscription. The CLI will prompt:

1) Request new subscription
2) Enter billing code
3) Exit

Choose 1 to generate a billing code. The profile needs to be paid and activated before the connection is established.


Dev / staging: bypass BTCPay payment

If the BTCPay server is not set up, manually activate the latest subscription:

sudo docker compose exec laravel php artisan tinker --execute="
\$sub = \App\Models\Subscription::orderBy('id', 'desc')->first();
\$sub->expires_at = '2027-12-31 23:59:59';
\$sub->duration = 720;
\$sub->payment_reference = 'bypass_' . uniqid();
\$sub->save();
echo 'OK' . PHP_EOL;
"


docker compose exec laravel php artisan tinker --execute="
\$sub = new \App\Models\Subscription();
\$sub->subscription_plan_id = 3;
\$sub->operator_id = 3;
\$sub->billing_code = 'TEST-' . strtoupper(substr(uniqid(), -4)) . '-' . strtoupper(substr(uniqid(), -4)) . '-' . strtoupper(substr(uniqid(), -4));
\$sub->payment_reference = 'bypass_' . uniqid();
\$sub->duration = 720;
\$sub->expires_at = '2027-12-31 23:59:59';
\$sub->save();
echo \$sub->billing_code . PHP_EOL;
"

Then enable again:

python -m cli profile enable -i 8

Other useful commands

# List all profiles
python -m cli profile list

# Show a specific profile
python -m cli profile show -i 8

# Disable a profile
python -m cli profile disable -i 8

# Destroy a profile
python -m cli profile destroy -i 8

# List available applications
python -m cli application list

# Sync data from server
python -m cli sync

# Get current connection type
python -m cli get connection

# Set connection type
python -m cli set connection tor
python -m cli set connection system

Español

¿Qué es esto?

Una herramienta de línea de comandos para gestionar perfiles VPN y conexiones proxy encriptadas. Soporta dos tipos de conexión:

  • WireGuard — VPN a nivel de sistema ligada a una ubicación específica
  • Operator Proxy — proxy encriptado (vless o hysteria2) ligado a un operador

Instalación

pip install -e .
python -m cli --version

Resumen de comandos

Comando Descripción
profile Gestionar perfiles de conexión
application Gestionar aplicaciones soportadas
operator Listar operadores disponibles
policy Gestionar políticas del sistema
get / set Leer / escribir configuración
sync Sincronizar datos del servidor
update Actualizar el cliente

Crear un perfil

WireGuard (VPN a nivel de sistema)

python -m cli profile create system -i 2 -n "mi-vpn" -l de:be
Argumento Descripción
-i ID del perfil (número único)
-n Nombre del perfil (cualquier etiqueta)
-l Ubicación en formato país:ciudad

Operator Proxy

python -m cli profile create operator -i 8 -n "zenaku-vless" -o 3 -pr vless
Argumento Descripción
-i ID del perfil (número único)
-n Nombre del perfil (cualquier etiqueta)
-o ID del operador (ver operator list)
-pr Protocolo: vless o hysteria2

Para ver los operadores disponibles:

python -m cli operator list

Activar un perfil

python -m cli profile enable -i 8

La primera vez el perfil no tiene suscripción. El CLI mostrará:

1) Request new subscription
2) Enter billing code
3) Exit

Elige 1 para generar un billing code. El perfil debe ser pagado y activado antes de que se establezca la conexión.


Dev / staging: saltarse el pago de BTCPay

Si el servidor BTCPay no está configurado, activa manualmente la última suscripción:

sudo docker compose exec laravel php artisan tinker --execute="
\$sub = \App\Models\Subscription::orderBy('id', 'desc')->first();
\$sub->expires_at = '2027-12-31 23:59:59';
\$sub->duration = 720;
\$sub->payment_reference = 'bypass_' . uniqid();
\$sub->save();
echo 'OK' . PHP_EOL;
"

Luego activa el perfil de nuevo:

python -m cli profile enable -i 8

Otros comandos útiles

# Listar todos los perfiles
python -m cli profile list

# Ver un perfil específico
python -m cli profile show -i 8

# Desactivar un perfil
python -m cli profile disable -i 8

# Eliminar un perfil
python -m cli profile destroy -i 8

# Listar aplicaciones disponibles
python -m cli application list

# Sincronizar datos del servidor
python -m cli sync

# Ver tipo de conexión actual
python -m cli get connection

# Cambiar tipo de conexión
python -m cli set connection tor
python -m cli set connection system