A short debrief for the code you just pushed. Ownit asks one to three questions about your change, right in your terminal. Build understanding alongside your AI coding workflow.
Watch the narrated ad · Get started · How Ownit uses Nemotron on Nebius · See how it works
When you run git push, Ownit's pre-push hook offers a debrief: why you made the change,
how it works, and what could come next. Your chosen model writes the questions and grades your
answers: Nemotron on Nebius or NVIDIA, OpenAI, Claude, or DeepSeek. Debrief now or return later with ownit interview.
| Push | Explain | Build your record |
|---|---|---|
| Use your normal Git workflow. | Answer 1–3 short questions about the change. | Passing debriefs mark commits as verified on GitHub and your repo page. |
Illustrative terminal examples. The image uses a one-question demo; the transcript below shows a two-question push. Setup includes browser sign-in and GitHub App installation. Questions and grading vary with your change.
$ git push
Ownit (2 commits to octo/shop) Debrief now? [Y/n] y
Question 1/2 (why)
Why does checkout now retry some failed card payments instead of failing the order right away?
> so temporary card errors dont lose the sale
✓ Passed.
Question 2/2 (how)
How does the retry decide when to give up?
> permanent declines fail right away, temporary ones retry up to 3 times
✓ Passed.
✓ Push verified. 2 commits owned. Nice work.
Coding agents let you ship code faster than you can read it. Ownit makes understanding your own code a habit: a two-minute check while the change is still fresh. Rough answers are fine. A miss gets a hint and a new question, and you can always stop and finish later.
| Why | How | Next |
|---|---|---|
| Explain the purpose of the change. | Describe the approach and how it works. | Consider a limitation, risk, or improvement. |
Small pushes get one question; larger ones get two or three. Ownit is a learning tool: a passed debrief records understanding at the keyboard, not proof of authorship or code correctness.
By default, questions and grades in Ownit come from NVIDIA Nemotron 3.5 Super (120B parameters,
12B active), model nvidia/Nemotron-3.5-Super-VL, served by
Nebius Token Factory through its OpenAI-compatible API at
https://api.tokenfactory.nebius.com/v1/. Nebius is the default provider. Users who have no Nebius
account can use a key from NVIDIA instead (nvidia/nemotron-3.5-super-vl-120b-a12b on
build.nvidia.com), which runs the same model. The server picks the model, so the CLI never needs
an update when it changes.
You can also bring an OpenAI, Claude (Anthropic), or DeepSeek API key:
| Provider | Save your key | Default model | Environment variable |
|---|---|---|---|
| OpenAI | ownit key set openai |
gpt-4.1-mini |
OPENAI_API_KEY |
| Claude (Anthropic) | ownit key set claude (or anthropic) |
claude-haiku-4-5 |
ANTHROPIC_API_KEY |
| DeepSeek | ownit key set deepseek |
deepseek-flash |
DEEPSEEK_API_KEY |
Paste the key at the hidden prompt. Run ownit model to see the models your server uses.
Environment variables override the saved key, in this order: NEBIUS_API_KEY, NVIDIA_API_KEY,
OPENAI_API_KEY, ANTHROPIC_API_KEY, DEEPSEEK_API_KEY (first set wins).
A debrief makes three kinds of model call, all from the Cloudflare Worker
(worker/src/debrief.ts):
| Call | What the model gets | What it returns |
|---|---|---|
| Question writer | The push's commit messages and diff, and how many questions to ask (1–3, by push size). | Why / how / next questions, a hidden reference answer for each, and a one-line summary of the push. |
| Grader | One question, its reference answer and your answer. It never sees the code. | Pass or fail, plus short feedback. |
| Follow-up writer | The diff, the question you missed and the grader's feedback. | One easier question on the same topic, for another try. |
How it works:
- Bring your own key.
ownit key setstores your provider key on your machine. The CLI sends it with each debrief request, and the worker calls your selected provider with it and then drops it. You pay your provider directly. The worker never stores or logs the key. - Structured output. Each call asks for JSON (with
response_format: json_objectfor chat-completions providers). Claude uses the Messages API and the same JSON instructions. The worker validates the reply with zod and retries once if it is malformed. The grader runs at temperature 0 and the writers at 0.3. - Prompt-injection resistant. Code, commit messages and answers go in tagged data blocks,
separate from the instructions. The grader only sees the question, its reference and the answer.
scripts/live-injection-checktests the real model against injected answers. - Sealed answer keys. Reference answers travel between requests inside an encrypted token that only the server can open, so the CLI can't read them.
- Code is never stored. The diff goes to your chosen model on your account and is then discarded. Answers are discarded too, unless a public repo's admins choose to show passing answers.
All three system prompts are in prompts/, and the provider code is
worker/src/model.ts. docs/DETAILS.md has the full details.
You need Node 20+, a GitHub repo and an API key from Nebius Token Factory,
NVIDIA, OpenAI,
Anthropic, or DeepSeek.
ownit key set asks which provider your key is for (or name it: ownit key set openai).
1. Install the CLI.
npm i -g getownit2. Sign in with GitHub.
ownit login3. Save your API key. Pick your provider, then paste your key at the hidden prompt. It stays on your machine.
ownit key set4. Set up your repo. Run this inside your clone. It installs the pre-push hook and registers the repo.
cd your-repo
ownit init5. Install the Ownit GitHub App when ownit init asks. If the App is not on the repo yet,
ownit init opens the install page in your
browser and waits. On that page:
- Pick the account or organization that owns the repo.
- Choose Only select repositories and select the repo (or your fork, if that is where you push).
- Click Install, go back to the terminal and press Enter.
ownit init checks again and finishes setup. If you are not the repo's owner, send them the link and
ask them to install it for the repo; press q to finish later, then run ownit init again once it is
installed. Signing in with ownit login does not install the App, and there is no desktop app to download.
Until the App covers the repo, Git pushes still work but Ownit cannot record debriefs.
On Windows, use Git Bash in Windows Terminal for the interactive debrief.
Push as usual. Ownit asks before each push:
| Answer | What happens |
|---|---|
| Y or Enter | Answer the questions now. |
| n | Do it later with ownit interview. |
Your push always goes through, whatever you answer.
Each push is verified (all questions passed) or pending (not done yet). Pending commits
count as unverified, with no deadline. Run ownit interview whenever you like: it lists the
waiting pushes by commit message, and you pick which one to debrief. Its commits then become
verified. During a debrief, type s to stop and come back to it later.
GitHub shows an Ownit check on the commit. It is always green, so Ownit never blocks a merge;
the badge and repo page show what is still unverified.
Once Ownit is set up on a repo, everyone who commits to it is responsible for debriefing their own
commits. If someone pushes without finishing their debrief, the repo page lists them under
Waiting on a debrief, with how many of their commits are still open, until they run ownit interview.
Each pending push also says whose debrief it is waiting on.
| Command | What it does |
|---|---|
ownit login |
Sign in with GitHub. |
ownit init |
Install the pre-push hook in this repo and register it. Opens the GitHub App install page if the App is missing. |
ownit interview |
List your waiting pushes (including ones an AI agent made) and debrief the one you pick. |
ownit interview --all |
Debrief every waiting push in turn. |
ownit interview --range A..B |
Debrief any commit range, or --range <sha> for one commit. |
ownit key set [provider] |
Save a Nebius, NVIDIA, OpenAI, Claude (claude or anthropic), or DeepSeek key. Paste it at the hidden prompt, never after the command. |
ownit key status / ownit key clear |
Show or remove the key. |
ownit badge |
Print this repo's badge Markdown to paste into your README. |
ownit settings |
Show this repo's settings and page link. |
ownit settings questions|answers on|off |
Choose what the page shows. Repo admins and maintainers only. |
ownit settings earlier on|off |
Let older commits count once someone debriefs them. Admins and maintainers only. |
ownit whoami |
Show the server, your GitHub login, your key and its model. |
ownit model |
Show which provider and model your debriefs use (also ownit plan). Your key applies in every repo on this computer. |
ownit uninstall |
Remove the hook from this repo. |
ownit logout |
Sign out. |
OWNIT_SKIP=1 git push |
Push once without the prompt. The push is pending. |
ownit help <command> |
Details and examples for one command (same as ownit <command> --help). |
When a coding agent (Claude Code, Cursor, Codex, CI…) pushes, nobody is at the terminal, so Ownit
records the push as pending and lets it through. Run ownit interview yourself to answer for the
change; until then its commits count as unverified.
- GitHub: each push's newest commit gets a green Ownit check, titled Ownit: verified or Ownit: not debriefed yet. It never shows as pending or blocks a merge.
- Repo page:
https://ownit.ownit-worker.workers.dev/<owner>/<repo>lists recent pushes, stats, and who still owes a debrief. It shows the debrief questions unless the repo's admins hide them, and passing answers only if they turn that on. - Badge: like
Ownit | Verified 55% | Unverified 45%, linking to the repo page.ownit initprints the code to paste into your README;ownit badgeprints it again, and the repo page has a Copy button.
The server updates itself; there is nothing to do for it. For the CLI:
npm install -g getownit@latest
ownit --versionReleases are listed on the releases page. Your login, key and repo setup are kept across updates.
The launch campaign includes the ad video, poster, captions, terminal examples, and source renderer.
Privacy, self-hosting, how it works and limitations: docs/DETAILS.md. Overview of the code: docs/ARCHITECTURE.md. Every prompt sent to the model: prompts/.
Issues and pull requests are welcome. CONTRIBUTING.md covers setup, tests and what to keep true; please follow the Code of Conduct. Report security problems privately, as described in SECURITY.md.
MIT. You can use, copy, change and redistribute Ownit, including commercially and in closed-source projects, as long as you keep the copyright and license notice. It comes with no warranty. Contributions are released under the same license.


