AI-Powered • Automated Developer Study Notes

Turn Every Git CommitInto Obsidian Study Notes.

AI writes the code, but you have to explain it in interviews. ink automatically turns every commit into clear Obsidian study notes and flashcards so you always master what you shipped.

Try Interactive Demo
$git clone Tanay-77/ink
Zero build frameworks
Obsidian [[Wikilinks]]
SM-2 Spaced Repetition
Plain language notes

See It in Action

From raw Git diff to interconnected Obsidian note and interactive interview quiz.

git show adb8e16
src/llm.ts
@@ -15,6 +15,14 @@ export async function callLLM() {
  const baseDelay = 1000;
+ // Exponential backoff with jitter for 429 rate limits
+ const delay = baseDelay * Math.pow(2, attempt);
+ const jitter = Math.random() * 200;
+ await new Promise((res) => setTimeout(res, delay + jitter));
  return fetch(apiUrl, { method: "POST" });
@@ -28,3 +36,5 @@ }
Automated Diff Analysis1 concept extracted
concepts/exponential-backoff.md
#intermediate

# Exponential Backoff with Jitter

Tags:#ink#networking

## Explanation (Simple Language)

Exponential backoff is a strategy where our app waits longer after each failed request (1s, 2s, 4s) instead of spamming the server immediately. Adding random jitter prevents all clients from retrying at the exact same millisecond.

## Interview Questions

- Q: Why do we add jitter to exponential backoff instead of just using pure exponential delay?

Answer: Pure exponential backoff causes the "thundering herd problem" where multiple clients retry at synchronized waves. Adding random jitter desynchronizes the retries and smooths out server traffic.

## Examples

- [[2026-10-23-adb8e16]] : src/llm.ts

Engineered for Developers

Minimal dependencies. Maximum retention.

Built with pure Node.js, strict TypeScript, and zero heavy frameworks.

Simple Language First

When you take notes, you write in plain English. Concepts are explained like a teammate chatting over coffee—free from robotic AI fluff and textbook jargon.

plain developer English

Background Git Hook

Run ink install-hook once. Every commit triggers an asynchronous post-commit process that never blocks your git workflow.

non-blocking async execution

3-Layer Deduplication

Combines exact slug matching, normalized tokens with filler words dropped, and Levenshtein similarity to merge concepts automatically into your existing notes.

75% fuzzy threshold

SM-2 Spaced Repetition

Uses the battle-tested SuperMemo-2 algorithm to calculate review intervals and ease factors so you review difficult concepts more frequently and retain knowledge longer.

automatic interval expansion

Obsidian Native [[Wikilinks]]

Generates standard YAML frontmatter, tags, aliases, and bidirectional [[wikilinks]] that instantly light up your Obsidian graph view.

100% offline markdown files

Explain-Back Simulator

Practice technical interviews right in your terminal. Explain your commit in your own words, and get graded from 0 to 5 on accuracy, missed edge cases, and follow-ups.

0-5 technical interview rubric
Flexible Workflow

How It Works in 5 Steps

Generate notes on-demand for specific commits, or turn on the background hook for 100% automation.

1

Build & Link Globally

Run once in the cloned repository to compile TypeScript and register ink in your system PATH so it runs anywhere:

$ npm run build
$ npm link
2

Set Your Global API Key Once

Save your API key in your home directory so all projects detect it automatically:

macOS / Linux

Writes your key to ~/.ink/.env in your user home directory.

$ mkdir -p ~/.ink && echo "API_KEY=..." > ~/.ink/.env
Windows (PowerShell)

Creates $HOME\.ink\.env in your user profile folder.

> mkdir -Force "$HOME\.ink"; Set-Content...
3

Initialize in Any Repository

Navigate into any project folder and connect it to your Obsidian vault directory:

$ ink init
4

Generate Notes — Choose Your Flow

Use whichever approach fits your current coding workflow:

On-Demand (HEAD or Specific Commit)

Generate study notes only when you want them without installing any background hooks.

$ ink run HEAD # latest
$ ink run a1b2c3d # specific
Automatic (Background Git Hook)

Set it and forget it. Every git commit triggers silent background note generation.

$ ink install-hook # once
$ git commit -m "..." # auto
5

Review Daily Quizzes & Practice Interviews

Retain what you built with spaced-repetition and test your architectural reasoning:

Daily Quizzes in Obsidian

Generates today's interactive quiz note with spaced repetition (SM-2) and click-to-reveal answers.

$ ink quiz
Practice Technical Interviews

Explain your architectural decisions in plain words right in your terminal. Get scored 0 to 5.

$ ink explain HEAD
Answers

Frequently Asked Questions