CLI toolkit for managing network tunnels and services with a web UI
Project description
Shifter
Shifter is a production-ready toolkit for provisioning and operating secure network tunnels on Linux hosts.
It combines a click-powered command-line interface with an AIOHTTP web dashboard so administrators can manage GOST, HAProxy, Xray, and IPTables configurations from a single, auditable workflow.
Highlights
- Unified control plane for installing, inspecting, and removing tunnelling services.
- First-class CLI with colorful status output and command groups per service.
- Web dashboard served by
aiohttp+aiohttp-jinja2, including session-based flash messaging. - Packaged configuration templates for reproducible deployments without network fetches.
- PyPI-friendly packaging with entry points, documentation, and release automation guidance.
Requirements
- Linux host with
systemdandiptables. - Python 3.9 or newer (CPython).
- Root/sudo privileges for any command that touches system services or firewall rules.
Installation
Stable release (recommended)
python -m pip install shifter
From a local clone
git clone https://github.com/zZedix/Shifter.git
cd Shifter
python -m pip install --upgrade pip
python -m pip install -e .
The editable install keeps the CLI and web assets in sync while you iterate on the project.
Quick Start
# Review available commands
sudo shifter --help
# Launch the web dashboard (http://127.0.0.1:2063 by default)
sudo shifter serve --host 0.0.0.0 --port 2063
# Inspect the health of all managed services
sudo shifter status
Each sub-command validates that it is executed with root privileges before touching the system.
Command Reference
| Group | Example | Description |
|---|---|---|
serve |
sudo shifter serve --host 0.0.0.0 --port 2063 |
Launch the AIOHTTP dashboard. |
status |
sudo shifter status haproxy |
Show active/enabled state plus parsed configuration details. |
gost |
sudo shifter gost install --domain example.com --port 8080 |
Manage GOST tunnel deployment and forwarding rules. |
haproxy |
sudo shifter haproxy add --relay-port 8081 --main-server-ip 1.2.3.4 --main-server-port 443 |
Configure HAProxy frontends/backends. |
xray |
sudo shifter xray add --address example.com --port 8443 |
Maintain Xray Dokodemo-door inbounds. |
iptables |
sudo shifter iptables install --main-server-ip 203.0.113.10 --ports 80,443 |
Persist and inspect port-forwarding firewall rules. |
Run sudo shifter <group> --help for all arguments on a specific command family.
Web Dashboard
Shifter ships with a lightweight dashboard that mirrors the CLI capabilities.
Templates live inside the package (shifter/web/templates) so deployments do not rely on external assets.
Sessions are backed by encrypted cookies; set AIOHTTP_SECRET_KEY in the environment to supply a persistent key across restarts.
Packaged Templates
Installer commands render configuration templates that are bundled with the package:
gost.servicefor systemd.haproxy.cfgwith placeholder tokens.config.jsonbase configuration for Xray.
Use importlib.resources helpers in shifter.services.config if you need custom automation that reuses these bundled files.
Development
# Install runtime dependencies
python -m pip install -r requirements.txt
# Install the project in editable mode
python -m pip install -e .
# Optional: run the CLI locally
sudo python -m shifter status
We recommend developing inside a virtual environment to isolate dependencies.
Documentation
Extended guides are available under docs/, covering deployment patterns, CLI details, and release workflows.
License
Shifter is released under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shifter_toolkit-0.1.0.tar.gz.
File metadata
- Download URL: shifter_toolkit-0.1.0.tar.gz
- Upload date:
- Size: 30.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30a6972493599b9ca3c59891870934af3d5080277853245388c57911a9c33dac
|
|
| MD5 |
f247bef6a8389ef9e97dc84a9eca48f2
|
|
| BLAKE2b-256 |
e6f5a4d995c7ce650653773e020f49774b3ae1cdcb8a36a78e920cdfaece96aa
|
File details
Details for the file shifter_toolkit-0.1.0-py3-none-any.whl.
File metadata
- Download URL: shifter_toolkit-0.1.0-py3-none-any.whl
- Upload date:
- Size: 30.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e50d5db4570cc3e2fcb93c93ab7a36056579878c5b4db95c73685c0442e05fb
|
|
| MD5 |
a6a2aff418b530014e2782c391f505a1
|
|
| BLAKE2b-256 |
aa3e50b1046981712503b4a542c3022c0afecaea6fe346756a174e62f5653ba7
|