Skip to main content

Hecaton

Hecaton is a solution for self-hosted GPU access from a source that isn't deployed. It allows you to distribute compute jobs across multiple workers (GPUs).

Overview

Installation

Hecaton can be installed as a Python package.

pip install hecaton

Note: For GPU workers, you must run the installation and the worker process as root because it uses docker python client which requires root access to interact with the Docker daemon.

Quick Start

1. Server Setup

Start the server. On the first run, you should provide an admin password via environment variable to create the initial admin user.

# Create initial admin user (runs on port 8181 by default)
HECATON_ADMIN_PASS=mysecurepassword hecaton-server --port 8181

Once the admin is created, you can simply run:

hecaton-server --port 8181

SSL/TLS (Recommended):

hecaton-server --port 8181 --ssl-keyfile key.pem --ssl-certfile cert.pem

Server Startup

2. Client Setup

Configure the client to point to your server using the CLI:

# Register the server locally
hecaton server new --ip <server_ip>:8181 --name my-server

# Log in (get the token)
hecaton server login my-server --username admin --password mysecurepassword

Client Login

3. Worker Setup

To add a GPU worker to the cluster:

Requirements:

  • Docker must be installed and running.
  • Must run as root.
sudo pip install hecaton
# Connect the worker (as root)
sudo hecaton-gpu install <server_ip>:8181

# You will be prompted for a username and password (e.g., admin credentials or a dedicated worker user)

The worker will automatically register with the server and start processing jobs.

4. Job Submission

Submit a job with a payload file and a target image:

hecaton job new <path_to_payload_file> <docker_image_name>

5. Programmatic Job Submission

You can also submit and monitor jobs using the Python client library:

import time
from hecaton.client.managers.api import HecatonServer

server_ip = "http://localhost:8181"
token = "YOUR_JWT_TOKEN"

# Submit the job (payload.json is read and sent to the worker)
job_id = HecatonServer.new_job(
    ip=server_ip, secret=token, 
    file_path="payload.json", image="my-custom-image:latest"
)
print(f"Submitted Job ID: {job_id}")

# Poll for completion
while True:
    job_info = HecatonServer.get_job(server_ip, token, job_id)
    if job_info[1] in ("FINISHED", "FAILED"):
        print("Result:", job_info[2])
        break
    time.sleep(2)

6. Writing a Payload and Custom Docker Image

Hecaton uses a long-running container model to process jobs. When you submit a job to a specific Docker image, Hecaton ensures a container of that image is running and passes the job payload to it.

To easily write the python code for your custom Docker image, you should use Hecaton's built-in serverless module.

Example handler.py (Entrypoint for your Docker image):

from hecaton.serverless import start, ServerLessInput

def my_handler(data: ServerLessInput):
    # 'data.input' contains the payload you submitted via the CLI or API (e.g., payload.json)
    job_payload = data.input
    
    print(f"Processing job with data: {job_payload}")
    
    # Perform your GPU compute or other tasks here
    result = {"status": "success", "processed_data": job_payload}
    
    # Return the result dict, it will be uploaded back to the server
    return result

if __name__ == "__main__":
    # 'start()' keeps the container running and polls the worker for jobs
    start(my_handler)

Dockerfile Example:

FROM python:3.9-slim
RUN pip install hecaton
COPY handler.py /app/handler.py
CMD ["python", "/app/handler.py"]

Once this image is built, pushed, and registered on the Hecaton server, you can submit payloads to it.

Command Reference

Client CLI (hecaton)

The hecaton command is your main interface for interacting with the server.

Server Management (hecaton server)

Manage your local server connections.

  • new: Register a new server.
    • --ip: Server IP/URL (e.g., localhost:8181).
    • --name: Local alias for the server.
  • login: Authenticate with a server.
    • server_name: The alias of the server.
    • --username, --password: Credentials.
  • list: List registered servers.
  • connect: Switch the active server context.
  • disconnect: Unset the active server.
  • show: View details of a server.
  • update: Update server configuration (e.g., IP).

User Management (hecaton user)

Manage users (Requires Admin privileges).

  • create: Create a new user.
    • --username: New user's name.
    • --password: New user's password.
    • --role: Role (default: user).

Worker Management (hecaton worker)

Monitor connected workers.

  • list: List all workers, their status, and last active time.

Image Management (hecaton image)

Manage Docker images available for jobs.

  • new: Register a new Docker image from Docker Hub.
    • image_name: e.g., python:3.9-slim.
  • list: List registered images.
  • update: Update image metadata.
    • --fp: Path to a file containing environment variables (KEY=VALUE per line).
    • --desc: Update description.
  • show: Show image details including environment variables.

Job Management (hecaton job)

Submit and track jobs.

  • new: Submit a new job.
    • file_path: Path to the script/payload to run.
    • image_name: The Docker image to use.
  • list: List recent jobs and their statuses.
  • show: View full details of a specific job (ID, status, payload, index).

GPU Worker CLI (hecaton-gpu)

The hecaton-gpu command runs on the worker machine to manage the background service. Must be run as root.

  • install <server_ip>: Install the worker as a systemd service.
    • prompts for username/password authentication.
  • uninstall: Remove the systemd service.
  • start: Start the worker service.
  • stop: Stop the worker service.
  • restart: Restart the worker service.
  • status: Check if the service is running.
  • logs: View service logs.
    • -f: Follow logs.
    • -n: Number of lines.
  • run <server_ip>: Run the worker in the foreground (useful for debugging).

Metadata

Release files for hecaton 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hecaton 1.0.1
File Size Uploaded Provenance Actions
hecaton-1.0.1.tar.gz 35.3 kB With provenance Details for hecaton-1.0.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for hecaton 1.0.1
File Interpreter ABI Platform Actions
hecaton-1.0.1-py3-none-any.whl Python 3 none any Details for hecaton-1.0.1-py3-none-any.whl

Total release size: 73.5 kB

Release files / hecaton-1.0.1.tar.gz

Download URL hecaton-1.0.1.tar.gz
Size 35.3 kB
Tags Source
SHA-256 checksum
How to use checksums
cc87f1cc12f24cb53a115bf551f20f54fa305f9d71dfbc0c412322bb6d03166c
BLAKE2b-256 checksum
How to use checksums
8cf7082175e14a6c140f206fa79021bbe0e7817355545bb1f5552115191f5daf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 25, 2026.

Transparency log

Release files / hecaton-1.0.1-py3-none-any.whl

Download URL hecaton-1.0.1-py3-none-any.whl
Size 38.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
95795bf015d3d54c4a54e469fdfb86a5cd74bb2733877c827ddb28ef178f4a98
BLAKE2b-256 checksum
How to use checksums
c3ec203c698cc05851e1dfb046e71c0537dcd1f1bd97e38edb3b32c6c87cb429
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 25, 2026.

Transparency log

Security for hecaton 1.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for hecaton-1.0.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 25, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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