Wingman

View on GitHub

RustWin32Ollama

Wingman is a Windows app that sits behind the Copilot key. Press the key and it screenshots the active monitor, sends it to a vision model, and shows the answer on a small card in the corner. There is no chat window.

It ships more than two dozen built-in actions, among them Check my work, Add event from screen, Review this email and Fill this form. Each action is a short definition of a prompt, the inputs it reads and the executor allowed to act on the result. The latest release is v0.3.0, from 1 November 2026.

It can use OpenAI, Anthropic or Gemini with your own API key, or a local model through Ollama, and keys live in Windows Credential Manager rather than a config file. One rule is permanent: Wingman fills, drafts and proposes, but never presses Send, Submit, Buy or Pay.

In Offline mode, the app blocks every network call that would leave the machine before a connection opens. That rule is enforced in the code itself.

Wingman, measured
MeasurementResult
Executable size4.6 MB, inside a 4.65 MB budget
Idle footprintabout 22 MB of memory, 0% CPU until pressed
Offline modeblocks every network call that leaves the machine

Syringe Pump

View on GitHub

C++ArduinoAccelStepperGoogleTest

A syringe pump I designed and built from scratch. A NEMA 17 stepper motor turns an 8 mm lead screw that pushes the plunger, so the step rate sets the flow rate directly.

The Arduino firmware drives the motor through an A4988 driver at 1/16 microstepping using AccelStepper. An LCD shows the flow rate and the time remaining. A knob sets the rate during a run, and a limit switch and LED interlocks stop the pump at the end of travel. The pump math and the control logic are unit tested on a PC.

Syringe Pump, measured
MeasurementResult
Flash used14,426 of 32,256 bytes (44%)
RAM used791 of 2,048 bytes (38%)
Steps per revolution3,200
Flow rate range0 to 7.5 mL/min, 0.1 mL/min steps
Unit tests40, all passing