hop3-server
Core server for the Hop3 Platform-as-a-Service.
Overview
hop3-server is the central orchestrator that handles application deployments, process management, reverse proxy configuration, and addon services. It provides a JSON-RPC API for communication with hop3-cli and hop3-tui.
Features
- Git-push deployments: Deploy applications via
git push - Automatic build system: Detects language (Python, Node, Ruby, Go, Rust, etc.) and builds automatically
- Process management: Manages app processes based on Procfile via uWSGI
- Reverse proxy: Nginx/Caddy/Traefik with automatic SSL certificates
- Addon services: PostgreSQL, MySQL, Redis management
- Plugin architecture: Extensible via pluggy-based plugins
- JSON-RPC API: For CLI and TUI communication
Installation
Production
curl -LsSf https://hop3.cloud/install-server.py | sudo python3 -
Development
pip install hop3-server
Quick Start
# Run the server
hop3-server serve
# Run with specific host/port
hop3-server serve --host 0.0.0.0 --port 8000
Configuration
Server configuration via environment variables or /etc/hop3/config.toml:
| Variable | Description | Default |
|---|---|---|
HOP3_HOME |
Home directory | /home/hop3 |
HOP3_DATABASE_URL |
Database URL | sqlite:///hop3.db |
HOP3_SECRET_KEY |
JWT signing key | (required) |
Architecture
hop3-server/
├── src/hop3/
│ ├── server/ # Litestar ASGI application
│ │ ├── asgi.py # App factory
│ │ └── controllers/ # API endpoints
│ ├── commands/ # RPC command handlers
│ ├── deployers/ # Deployment orchestration
│ ├── orm/ # SQLAlchemy models
│ ├── plugins/ # Plugin system
│ │ ├── build/ # Builders, language toolchains
│ │ ├── deploy/ # Deployers (uWSGI, static)
│ │ ├── proxy/ # Nginx, Caddy, Traefik
│ │ └── addons/ # PostgreSQL, MySQL, Redis
│ ├── core/ # Core abstractions
│ │ ├── protocols.py # Plugin protocols
│ │ └── hookspecs.py # Hook specifications
│ └── toolchains/ # Language toolchains
└── tests/
├── a_unit/ # Unit tests
├── b_integration/ # Integration tests
└── c_e2e/ # End-to-end tests (Docker, real deploy)
Filesystem Layout
/home/hop3/
├── apps/<app_name>/
│ ├── git/ # Bare git repository
│ ├── src/ # Checked-out source code
│ ├── data/ # Persistent data
│ └── log/ # Log files
├── nginx/ # Nginx configs and certs
├── uwsgi-available/ # uWSGI configs
├── uwsgi-enabled/ # Active uWSGI configs
└── hop3.db # SQLite database
Development
# Unit tests
uv run pytest tests/a_unit/ -v
# Integration tests
uv run pytest tests/b_integration/ -v
# End-to-end tests (requires Docker)
uv run pytest tests/c_e2e/ -v
# Lint and format
uv run ruff check src/
uv run ruff format src/
Documentation
Related Packages
- hop3-cli - CLI client for this server
- hop3-tui - TUI client for this server
- hop3-installer - Installation tools
License
Apache-2.0 - Copyright (c) 2024-2026, Abilian SAS
Metadata
Release files for hop3-server 0.7.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hop3_server-0.7.3.tar.gz | 866.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hop3_server-0.7.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.0 MB
Release files / hop3_server-0.7.3.tar.gz
| Download URL | hop3_server-0.7.3.tar.gz |
|---|---|
| Size | 866.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c240c101d33640df469dce262767d8da28c77c01810f9479dcf689eaaa424852
|
|
BLAKE2b-256 checksum How to use checksums |
891a9c0b5f7a080de64b2b4741e7e7682659c85a00e5e2d1fe233728a4c96ad4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / hop3_server-0.7.3-py3-none-any.whl
| Download URL | hop3_server-0.7.3-py3-none-any.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
730742ee46aff61a94eaaf3cce70c20f54a4d19e4a13f34fbe9d390d2a1f1918
|
|
BLAKE2b-256 checksum How to use checksums |
bac01b9069abaa5e92851f7864b6a282a8a46b28f0bc3ba81fb78766a6f93d96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|