Godfather CLI
Command-line client for Godfather, free compute for ASU students run by the AI Society at ASU. Log in with your Discord account and SSH into a GPU or CPU machine the club pays for, with your own private workspace.
Installation
Install from PyPI:
pip install godfather-cli
Or install straight from GitHub:
pip install git+https://github.com/theaisocietyasu/godfather.git#subdirectory=cli
For local development:
git clone https://github.com/theaisocietyasu/godfather.git
cd godfather/cli
pip install -e .
Getting started
- Run
godfatherwith no arguments. On first run you won't be logged in yet, so it'll walk you into the login flow. - It prints a link to the admin portal's
/cli-authpage. Open it, sign in with Discord, and copy the token shown there. - Paste the token back into the terminal. The CLI verifies it with the
backend and stores it in
~/.godfather/config.json. - From the menu (or
godfather connect), pick a pod. The CLI creates an SSH key on your machine the first time, asks the server for a 12-hour certificate for that pod, and opens the connection.
A token lasts 30 days. When it expires, or if you leave the Discord server, the CLI asks you to log in again.
You need OpenSSH installed (ssh and ssh-keygen). macOS, Linux and
Windows 10+ ship it.
Usage
Interactive menu
Running godfather with no arguments opens a menu to list pods, connect,
check status, or log out.
Commands
godfather list # List pods you can connect to
godfather connect # Connect to a pod, picking from a list
godfather connect <pod-id> # Connect to a specific pod
godfather status # Show login and configuration status
godfather auth # Log in, or refresh an expired session
godfather logout # Clear the stored session
godfather update # Update the CLI to the latest version
# Point the CLI at a non-default backend (mainly for local development)
godfather --api-url https://your-backend.example.com list
Files it keeps
Everything lives in ~/.godfather/:
config.json: your token (mode 600). Treat it like a password.ssh/id_ed25519,ssh/id_ed25519.pub: your SSH key, created on first connect. The private key never leaves your machine.ssh/id_ed25519-cert.pub: the certificate for the last pod you connected to.
Delete the folder to reset everything.
Backend URL
By default the CLI talks to https://admin.ais-asu.com. You can override
this with, in order of priority: GODFATHER_API_URL, BACKEND_URL,
NEXT_PUBLIC_BACKEND_URL, NEXT_PUBLIC_API_URL, or the --api-url flag.
This mainly matters if you're running the backend locally.
Troubleshooting
- "Couldn't reach <url>" — check your internet connection and that the
API URL is correct (
godfather statusshows what's currently configured). - "That token is invalid or expired" — get a fresh token from the admin
portal's
/cli-authpage and try again. - "SSH could not log in to the pod" — the pod was created before
Godfather 1.1.0 or does not run the
godfather-baseimage. Ask an admin to recreate it. - "A valid SSH public key is required" — your CLI is older than the
server. Run
godfather update. ssh: command not found— install OpenSSH; the CLI uses your system'ssshandssh-keygen.
Development
The code is in godfather_cli/: cli.py (commands and menu), auth.py
(token login), pod_manager.py (API calls), ssh_connector.py (keys,
certificate, running ssh), update_checker.py (PyPI version check), ui.py
(shared console styling). Tests are in tests/:
pip install -e . pytest
pytest -q tests
Releases go to PyPI when a cli-v<version> tag is pushed; see DEPLOYMENT.md
in the repo root.
Contributing
- Fork the repository.
- Create a feature branch (
git checkout -b feature/your-feature). - Commit your changes and open a Pull Request.
License
MIT — see the LICENSE file for details.
Support
Built by AI Society at Arizona State University.
Metadata
Release files for godfather-cli 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| godfather_cli-1.1.0.tar.gz | 14.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| godfather_cli-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.9 kB
Release files / godfather_cli-1.1.0.tar.gz
| Download URL | godfather_cli-1.1.0.tar.gz |
|---|---|
| Size | 14.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e97e17cd5986adb0f1590ca7240c8fcec8ed3eb96c76f518b1a477baf3e0e471
|
|
BLAKE2b-256 checksum How to use checksums |
0bff93e578b419cbee800602c82c731ea849abb7c15174f978b260aa60854ebd
|
| 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 28, 2026.
Transparency logRelease files / godfather_cli-1.1.0-py3-none-any.whl
| Download URL | godfather_cli-1.1.0-py3-none-any.whl |
|---|---|
| Size | 14.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3459677873831cd2773c856224a8d023fef34882551af599f87413674c58ce15
|
|
BLAKE2b-256 checksum How to use checksums |
00feccc57363af9213c01fffd9b72d31193173f957385b5083df19dbad65463a
|
| 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 28, 2026.
Transparency log