auto_ft
A Python CLI that wraps ostris/ai-toolkit to launch and manage LoRA fine-tuning jobs from a plain shell.
auto_ft does not train anything itself — it composes none of the YAML, runs
none of the GPU code. It is a thin orchestration layer: spawn a detached
Ostris subprocess, watch the on-disk artifacts, and surface JSON-shaped
status the way other shell tools and scripts can consume.
What you get
A nine-subcommand CLI over an existing Ostris install:
| Command | Purpose |
|---|---|
auto_ft init |
Create .autoft/state.json and register a job. |
auto_ft prepare |
Validate a dataset (count, format, resolution, PIL integrity) and write a hash manifest. |
auto_ft train |
Spawn detached Ostris training; returns in ~2s. |
auto_ft status |
Filesystem-derived job status (running / completed / stopped / stale / failed). |
auto_ft logs |
Tail N lines of train.log (platform-independent). |
auto_ft stop |
Terminate a running job (Windows: TerminateProcess). |
auto_ft checkpoints |
List *.safetensors checkpoints. |
auto_ft samples |
List sample image paths. |
auto_ft export |
Copy a checkpoint to a deployable path. |
Every successful invocation emits a single JSON object on stdout. Errors
emit {"error_code": "...", "message": "...", "details": {...}} and exit 1.
Install
pipx install auto-ft
auto_ft requires Python 3.11+ and a working
ostris/ai-toolkit install on the
same machine. The CLI launches Ostris as a subprocess; it does not vendor
or install Ostris itself.
Configure Ostris
Tell auto_ft how to find your Ostris install. Two options:
Environment variables:
$env:AUTO_FT_OSTRIS_PYTHON = "C:\path\to\ai-toolkit\venv\Scripts\python.exe"
$env:AUTO_FT_OSTRIS_RUN_PY = "C:\path\to\ai-toolkit\run.py"
Config file at ~/.auto_ft/config.toml:
[ostris]
python = "C:\\path\\to\\ai-toolkit\\venv\\Scripts\\python.exe"
run_py = "C:\\path\\to\\ai-toolkit\\run.py"
Env vars take precedence. If both are absent, auto_ft raises
E_OSTRIS_CONFIG_MISSING.
Quickstart
# 1. Register a job in the current project.
auto_ft init --name mydog --trigger zyx --dataset .\images
# 2. Validate the dataset (writes <images>\.auto_ft_prep.json).
auto_ft prepare .\images --trigger zyx
# 3. Hand auto_ft an Ostris-shaped YAML and launch.
auto_ft train .\config.yaml
# 4. Check progress (read-only; no side effects).
auto_ft status mydog
auto_ft logs mydog --tail 50
# 5. When the job is done, export the LoRA.
auto_ft checkpoints mydog
auto_ft export .\output\mydog\mydog.safetensors
auto_ft does not generate the Ostris YAML for you — bring your own,
hand-authored or composed by any tool you prefer. The CLI's only YAML
requirement is that config.process[0].training_folder is an absolute
path; Ostris owns the <training_folder>/<config.name>/ join itself.
Trust boundary
auto_ft is a thin wrapper. When you run auto_ft train cfg.yaml, you are
trusting:
- the Python CLI you installed (this package), and
- the Ostris installation pointed at by
AUTO_FT_OSTRIS_PYTHON/AUTO_FT_OSTRIS_RUN_PY.
The CLI never imports ai-toolkit; it only spawns the Ostris Python
interpreter as a subprocess. Resume semantics, model loading, GPU
ownership — everything compute-bearing — happens inside Ostris.
Status
Alpha (0.1.x). Tested on Windows 10/11 with NVIDIA 8GB VRAM running SDXL
LoRA training. The CLI itself is arch-agnostic — any model Ostris can
train, auto_ft can launch — but only the SDXL path has been exercised
end-to-end so far.
License
MIT — see LICENSE.
Metadata
Release files for auto-ft 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| auto_ft-0.1.1.tar.gz | 57.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| auto_ft-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 96.3 kB
Release files / auto_ft-0.1.1.tar.gz
| Download URL | auto_ft-0.1.1.tar.gz |
|---|---|
| Size | 57.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ac347f24c48b1c3d128f7974dc692693172d3b4ff637853fc30d7be38f29036c
|
|
BLAKE2b-256 checksum How to use checksums |
14565f8559de2f333cde39c17934c341f81ca54aa00e0728e03409997dee529c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / auto_ft-0.1.1-py3-none-any.whl
| Download URL | auto_ft-0.1.1-py3-none-any.whl |
|---|---|
| Size | 39.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3146525d3fd6d0a12a617de18fe3491d8dd69d5b9422e3d244297bab8befab8b
|
|
BLAKE2b-256 checksum How to use checksums |
755b9a5d4e6f9ce1a09417137c07e3cb5abcdfd3b32c35cf96885600aa325ea1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for auto-ft 0.1.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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.