zero fluff, pure function

turn messy intent into clean, professional output

view on github →
sinner demo
$ _

local-first CLI agent · private by design

what is sinner?

private

your data never leaves your machine · zero tracking · zero surveillance · zero compromise

local-first

no cloud · no accounts · no telemetry · runs entirely on your machine with your own LLM

clean output

no emojis · no markdown noise · paste-ready professional text that ships immediately

six commands, infinite clarity

sinner name

generate professional names for variables, functions, and classes

$ sinner name "handles user authentication logic"
→ authenticateUserCredentials
sinner commit

create conventional commit messages from change descriptions

$ sinner commit "added user authentication middleware"
→ feat(auth) -> add user authentication middleware
sinner squash

generate single commit message for squash merges from git history

$ sinner squash --count 5
→ feat(auth) & fix(validation) -> implement user authentication and fix input validation
sinner pr

generate PR descriptions from git history with title and bullets

$ sinner pr --count 3
→ Updated project configuration
- Improved prompt accuracy and grounding
- Clarified commit command behavior
- Fixed code block formatting
sinner comment

informal summaries of recent changes from git history

$ sinner comment --count 3
→ tweaked the formatter for consistency, restructured git commands, added PR/squash distinction
sinner explain

explain code or technical concepts clearly and concisely

$ sinner explain "what is async/await?"
→ asynchronous programming pattern that allows non-blocking code execution using promises

ready to ship?

no cloud · no tracking · no bs · just you and your LLM turning chaos into clarity

clone the repo and start →

installation

1

clone the repo


git clone https://github.com/clasei/sinner.git
cd sinner
2

set up python environment


python -m venv venv
source venv/bin/activate  # or venv\Scripts\activate on Windows
pip install -e .
3

initialize config


sinner config --init
4

start your local LLM

recommended: LM Studio
google/gemma-3n-e4b


# add your LM Studio endpoint, api key, and model ID to .env 
echo "SINNER_LLM_URL=http://127.0.0.1:1234" >> .env
echo "LMSTUDIO_API_KEY=lm-studio" >> .env
echo "MODEL_ID=google/gemma-3n-e4b" >> .env
5

ship it


sinner commit "add some local-first config options"
sinner pr --count 5
sinner explain "what is sinner?"
sinner demo
$

local-first CLI agent · private by design

why sinner matters

privacy

your code, your machine, your rules. no cloud means no leaks, no surveillance, no data mining.

control

choose your model, customize your prompts, own your workflow. no vendor lock-in, no API limits.

speed

local inference is instant. no network latency, no rate limits, no downtime. just pure function.

your code, your machine, your rules

stop sending your commits to the cloud. keep your workflow private. build something real.

get sinner →