Projects

Things I’ve built and shipped, and what each one is made of.

2 of 2

Relay lets a group watch an AI coding agent work on a real codebase at the same time. One person runs a command inside their own project folder, which starts the agent on their machine and prints a link. Anyone who opens that link watches the same run live, and control can be passed to someone else in the middle of a task without restarting anything. The agent stays on the host's machine, so the server never holds anyone's code, never runs commands, and never sees anyone's login. Giving some server access to your codebase is the usual dealbreaker for a tool like this, and Relay is built so that never has to happen.

  • TypeScript
  • Node.js
  • WebSockets
  • Next.js
  • PostgreSQL
  • Prisma
  • Claude Agent SDK

Relay

Watch an AI agent work, together.

Relay lets a group watch an AI coding agent work on a real codebase at the same time. One person runs a command inside their own project folder, which starts the agent on their machine and prints a link. Anyone who opens that link watches the same run live, and control can be passed to someone else in the middle of a task without restarting anything. The agent stays on the host's machine, so the server never holds anyone's code, never runs commands, and never sees anyone's login. Giving some server access to your codebase is the usual dealbreaker for a tool like this, and Relay is built so that never has to happen.

Built with

  • TypeScript
  • Node.js
  • WebSockets
  • Next.js
  • PostgreSQL
  • Prisma
  • Claude Agent SDK
  • Everyone with the link watches the same run live, and someone who joins halfway through gets the full history rather than only what comes next.
  • Only one person can send instructions at a time, and the server is what enforces that, not the interface. Verified by sending an instruction straight to the server while skipping the UI entirely, which the server rejected.
  • Control passes between people mid task without restarting the agent. A dropped connection rejoins as the same person and keeps control if they had it, as long as they are back within 30 seconds.
  • The server stamps an order onto every event before sending it out, so two people watching never see things happen in a different order.
  • The agent runs on the host's own machine, so the server holds no code, runs no commands, and stores no logins.
  • The live session is held in memory, while Postgres keeps a copy of the transcript so an old link opens as a read only recording instead of a dead page.

ThinkLytix.AI

Decision Intelligence engine for all.

A two-part supply chain SaaS: a public marketing site and a full-stack application with its own authentication system. The Gemini API powers real-time predictive analysis, and the interface is built around the data visualisations rather than bolted on after them.

  • Next.js
  • React
  • Express
  • Node.js
  • MySQL
  • Prisma
  • Gemini API

ThinkLytix.AI

Predictive analysis for supply chains.

A two-part supply chain SaaS: a public marketing site and a full-stack application with its own authentication system. The Gemini API powers real-time predictive analysis, and the interface is built around the data visualisations rather than bolted on after them.

Built with

  • Next.js
  • React
  • Express
  • Node.js
  • MySQL
  • Prisma
  • Gemini API
  • Two surfaces from one product: a public marketing site and the application itself, deployed separately.
  • Ships its own authentication system rather than delegating to a hosted identity provider.
  • The Gemini API drives the real-time predictive analysis over supply chain data.
  • The interface is designed around the data visualisations rather than having them bolted on afterwards.
  • Express and MySQL sit behind the Next.js front end, with Prisma as the data layer.