Agentic LoRA fine-tuning tool wrapping ostris/ai-toolkit. Skill + Python CLI for Claude Code.
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file auto_ft-0.1.0.tar.gz.
File metadata
- Download URL: auto_ft-0.1.0.tar.gz
- Upload date:
- Size: 57.2 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
add775e3119ea6bac7910dcf2d170bcc52e92fdeecbb59ebf67ed6f9f78cb73f
|
|
| MD5 |
e2bd38bb6a450eccd48ca475de21f20a
|
|
| BLAKE2b-256 |
e43a1c700e3f872ff9400f661043ac6901f00ec3dcde6e28d8888e015ccc4f8d
|
File details
Details for the file auto_ft-0.1.0-py3-none-any.whl.
File metadata
- Download URL: auto_ft-0.1.0-py3-none-any.whl
- Upload date:
- Size: 39.2 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2273acc986fded6f77e6a9f89a391d129b39bd9bad1c011a31d1f2edda57da78
|
|
| MD5 |
deb4adbf666c6694911294f41c720995
|
|
| BLAKE2b-256 |
a487d976ca50e32df8ca0d2efb7bbfa51ecd9a74782850aad83d77c44c73a716
|