Skip to main content

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 syncryft watch watches 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/review and /analyze for 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ryft-1.0.0.tar.gz (49.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ryft-1.0.0-py3-none-any.whl (48.2 kB view details)

Uploaded Python 3

File details

Details for the file ryft-1.0.0.tar.gz.

File metadata

  • Download URL: ryft-1.0.0.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

Hashes for ryft-1.0.0.tar.gz
Algorithm Hash digest
SHA256 d34e9ca0bb69550e9b245efc0894eda8f476d09c4bb8f5609e738782658ecf96
MD5 2cdacc7f7436ff486ff39840d9a142b3
BLAKE2b-256 9d521bf1942d7bbfcd336451ea256a8ba890ed1d1b6120554df6b3fb044cfbf9

See more details on using hashes here.

File details

Details for the file ryft-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ryft-1.0.0-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

Hashes for ryft-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4c803f242b277af43592c13559128926476ec5d5390f91f94a07e406f341fe35
MD5 05f17066b209331003d8ad847fa9ca8f
BLAKE2b-256 8ba1a2525a7b0052f7698f9f4cfca106ae995f3e31d6ae91c0fa32c287809305

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page