Boris Milner

backend and infrastructure engineer · Tel Aviv

Fourteen years spent close to the metal and close to the data: validating silicon, taking apart binaries and the protocols they speak, moving data at the scale where the obvious approach quietly stops working, and building the platforms other engineers then build on. Right now it is container image security, in Go.

The three tools below are what I build when nobody assigns the work. Each one comes from the same complaint: software interrupts me for nothing, then fails to tell me the one thing I actually needed to know. So these handle what they can on their own, and when they genuinely need a human, they cost you two seconds instead of a context switch.

Cartoon of Boris mid-leap hugging an oversized keyboard, trailing floppy disks and an old beige tower, with world landmarks and streams of binary behind him.

AgentBox

desktop interaction hub for AI agents · Go, Linux/X11

An agent works for twenty minutes while you are somewhere else. The moment it needs one word from you, it either waits in a terminal nobody is watching, or it guesses, and you find out later in the diff. AgentBox is the third option.

AgentBox's robot mascot holding up a card that asks: perform a file integrity check now? Yes / No

When an agent needs a decision, a credential or an approval, a card appears over whatever you are doing. A short sound tells you what kind of thing arrived before you even look. Every option has a number, the whole exchange is one keystroke, and the answer lands back in the code that was blocked on it. Mis-clicked? Answers hold for three seconds behind an undo strip.

if agentbox confirm --title "Push to main?" \
                    --body "12 commits, tests green"; then
    git push
fi

agentbox notify --level success --title "release is live" \
                --speak "the release is out"   # spoken, non-blocking
Every tool is also a CLI. Blocking calls map the answer to an exit code, so a shell script can branch on a human without parsing anything.

Twenty tools: questions, forms, diff reviews with approve and request-changes, progress bars, spoken lines, masked secret entry. All of them over MCP, and the same twenty from the shell. All of it local: no cloud, no account, nothing leaves the machine.

github.com/borismilner/agentbox

Snapper

screenshot capture and annotation · Go, Gio

Snapper starts from Flameshot's in-overlay speed and Snagit's magnifier precision, then adds the editor I always wanted: one where nothing ever flattens. Every arrow, label and redaction stays a separate object you can reselect, restyle or move next week. A scene saves as a .snap project, not a baked PNG.

Annotations stay objects: that arrow drew itself on the way in, and the marching ants mean you can still grab it.

The small decisions are where it earns its keep. Annotations pick white or black by themselves so they read on any background. Closing the editor never loses work; unsaved changes drop a recovery file. And capture history is searchable by the text inside your screenshots, through OCR.

github.com/borismilner/snapper

Grabbit

download manager · Go, Wails, Svelte

A download manager for Linux, built because I loved what JDownloader did and wanted it lean, native and scriptable. Copy a link and Grabbit takes it from there: several connections per file, clean resume after a crash or a reboot, multi-part archives grouped into one package.

My favourite part is the free-hoster machinery. A countdown timer? It waits it out in the background. A captcha? It opens a real browser window, lets you solve it, then carries the whole solved session (cookies, TLS fingerprint and all) into the download. You do the two seconds only a human can do; it does the rest.

Per-connection progress, and a countdown nobody has to watch. Stay on this one a few seconds; the timer is real.

New sites are small YAML or JavaScript profiles dropped in a folder, no rebuild. And everything the desktop app can do, a script or an agent can do too, through one control API over MCP and HTTP/JSON-RPC.

github.com/borismilner/grabbit

Earlier work

JVM, graph databases, Spark

An earlier era, mostly Java and Neo4j. Archived on GitLab and no longer active, but the code is all there.

Say hello

All three tools are open source, and the READMEs are the real documentation. If one of them would be useful to you, take it. If you want to change it, issues and patches are welcome.

Anything else, write to me.