Skip to main content

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

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)

Source distribution for hop3-server 0.7.3
File Size Uploaded
hop3_server-0.7.3.tar.gz 866.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hop3-server 0.7.3
File Interpreter ABI Platform
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
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page