Metadata-Version: 2.4
Name: foxygpu
Version: 0.2.1
Summary: Run local code on Google Colab's free GPU
Author-email: Shamshad Choudhary <chaudhary.s.shamshad07@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/Shamshadz/FoxyGPU
Project-URL: Repository, https://github.com/Shamshadz/FoxyGPU
Project-URL: Issues, https://github.com/Shamshadz/FoxyGPU/issues
Keywords: colab,gpu,ollama,deployment,cli,fastapi
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: typer>=0.9
Requires-Dist: requests>=2.31
Requires-Dist: websockets>=12.0
Requires-Dist: rich>=13.0
Requires-Dist: pyyaml>=6.0
Provides-Extra: dev
Requires-Dist: pytest>=7.4; extra == "dev"
Requires-Dist: pytest-timeout>=2.2; extra == "dev"
Requires-Dist: fastapi>=0.100; extra == "dev"
Requires-Dist: uvicorn>=0.23; extra == "dev"
Requires-Dist: python-multipart>=0.0.6; extra == "dev"
Dynamic: license-file

# FoxyGPU

Run local code — FastAPI backends, frontend dev servers, or anything else — on
Google Colab's free-tier GPU, driven entirely from your own machine.

## Install

```bash
pip install foxygpu
```

## How it works

`foxygpu launch` opens FoxyGPU's own runner notebook directly in Colab — no
manual notebook upload, and no GitHub account or token needed for the default
path. That notebook starts a control-plane agent, reached from your machine
over a Cloudflare Tunnel (no account needed). The local `foxygpu` CLI talks to
that agent to upload your project, start it with a shell command, stream its
logs, and expose whatever port it's listening on with its own public URL.

```
┌───────────────────┐
│    foxygpu CLI    │
│  (local machine)  │
└───────────────────┘
          │
          │  HTTPS/WSS via a Cloudflare Tunnel
          ▼
┌──────────────────────────────┐
│         foxygpu_agent        │
│    (Colab VM, GPU runtime)   │
│      spawns your process     │
│  (uvicorn / npm / anything)  │
└──────────────────────────────┘
```

## Quickstart

```bash
foxygpu launch                     # opens Colab, no token needed
# run the cells; copy the `foxygpu connect ...` command it prints
foxygpu connect <url> --token <token>

foxygpu run ./my-app --cmd 'pip install -r requirements.txt && uvicorn main:app --host 0.0.0.0 --port $PORT' --expose
```

The agent picks a free port for you and injects it as `$PORT` — you never have
to think about which ports are free. Once you know your `--cmd`, save it to a
`foxygpu.yaml` and just run `foxygpu deploy` from then on — it also
auto-detects common frameworks (FastAPI/Flask, Vite/Next.js) if you don't have
one yet.

Made changes and want to update what's running? `foxygpu redeploy` stops the
previous deployment of the same project before starting the new one.

Need to pass a database URL or API key? Use `--env`/`--env-file` — never embed
secrets directly in `--cmd`, since that gets shown in `foxygpu status` and the
logs.

## Any language, any framework

`foxygpu run`/`deploy` just execute a shell command on the VM — Node, Go,
Rust, Flask, Streamlit, a plain training script, anything the Colab VM can
run works, not just Python or FastAPI.

## Full documentation

The [GitHub README](https://github.com/Shamshadz/FoxyGPU#readme) has the
complete command reference, a full working example (a real GPU-backed Ollama
chat app), known limitations, and contributor docs.
