A calm, fast terminal companion for git — AI commit messages, live sync, and one-command onboarding.
Project description
Ryft
A calm, fast terminal companion for git — AI commit messages, live sync, formatting, and health checks, wrapped in a premium terminal UI.
pip install ryft
ryft
That's it. If this is the first time Ryft has been run in this folder, it will walk you through a 10-second setup and drop you straight into a ready-to-use session.
What it does
- AI commit messages — a small local model (via Ollama) writes conventional commit messages from your diff. Tiny changes skip the AI entirely; identical diffs are cached.
- Live sync —
ryft watchwatches your project and automatically formats, messages, commits, and (optionally) pushes on save. - Formatting — strips comments and collapses blank lines for Python and Lua, safely (it verifies the result still parses before writing).
- AI review & analysis —
/reviewand/analyzefor a second pair of eyes on your changes, using a larger local model. ryft doctor— a full health check (Python, git, remotes, branch, Ollama, models, config, permissions, repo state) with plain-English explanations and one-command auto-fixes (ryft doctor fix).
Usage
Ryft works two ways:
ryft # interactive session — type /help for commands
ryft doctor # run one command and exit, e.g. from a script or CI
ryft commit
ryft watch
ryft --help # usage summary
ryft --version # installed version
Running a single command (anything after ryft) never blocks on a prompt —
if there's no .src.py yet it proceeds on sane defaults instead of asking,
so it's safe to call from scripts and CI. Run ryft init first if you want
the interactive setup walkthrough.
Inside the interactive session, everything is a slash command:
/status project status at a glance
/init set up Ryft in this project (safe to re-run)
/commit commit all changed files, AI messages generated in parallel
/push /pull publish or fetch
/diff /diff <file> GitHub-style diff, scrollable
/review <file> AI code review
/analyze AI summary of everything that changed
/sync start|stop background watch mode
/doctor /doctor fix health check + auto-repair
/config init write a .src.py with the defaults
/help full command list
Configuration
Ryft is configured with a .src.py file at your project root — plain
Python, not YAML/TOML, so it's just as easy to script as it is to read:
class Project:
name = "my-app"
class Ollama:
commit_model = "qwen3:0.6b"
analysis_model = "qwen2.5-coder:7b-instruct-q4_K_M"
class Git:
branch = "main"
remote = "origin"
If no .src.py exists, Ryft offers to create one the first time you run
it — you're never left guessing what to do next.
Development
pip install -e ".[dev]"
pytest
The codebase is a small set of focused modules:
| module | responsibility |
|---|---|
config.py |
.src.py discovery, loading, validation |
git.py |
every git invocation goes through here |
ai.py |
Ollama client, diff summarizer, commit messages |
formatter.py |
comment stripping / blank-line collapsing |
doctor.py |
health checks |
recovery.py |
shared auto-repair helpers (used by doctor + commands) |
onboarding.py |
first-run setup flow |
sync.py |
file-watch → format → commit → push pipeline |
commands.py |
the command registry / dispatcher |
ui.py |
the terminal UI (Rich + Prompt Toolkit) |
License
MIT
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 ryft-1.0.1.tar.gz.
File metadata
- Download URL: ryft-1.0.1.tar.gz
- Upload date:
- Size: 49.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc8ce01ac8dc5cf80f6f246028f2ddcc5c167909c328062252a1fbd84a0feb5f
|
|
| MD5 |
3526d96670421cf534b6e050e124bbe4
|
|
| BLAKE2b-256 |
a4aa6c55cad20c9031635a3d0ab66ef5005a102592c61c9894487e0d2762412c
|
File details
Details for the file ryft-1.0.1-py3-none-any.whl.
File metadata
- Download URL: ryft-1.0.1-py3-none-any.whl
- Upload date:
- Size: 48.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14795b35534352ee3d70571269a00de37a84d7629caeaca77635a64c13868f6c
|
|
| MD5 |
cc4f7b0256f715c6e9110e658247d437
|
|
| BLAKE2b-256 |
e4f2b1cf2f28dffb99f07af82129741d61e60c9fe74a6d04cf9f7a4fedfa7525
|