Amogh Mannekote

Outside research

Personal software

I design and build my own tools with coding agents, mostly for focus, attention, and the logistics of running a life. Each one is built for a single user, keeps private data on the machine, and launches from Workbench, a native SwiftUI launcher fed by one shared manifest.

The Workbench launcher: a grid of app icons with names, taglines and Open buttons

Workbench opens with ⌃⌥Space, filters as you type, and opens the selection on ↩. The same apps.json manifest drives the launcher, its icons, and this page.

The suite

Seven tools, one launcher

Focus · Mac app

Ratchet

An accountability timer that only turns one way.

Ratchet lives in the menu bar and asks every minute what I am doing and which goal it serves. Untracked time counts against the day, work cannot start without a goal, and each sitting ends with a yes or no on whether I did what I said. Goals nest into trees with deadlines and completion bonuses, and a 1000-point day score makes drift visible as soon as it starts. One Cloudflare Durable Object holds the state, so the Mac app, a phone PWA, and a public dashboard stay in sync.

Python · PyObjC · TypeScript · Cloudflare Durable Objects

Focus · Command line

Torque

A coach that reads Ratchet data and pushes for more.

Torque is a Claude Code skill that pulls goals, pace, and history from the Ratchet cloud and writes short, data-grounded briefs (a morning plan, a mid-session push, an evening review, a weekly review) with one-tap proposals that go straight back into the app. It pushes in two directions without being asked: faster progress on existing goals, and larger goals than I would set myself.

Claude Code skill · Ratchet cloud API

Attention · Browser extension

Sieve

Read X and LinkedIn without ever seeing a raw post.

Sieve hides every post on X and LinkedIn before it paints and shows a model's reading of it instead: keep, skim, or drop, a category color, signal markers, and a de-hyped rewrite in a chosen voice. A digest mode condenses a whole session into one brief. Because posts are untrusted input, model calls go through a native-messaging host to a locked-down claude -p with no tools.

Firefox extension · native messaging · Claude Code

Attention · Browser extension

DeBait

YouTube titles rewritten to say what the video contains.

DeBait reads each video's transcript or description and replaces the clickbait title with one plain sentence about its content, using a local or OpenAI-compatible model. Hovering shows the original, and Alt+Shift+O restores every title on the page.

Firefox extension · local LLM (Ollama, LM Studio)

Life · Local web app

Treasury

Every account, card, and brokerage in one encrypted local dashboard.

Treasury pulls bank, credit card, and brokerage data through Plaid and shows spending, cash flow, net worth, and holdings in one place. It runs only on the Mac, inside one AES-256-GCM vault keyed by scrypt, bound to loopback with a DNS-rebinding guard, auto-lock, and a strict content security policy, with no npm dependencies.

Node · Plaid · hand-drawn SVG charts

Life · Command line

OTP Clipboard

One-time codes land on the clipboard; reset links never auto-open.

A daemon watches agent inboxes over a websocket and copies sign-in codes to the clipboard, so a login never pulls me into an inbox. Account links such as password resets and magic sign-ins wait in a menu-bar list that shows their real destination host, since a reset link is as sensitive as a password. Extraction is regex only and is tested against twelve providers and six false-positive traps.

Node · AgentMail · SwiftBar

Lab · Local web app

Parenting Probe

Test a parenting strategy on simulated children before trying it on real ones.

Several small open models (Llama, Mistral, Gemma) play children with distinct personas, and a fixed Qwen judge scores whether each child complies, including whether they still eat the broccoli once the parent leaves the room. A held-out set of unseen children, with a distribution-shifted split, checks whether a conclusion generalizes beyond the personas it was tuned on.

Python · MLX · local LLMs

Design principles

How they are built

01

Make the bad path impossible, not merely costly

Ratchet will not let work start without a goal and Sieve never paints a raw post, because a design that relies on willpower fails on the days it is needed most.

02

Local first and private by default

Money, codes, and feeds stay on the machine, and any model call over untrusted input goes through a locked-down CLI with no tool access.

03

Built for one user

There is no onboarding and there are no settings nobody uses. Each tool fits one person's habits exactly, which keeps each one small.

04

Agents write the code, I own the specification

Coding agents produce the implementation. My work is the specification, the corrections, and the decisions about what to throw away.