Skip to main content

A 'Zen Mode' infrastructure engine for Python developers.

Project description

🧘 Xenfra: Infrastructure in Zen Mode

Xenfra is a modular infrastructure engine for Python developers that automates the deployment of applications to DigitalOcean. It is designed as a library first, with a beautiful and interactive CLI as the default frontend.

It handles the complexity of server provisioning, context-aware configuration, Dockerization, and automatic HTTPS, allowing you to focus on your code.

✨ Core Philosophy

  • Engine as the Brain: xenfra.engine is the core library. It owns the DigitalOcean API, the SSH "Auto-Heal" retry loops, and the Dockerizer services. It is stateful, robust, and can be imported into any Python project.
  • Clients as the Face: Frontends like the default CLI (xenfra.cli) are thin, stateless clients responsible only for user interaction.
  • Zen Mode: If a server setup fails due to common issues like a locked package manager, the Engine automatically fixes it without exposing raw errors to the user.

🚀 Quickstart

Using the Xenfra CLI involves a simple workflow: Configure, Initialize, and then Deploy & Manage.

1. Configure

Xenfra needs your DigitalOcean API token to manage infrastructure on your behalf. Export it as an environment variable:

export DIGITAL_OCEAN_TOKEN="dop_v1_your_secret_token_here"

2. Initialize

Navigate to your project's root directory and run the init command. This command scans your project, asks a few questions, and creates a xenfra.yaml configuration file.

xenfra init

You should review the generated xenfra.yaml and commit it to your repository.

3. Deploy & Manage

Once your project is initialized, you can use the following commands to manage your application:

  • xenfra deploy: Deploys your application based on the settings in xenfra.yaml.
  • xenfra list: Instantly lists all your deployed projects from a local cache.
    • Use xenfra list --refresh to force a sync with your cloud provider.
  • xenfra logs: Streams real-time logs from a selected project.
  • xenfra destroy: Decommissions and deletes a deployed project.

📦 Supported Frameworks & Features

  • Smart Context Detection: Automatically detects your package manager (uv or pip).
  • Automatic Dockerization: If a web framework is detected (FastAPI, Flask), Xenfra will:
    • Generate a Dockerfile, docker-compose.yml, and Caddyfile.
    • Deploy your application as a container.
    • Configure Caddy as a reverse proxy with automatic HTTPS.

🤝 Contributing

Contributions are welcome! Please check our CONTRIBUTING.md for more details.

📄 Created by DevHusnainAi

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xenfra-0.2.0.tar.gz (21.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xenfra-0.2.0-py3-none-any.whl (30.0 kB view details)

Uploaded Python 3

File details

Details for the file xenfra-0.2.0.tar.gz.

File metadata

  • Download URL: xenfra-0.2.0.tar.gz
  • Upload date:
  • Size: 21.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for xenfra-0.2.0.tar.gz
Algorithm Hash digest
SHA256 64a8b49d3d2ec147a7caed13631a65a1a7d6a14c0bd9f8a52ce6aacf12c6d6c6
MD5 12450600645a4562ef906696ed062125
BLAKE2b-256 5e5077effbba6a5f52b1cdf528b12de42f7cd4c1254a4bc6aea6b6d9147e2dae

See more details on using hashes here.

File details

Details for the file xenfra-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: xenfra-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 30.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for xenfra-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8efebdae8593811675848747d4789d3f18c840893a77ed027e0e6f456596e17f
MD5 442a0665a9be5238b05e8d7ea7685ff1
BLAKE2b-256 2cf4e1c8bfc47b04d04d1fa6a70eb38b4190e09387fbd9d2ed1d3e8e899e8071

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page