I'm Haroon, an engineer focused on turning difficult ideas into reliable products.

Available for work

Private AI, local-first tools, and reliable backend systems — Android to Go to Python, with the work shared in open source.

Open-source contributions

Work visible in public.

60

Pull requests

17

Merged

23

Repositories

Signal / field

Move the pointer

Selected work

Built to work in the real world.

01

Wake AI

Private, searchable AI memory built for Android.

Kotlin, Jetpack Compose, Gemma

Problem
Useful information is scattered across notifications, screens, apps, and conversations, then becomes difficult to retrieve when only its meaning is remembered.
System
Wake captures text on device, stores it in Room, combines FTS keyword retrieval with local embeddings, and grounds answers in cited memories using an on-device or user-selected cloud model.
Engineering proof
  • On-device text and embeddings
  • Hybrid semantic and keyword retrieval
  • Cited answers with approval-gated actions
How it works
  1. Capture on device
  2. Room · FTS · embeddings
  3. Hybrid retrieval
  4. Cited answers
02

DeadDrop

A local-first coding task inbox reachable from anywhere.

Go, FastAPI, PostgreSQL

Problem
Remote task handoff should not require exposing a developer machine, local repositories, or credentials to a hosted service.
System
A hosted FastAPI inbox queues work while an authenticated Go worker polls outbound, runs the configured local agent, and returns logs, status, summary, and git diff.
Engineering proof
  • Outbound-only local worker
  • Token-separated owner and worker access
  • Human-reviewed diff receipts
How it works
  1. Browser inbox
  2. FastAPI queue
  3. Go worker (outbound)
  4. Local agent → diff
03

OutSync

Reliable database event delivery through the transactional outbox pattern.

FastAPI, Kafka, PostgreSQL

Problem
Writing business data and publishing its event separately creates a failure window where state changes can reach the database but never reach the queue.
System
The application writes business data and an outbox record in one transaction; an asynchronous worker then publishes pending events to Kafka and marks them processed.
Engineering proof
  • Transactional outbox
  • Asynchronous polling worker
  • Containerized Kafka and PostgreSQL stack
How it works
  1. App transaction
  2. Outbox record
  3. Polling worker
  4. Kafka → processed
04

Herald

A local-first communication agent that sends only after explicit approval.

Rust, SQLite, SMTP / IMAP

Problem
A communication agent with your account is a program that can speak as you. If the model can touch the provider directly, every send is a trust violation.
System
Herald keeps authority in Rust: the model emits a typed ActionPlan and never touches a provider, a rules router and small local classifier do the planning, and every send becomes a pending approval with body and SHA-256 that only `herald approve` can send.
Engineering proof
  • Approval with body + SHA-256 before every send
  • Idempotent writes with audit log
  • Local model planning, no cloud inference
How it works
  1. Read providers locally
  2. Draft with local model
  3. Pending approval (hash)
  4. Approve → send
05

Zyquor

A local-first X posting assistant with grounded drafts and a review queue.

Rust, TypeScript, SQLite

Problem
Posting well is the hard part. Most AI social tools write generic filler, decide what to post for you, and automate engagement.
System
Zyquor reverses that: the LLM writes candidate text only, deterministic quality rules reject slop, every draft lands in a review queue, and a worker posts approved jobs through a dedicated Chrome profile.
Engineering proof
  • LLM writes candidates only, never browses or schedules
  • Deterministic quality rules over LLM opinion
  • Review queue gates every publish
How it works
  1. Idea / source item
  2. Grounded candidates
  3. Review queue → approve
  4. Worker → Chrome profile → post

Everything else

06

Containerized Agent

Natural-language shell and Python task execution in isolated Docker environments.

Docker, FastAPI, Python

07

CrawlWise

High-performance crawling and structured extraction across thousands of domains.

TypeScript, React, AI/ML

08

PromoAgent

Autonomous community outreach with tailored, high-engagement content.

Python, LangGraph, Marketing

09

Percolation Hypotheses

A hypothesis generation engine built to accelerate computational research.

Python, NLP, Research

10

Neural Network From Scratch

Deep learning fundamentals implemented from first principles.

Python, ML Fundamentals

11

neighbourd

LAN discovery and pairing for local AI agents. No broker, no cloud.

Go, mDNS, MCP

12

Meeting Scheduling Agent

Local scheduling agent with LLM intent extraction and deterministic policy, booking real Google Calendar events.

Python, Google Calendar, OpenRouter

13

Notion Agent Bridge

Chrome sidepanel to localhost bridge to agent-CLI edits applied to the Notion page DOM.

Python, Chrome Extension, opencode

Those times when you don’t feel like working, you’re too tired, you don’t want to push yourself, but you do it anyway.That is actually the dream. That’s the dream.

Kobe Bryant, 2017
Fig. 01Terrain, drawn one pixel at a time in your browser.