Skip to main content

Puffdeploy 🐡

Deploy open-source LLMs directly to your own AWS/GCP account with one command. Zero Docker, zero Kubernetes, scale-to-zero.

Puffdeploy Demo

Contents

Status

  • Alpha: Under heavy development
  • Beta: Ready for use. But go easy on us, there may be a few kinks.
  • 1.0: Use in production!

This repo is still under heavy development and the documentation is evolving. You're welcome to try it, but expect some breaking changes. Watch "releases" of this repo to receive a notification when we are ready for Beta. And give us a star if you like it!

Example

# 1. Initialize a model service
puff init my-model
cd my-model

# 2. Deploy to AWS with scale-to-zero
puff deploy

# Output:
# Replica ready at http://34.201.45.12:8000
# Test your endpoint:
# curl -X POST http://34.201.45.12:8000/predict \
#   -H "Content-Type: application/json" \
#   -d '{"prompt": "Hello world"}'

Introduction

What is this?

This is a CLI and deployment engine that allows you to deploy open-source LLMs directly to your own cloud account (AWS/GCP) with a single command.

It works like this:

  1. the CLI reads your model code (app.py) and hardware spec (puffdeploy.yaml)
  2. it provisions an optimized Spot or On-Demand instance (via SkyPilot) directly inside your cloud account
  3. it prepares the runtime, loads the weights, verifies the health probe, and prints a ready-to-test curl command.

Cool, but why not just use Modal, RunPod, or Baseten?

A few reasons:

  1. Your data, prompts, and model weights never leave your own AWS/GCP account. Zero third-party servers, and zero SOC2 or HIPAA compliance headaches
  2. You don't have to pay a $50k-$100k enterprise paywall just to deploy inside your private VPC. Puffdeploy gives you that exact serverless experience natively in your account on day one
  3. Zero framework lock-in. Modal forces you to rewrite your code with proprietary decorators (@modal.function)

What are the benefits?

  1. The beauty of deploying directly to your own cloud account is that your proprietary data, customer queries, and model weights never leave your security perimeter. Zero third-party compliance reviews (SOC2/HIPAA) needed.
  2. Cost efficiency. Puffdeploy defaults to Spot instances (use_spot: true), allowing you to serve models on AWS without burning $1,500+/mo on idle, unmanaged GPUs.
  3. This is built on SkyPilot, an extremely robust open-source compute orchestrator developed at UC Berkeley.

What can I build with this?

  1. Private LLM inference APIs (any open-weights checkpoint or fine-tuned model)
  2. Custom embedding & reranking microservices
  3. Real-time reasoning and agent tool-calling backends
  4. Domain-specific fine-tuned models hosted securely inside your VPC
  5. High-throughput batch inference endpoints

Getting started

Deploy a real, open-weights Small Language Model (Qwen/Qwen2.5-0.5B-Instruct) directly to your AWS account on a Spot instance (~$0.07/hr) in under 2 minutes.

  1. Install and verify cloud access
pip install puffdeploy
puff check
  1. Create project folder
mkdir llm-service
cd llm-service
  1. Create app.py

Paste this into app.py:

from fastapi import FastAPI
from transformers import pipeline

app = FastAPI()
pipe = pipeline("text-generation", model="Qwen/Qwen2.5-0.5B-Instruct")

@app.get("/health")
def health():
    return {"status": "ok"}

@app.post("/predict")
def predict(data: dict):
    return {"response": pipe([{"role": "user", "content": data["prompt"]}], max_new_tokens=50)[0]["generated_text"][-1]["content"]}
  1. Create puffdeploy.yaml

Paste this into puffdeploy.yaml:

name: llm-service
compute:
  cpus: 4+
  memory: 8+
  use_spot: true
runtime:
  setup: pip install fastapi uvicorn "transformers<5.0.0" accelerate
  1. Deploy to the cloud

Run:

puff deploy

Puffdeploy provisions the AWS Spot instance, installs dependencies, verifies the /health probe, and outputs your live replica URL.

  1. Test your live endpoint

Query your live inference API using curl:

curl -X POST http://<ENDPOINT_IP>:8000/predict \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Say this is a test"}'

Output:

{
  "response": "This is a test."
}
  1. Clean Up

When finished testing, terminate all cloud compute to avoid lingering charges:

puff down --all

Contributing

We welcome any issues, pull requests, and feedback. See CONTRIBUTING.md for local development setup.

License

This repo is licensed under Apache 2.0.

Credits

Release files for puffdeploy 0.2.0

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

Source distribution (sdist)

Source distribution for puffdeploy 0.2.0
File Size Uploaded
puffdeploy-0.2.0.tar.gz 1.1 MB Details

Built distribution (wheel)

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

Total release size: 1.1 MB

Release files / puffdeploy-0.2.0.tar.gz

Download URL puffdeploy-0.2.0.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
ef4c03da9b8f0808d0f16d1863f7dbbeaea295929a3f40abd01d852987b58f09
BLAKE2b-256 checksum
How to use checksums
4b8382c8dd3e5fbe6f0ac2dd829f8f0d8e4f046e03aaecda427ab87979398944
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 26, 2026.

Transparency log

Release files / puffdeploy-0.2.0-py3-none-any.whl

Download URL puffdeploy-0.2.0-py3-none-any.whl
Size 18.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d2527466219d559ed200416c6848c1a150b2d8c35305adbf709a0e41fbb52acc
BLAKE2b-256 checksum
How to use checksums
b60354a50f5f19fdc55990c02023c9305857251481f4cdf69e616fb160cf8541
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 26, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

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