PROJECTS(7) Linux User's Manual PROJECTS(7)

NAME

projects - software built by Ari (Hamid) Zare

SYNOPSIS

man ari | grep -A3 projects
44 projects. Also as json and yaml.

FEATURED

Determined - Open-source deep learning training platform for GPU clusters, acquired by HPE (2019 - 2024)

Determined web UI experiment page with best validation metric curve and a table of trials

Open-source platform for distributed training, hyperparameter search, and GPU cluster resource management, with a Go master, a Python training harness, and Kubernetes and Slurm resource managers. Joined Determined AI as engineer #14 in 2019 and stayed through the 2021 HPE acquisition, working across the job scheduler, metrics storage, Kubernetes support, APIs, and CLI. Landed 695 merged PRs in the public repo, which has 3k+ GitHub stars.

Go, Python, PostgreSQL, Kubernetes, gRPC, TypeScript
github | details

Multi-cluster Kubernetes gateway proxies - One Determined master running tasks across multiple Kubernetes clusters through gateway proxies (2024)

Feature in the open-source Determined platform that lets a single master schedule tasks across multiple Kubernetes clusters and resource managers. Gateway resources deploy alongside each task's rank 0 pod, and task ports are translated to a configurable range of gateway listener ports so proxied traffic reaches tasks in remote clusters. Led the project at HPE through implementation, tests, and user docs, and spun out a developer tool that connects a local dev cluster to remote Kubernetes clusters.

Go, Kubernetes, Helm, Python
details

mao - Multi-agent orchestrator that fans one prompt across coding agents and reconciles the results (2026)

Python orchestrator that runs CLI coding agents concurrently in fan-out, fan-in, and organizer pipelines, and tracks their sessions across machines. A hosted console authenticates requests and enqueues typed commands into a Postgres registry; per-machine workers claim them with leases, run local agents, and report topology. The browser never executes shell commands or sees secrets, and API contracts are OpenAPI snapshots with generated clients and drift checks.

Python, PostgreSQL, FastAPI, Go, React, Docker
live | details

VirtualCam - Face tracking and background effects for any video call app (2020 - 2026)

Webcam Mods virtual camera feed shown next to an ffmpeg stream log in a demo video
watch the demo

Real-time virtual camera pipeline that captures a camera or screen, runs segmentation and face tracking, and outputs through v4l2loopback on Linux or OBS Virtual Camera on macOS. Started in 2020 because Zoom had no virtual backgrounds on Linux; now adds background blur and swap, desk view, gesture reactions, and a native SwiftUI menu bar app that drives a managed Python worker over a JSONL protocol. 71 GitHub stars.

Python, OpenCV, MediaPipe, Swift, SwiftUI, v4l2loopback
github | product page | demo video | details

GenAI Studio - Generative AI playground built on the Determined training platform at HPE (2023 - 2024)

HPE's generative AI playground for deploying and prompting open models from a web UI, built on the Determined deep learning platform. As one of the early senior engineers, contributed to its design, iteration, and productionization. Platform work in the open-source repo includes proxying master requests to internal services, a new AWS deployment type, deployment health checks, and WebUI integration.

Go, Python, Kubernetes, AWS, TypeScript
details

Portable Browser - Control plane that runs remote Chromium sessions and hands agents scoped CDP access (2026)

Control plane for remote browser sessions. Workers dial out over a single persistent WebSocket, so they need no inbound ports, and that connection multiplexes control messages, Chrome DevTools Protocol tunnels, and HTTP and WebSocket proxy frames under a zod-typed wire protocol. Consumers get short-lived scoped tokens, persistent browser profiles, and shared or exclusive session locks through an OpenAPI API, generated SDKs, a CLI, and an operator UI.

TypeScript, PostgreSQL, WebSocket, Chrome DevTools Protocol
live | details

NetsBlox - Networked block-based programming language for teaching distributed computing (2017 - 2019)

NetsBlox home page with the Create button and the RoboScape extension banner

Open-source, web-based visual programming environment that extends Snap! with message passing and remote procedure calls, so students build networked apps with blocks. As a research assistant at Vanderbilt ISIS from 2017 to 2019, worked on the Node.js server: the RPC framework, service caching, the message router, API doc generation, and CI. Landed 213 merged PRs and co-authored papers on the platform at SIGCSE and IEEE Blocks and Beyond.

JavaScript, Node.js, MongoDB, WebSockets, Snap!
github | live | details

zmenu - Fast native fuzzy menu for macOS, written in Zig directly against AppKit (2023 - 2026)

zmenu popup filtering a list by the query al and showing the matches alpha and alpine

dmenu-style fuzzy menu that drives AppKit from Zig through the Objective-C runtime. Items arrive on stdin or live over a versioned, length-prefixed JSON IPC socket via zmenuctl, are filtered with fuzzy matching and a Levenshtein fallback, and the selection prints to stdout. Startup latency is measured with benchmarks that send real keyboard events, and it serves as the UI for ComboSwitcher. Started in 2023 as GMenu, a Go version, and rewritten in Zig in 2026.

Zig, AppKit, Objective-C runtime, Unix sockets, Swift
github | product page | details

gopm - PM2-style process manager in Go with a user-level daemon and sleep-aware cron (2025 - 2026)

Process manager for long-running apps, shipped as one static Go binary. A Cobra CLI talks over a Unix socket to a user-level daemon that needs no sudo, adopts running children, persists run history in BoltDB, applies restart policies, captures logs, and sends crash-loop alerts. Cron scheduling follows wall-clock time across machine sleep, and the daemon is tuned for laptops with a single shared ticker for adopted processes.

Go, Cobra, BoltDB, Unix sockets, launchd
details

Generalizable Q-Learning Framework - Deep Q-learning framework that trains agents for Snake, Tic-Tac-Toe, Connect-N, and CartPole (2018)

Python framework built around a reusable Double DQN agent with a target network, replay memory, Huber loss, and epsilon decay, plus a shared game interface so new environments plug in as small drivers. Supports self-play training for two-player games and ships trained Tic-Tac-Toe weights and Snake reward curves.

Python, Keras, TensorFlow, OpenAI Gym, Matplotlib
github | details

MORE PROJECTS

Browser Control - Lets CLI coding agents drive a real browser through a Go daemon and Native Messaging bridge (2026)

Automation layer that lets CLI coding agents operate a real Chrome, Firefox, or Zen browser. A Go CLI talks over a Unix socket to a local daemon, and a Native Messaging host relays framed JSON to a Manifest V3 extension, built on the open-source ScriptCat userscript manager, that owns a dedicated agent window. Agents get per-task session leases, tab access controls, screenshots, page snapshots with element refs, and a guide mode that draws steps on the page and waits for the human.

Go, TypeScript, React, Manifest V3, Native Messaging, Playwright

openwrt-store - Durable JSON record store for a home router with CAS, atomic batches, and change feeds (2026)

Always-on record store for home-LAN apps, running on an OpenWrt router as a 3 MB static binary. An axum service on a single-threaded tokio runtime over SQLite in WAL mode provides namespaces, bearer tokens and quotas, store-wide monotonic revisions, If-Match compare-and-swap, atomic batches, and long-poll change feeds. Durability settings were chosen from benchmarks run on the router itself.

Rust, axum, tokio, SQLite, OpenWrt, nginx

Dubit - Duration-aware video dubbing with translated speech fitted to the original timing (2025 - 2026)

Web app that dubs videos from their timed captions, starting with Persian. The pipeline groups captions into cost-aware chunks, translates each against a target duration, synthesizes speech through pluggable TTS providers, then measures every clip and stretches it with pitch preserved, pads silence, or shortens and re-synthesizes it to fit its source window before mixing dialogue over the original audio bed. Jobs are asynchronous and resumable, with Postgres-backed checkpoints, caching, and per-job cost tracking.

Python, FastAPI, PostgreSQL, FFmpeg, React, TypeScript
product page | live

Doomgate - Android app that interrupts compulsive scrolling with pauses, time budgets, and surface blocking (2026)

Kotlin Android app that uses an AccessibilityService to interrupt reflexive app opens, meter per-app allowances, and block short-video surfaces such as Reels and Shorts while leaving messaging and search usable. A pure-Kotlin rule engine handles schedules, DST-aware hourly allowances, session caps, cooldowns, and strictness modes. Local-first by construction: no accounts or telemetry, with network use limited to signed APK update checks, enforced by automated release privacy gates.

Kotlin, Jetpack Compose, Room, DataStore, AccessibilityService, ML Kit

Forking Chat - Restaurants upload their menus and guests chat with an AI assistant that knows them (2025 - 2026)

Multi-tenant SaaS where restaurants upload menu images or PDFs, an LLM pipeline extracts and validates structured menus, and guests chat with a menu-aware assistant per restaurant. FastAPI and Postgres backend with sqlc-typed SQL, a React 19 UI served from a Cloudflare Worker, and a durable import job system with orphaned-job recovery. The public LLM endpoint is protected by layered per-guest and global rate limits, concurrency caps, and repetitive-content detection.

Python, FastAPI, PostgreSQL, React, TypeScript, Cloudflare Workers
product page

Investments - Looks through funds to true sector, region, and fee exposure, and picks ETF mixes with a MILP (2025 - 2026)

Portfolio analysis web app that imports holdings from OFX/QFX, brokerage CSV, and other exports, then splits each holding across sectors, regions, and underlying companies, including funds of funds, using SEC N-PORT filings and prospectus fee data. It compares portfolios against saved targets, models fee drag and switch plans, and solves ETF selection as a mixed-integer program with HiGHS in WebAssembly on a worker thread. Multi-user, with private per-user data, export, and delete.

TypeScript, Next.js, Bun, PostgreSQL, Drizzle, HiGHS
product page | live

CompCalc - Browser-only compensation forecaster with stock scenarios and startup equity modeling (2025 - 2026)

Static Next.js app that turns a compensation plan into a multi-year forecast across bear, base, and bull stock paths with a probability-weighted expected value. Models RSUs, ISO and NSO options with strikes, dilution, illiquid private equity until exit, vesting cliffs, promotions, and refreshers. All computation runs client-side with versioned plan files and undo, and offers import through the URL hash, so no data reaches a server.

TypeScript, Next.js, Zustand, Recharts, Tailwind
product page | live

Roboscape Device Provisioning - Mobile app that batch-provisions WiFi on classroom robots with no shared network (2018 - 2019)

Cordova mobile app that configures groups of Parallax robots with Xbee WiFi modules when no common network exists, built for the Roboscape cybersecurity curriculum. After evaluating four provisioning strategies, including a WiFi Direct prototype the Xbee could not support, it treats each robot as an access point: the app scans, joins, configures, and rejoins the user's network in batch. Includes C firmware changes and opt-in ownership verification.

JavaScript, Cordova, Vue, C, Android
github | camp page

MSc thesis: Hands-On AI and Cybersecurity Education in High Schools - Vanderbilt master's thesis on block-based AI and cybersecurity education tools (2019)

Master's thesis in computer science at Vanderbilt on hands-on AI and cybersecurity education for high school students. Contributions include Visual RL, a Snap!-based reinforcement learning playground with Q-learning abstractions; portable batch provisioning and access control for networked RoboScape robots; and NetsBlox Player, a mobile runtime for NetsBlox projects. The cybersecurity lessons expose virtual network traffic so students can attack and defend networked robots.

NetsBlox, Snap!, JavaScript, Reinforcement learning, LaTeX

Latent Byte Utils - Android utility app, starting with highly configurable home and lock screen widgets (2026)

Kotlin and Jetpack Compose app built around a pluggable utility registry. Its first utility is a single Glance widget that renders photos, folders, feeds, JSON values, web page snapshots, and offline trackers such as countdowns, counters, and habits. WorkManager refreshes content with last-good fallback, Wi-Fi-only and quiet-hours rules, change alerts, and dedupe of identical fetches. Ships signed APKs with an in-app updater.

Kotlin, Jetpack Compose, Glance, WorkManager, OkHttp, kotlinx.serialization

PyCalc - Plugin-based calculators where Pydantic models generate the web UI, charts, and SEO pages (2023 - 2026)

Calculator platform where each calculator is a Python plugin with Pydantic input and output models and a compute function. A React UI renders forms from the input schema and results, stat tiles, trend charts, and tables from the output schema, so a new calculator needs no frontend code. The live calculator models rental properties with taxes, depreciation, sale costs, and a year-by-year buy versus rent-and-invest comparison, served as crawlable server-rendered pages.

Python, Flask, Pydantic, React, TypeScript, Tailwind
product page | live

Roamline - Trip planner for comparing multi-stop routes, deciding as a group, and sharing travel history (2026)

Full-stack trip planner for comparing alternative multi-stop routes, coordinating group decisions, and sharing travel history. A React and MapLibre SPA talks to a Hono API on Bun backed by PostgreSQL with PostGIS and a self-hosted reference geodata layer, so place labels and regions need no third-party API. Time and location are captured exactly, and viewing precision is applied when shared.

TypeScript, Bun, Hono, React, MapLibre, PostgreSQL/PostGIS
product page | live

ComboSwitcher - One fuzzy menu over windows, apps, browser tabs, tmux sessions, files, and scripts on macOS (2024 - 2026)

Daily-driver launcher and window switcher for macOS, inspired by Rofi on Linux. A Go daemon aggregates items from pluggable providers, including tiling window manager windows, installed apps, browser tabs, tmux sessions, recent files, and external scripts, then ranks and merges them by usage and drives the zmenu UI over Unix-socket IPC. A thin client toggles it from a hotkey.

Go, Cobra, Viper, Unix sockets, AeroSpace, Zig (zmenu UI)
product page

filter-merge - Low-memory DNS filter-list merger for AdGuard Home on OpenWrt routers (2026)

Zero-dependency Rust HTTP server that downloads configured DNS filter lists, merges them with an external sort over bounded on-disk runs, drops duplicate rules across lists, and serves one merged list on loopback for AdGuard Home. On a GL-MT3000 router, AdGuard RSS fell 30.5% right after activation and restart (12.4% once warmed), while the merger and its curl downloads peaked at 11.3 MiB combined. Ships static ARM64 and x86_64 binaries with a checksum-verifying OpenWrt installer.

Rust, OpenWrt, Shell, GitHub Actions
github

netstats - Network-quality monitor in Go that runs on an OpenWrt router (2025 - 2026)

Go collector that probes targets over ICMP and TCP every 5 seconds, stores samples in SQLite, and serves stats through a CLI, an HTTP API, and a dashboard hosted on the router itself. Runs on Linux, macOS, and OpenWrt. On the router it keeps the live database in RAM and snapshots it to flash to limit wear, and adds on-demand speed tests recorded with connection context.

Go, SQLite, OpenWrt, nginx, JavaScript, Shell

ABoard - Android keyboard that reads on-screen conversation context and drafts LLM replies (2026)

Extends an open-source Jetpack Compose keyboard into an AI reply assistant for Android. Captures conversation context through MediaProjection screenshots with ML Kit OCR or an AccessibilityService text pipeline, filters it into a structured prompt, calls LLMs through OpenRouter, retrying without tools when a model lacks tool support, and inserts the chosen reply into the focused field. Ships signed APK releases with an in-app updater.

Kotlin, Jetpack Compose, Android IME, AccessibilityService, ML Kit, OpenRouter

Markdown Notes - Mobile PWA editor for a git-backed Markdown notes file, with no database (2026)

Self-hosted web editor for a Markdown notes file kept in a git repository, with git as the only storage and sync layer. Parses lines into typed blocks, applies small line patches guarded by block hashes so concurrent edits are detected, commits every accepted write, and syncs with fetch, rebase, and push. Includes OIDC sign-in, an offline PWA with queued writes, a conflict-resolution UI, and vim-style navigation.

TypeScript, Bun, Hono, Vite, git, Docker

Anonymous Inbox - Anonymous two-way inbox: share a link, senders write back without an account (2026)

Owners sign in, publish an inbox link, and receive messages from senders who need no account. Senders return to their thread with a secret capability code carried only in the URL fragment and stored server-side as a peppered fingerprint. Owner notifications never include message text. Built on Next.js and Postgres with validated server actions, rate limiting, and a custom migration runner.

TypeScript, Next.js, React, PostgreSQL, Drizzle, Bun
product page | live

Calendar - Merged multi-user calendar agenda with push alerts, plus a CLI for status bars and availability (2025 - 2026)

Python toolkit that started as a CLI for ICS feeds (status bar output, next events, HTML agenda, multi-timezone availability) and grew into a multi-user FastAPI server. Users sign in, add private calendar feed URLs, and get a merged agenda, shareable links, and web push notifications. The CLI and server share one ICS loading and recurrence-expansion core.

Python, FastAPI, PostgreSQL, Web Push, Docker, uv
product page | live

Falcon 9 Simulation - Numerical simulation of a reusable rocket launch and landing that minimizes leftover fuel (2018)

Two-person project simulating a Falcon 9 style rocket in 2D as it climbs to a 200 km apogee and performs a landing burn, modeling thrust, gravity, drag, and altitude-dependent air density. Each flight stage is re-solved with adjusted launch ratio, takeoff angle, and landing-burn parameters to converge on the profile that minimizes leftover propellant and maximizes horizontal velocity at apogee. Prototyped in Matlab, then ported to Python.

Python, NumPy, Matplotlib, Matlab
github

Next Block Prediction - Language models that suggest the next block in block-based programs (2017)

Graduate research that treats block-based programs (Scratch, NetsBlox) as token sequences and predicts the next block a student will use. Compares n-gram models with Kneser-Ney smoothing, evaluated by perplexity, against GRU and LSTM networks using one-hot or word2vec block embeddings, trained on a public Scratch project corpus. Includes t-SNE views of block embeddings and an interactive top-3 predictor.

Python, TensorFlow, Keras, word2vec, Matplotlib
github

Distributed PubSub Broker - Topic-based publish/subscribe broker over a Chord-style DHT with failure detection (2017)

Led a student team that designed and built a resilient topic-based pub/sub broker from scratch in Python and ZeroMQ, exploring Chord and ZooKeeper based designs. Event servers form a consistent-hash ring; publishers and subscribers look up the node that owns a topic, register, and exchange events, and heartbeats trigger re-lookup and re-registration when a server dies. Evaluated on Mininet network topologies with latency measurements.

Python, ZeroMQ, Chord DHT, ZooKeeper, Mininet
github

BranchLogic - Write a decision tree in YAML and share a link that walks anyone through it step by step (2020 - 2026)

Web app that turns small YAML decision trees, including loops and conditional branches, into navigable step-by-step walkthroughs. Trees are validated against a JSON schema, edited in an in-browser Monaco YAML editor with schema-aware completion, and stored locally, with breadcrumbs, back navigation, and shareable deep links to any step. Served as a static SPA from Cloudflare Workers.

TypeScript, React, Vite, Material UI, Monaco Editor, Cloudflare Workers
product page | live

NetsBlox Player - Mobile app that runs networked NetsBlox projects on Android and iOS (2017 - 2019)

Ionic and Cordova app that embeds the full NetsBlox browser client so students can run their networked block-based programs on phones and tablets. Kept in sync with the web client through a submodule and rebuild script, with mobile-specific keyboard and room-tab UX fixes.

Ionic, Cordova, TypeScript, JavaScript, Android
github

Stackrank - Mobile-first stack ranking for text, links, and images with shareable campaigns (2026)

Owners build a campaign of text, link, or image items, publish a share link, and respondents drag-rank on touch, pointer, or keyboard, with results aggregated per campaign. Images go through an HMAC-signed upload proxy to object storage that treats uncertain storage writes as accepted and reconciles them through idempotent completion instead of blind retries. Built on Next.js and Postgres.

TypeScript, Next.js, React, PostgreSQL, Drizzle, dnd-kit
product page | live

Small Web Utilities - Shareable link lists, AI question links, and contact cards served from the edge (2025 - 2026)

Monorepo of small public web tools, including Linked List, Let Me Do That For You, and a shareable contact card with QR code. Linked List encodes anonymous lists entirely in the URL and serves them from a Cloudflare Worker, so they keep working when the origin is down, while signed-in managed lists pass through to a Next.js and Postgres origin. Analytics are scrubbed of phone numbers and contact details before tracking.

TypeScript, JavaScript, Next.js, Cloudflare Workers, PostgreSQL, Bun
product page: let me do that for you | product page: linked list | product page: contact me | live: linked list | live: let me do that for you | live: utilities

task-manager.nvim - Neovim plugin to triage, prioritize, and sort Markdown to-do lists (2025 - 2026)

Lua plugin for Markdown task lists in Neovim. Assigns [pN] priorities interactively, moves tasks between categories with generated shortcuts, sorts stably by priority while preserving sub-item hierarchy, and moves checked tasks to the bottom of their section. A headless regression harness runs in CI across Neovim stable, v0.10.0, and nightly.

Lua, Neovim API, GitHub Actions
github

user-scripts - Browser userscripts for web annoyances, from review-aware shopping scores to GitHub tweaks (2019 - 2026)

Public collection of browser userscripts organized by site, built from a separate typed TypeScript source repo. Adds review-aware scoring to Amazon, Airbnb, and AliExpress listings using a Wilson lower bound ranked relative to the page, puts failing GitHub checks first and adds PR diff stats, auto-mutes Meet and Teams, and adds shift-click range selection to web dashboards.

JavaScript, TypeScript, Tampermonkey, Violentmonkey
github

Visual Machine Learning - Machine learning and reinforcement learning blocks for the Snap! visual programming environment (2018)

Research prototype at Vanderbilt that exposes machine learning and reinforcement learning as blocks in Snap!, so students can train agents without writing text code. Runs in the browser with TensorFlow.js with a deep Q-learning agent (neural Q-network with replay memory) exposed as blocks, and blocks to build, train and save models.

JavaScript, TensorFlow.js, Snap!
github

Fog Alert - Fog-based intrusion detection with a Raspberry Pi camera, MQTT, and pluggable detectors (2018)

Led a two-person team building an intrusion detection system from decoupled components: an edge Raspberry Pi captures camera frames, an analyzer server classifies them with swappable detectors, and alerts flow over an MQTT broker to a NodeMCU alert module. End-to-end timing carried through the message path compares cloud and fog deployments, and Ansible provisions the broker and servers.

Python, MQTT, Raspberry Pi, Arduino, Ansible, Docker
github

Sketch Adventures - Global Game Jam 2018 game where hand-drawn doodles come to life (2018)

Global Game Jam 2018 team entry in Rust: players move with the arrow keys and draw with the mouse, and each drawing is classified by a CNN trained on Quick, Draw! doodles, then spawned into the world as an entity, a few of which affect gameplay. Contributed the Python recognition side: the 10-category classifier wrapper, drawing preprocessing, and the predictor output consumed by the game.

Rust, Python, Piston
github

Humanize - Offline, deterministic prose checker and rewriter with a CLI and an OpenAPI web API (2026)

Rule-based writing tool that reports repetitive-prose metrics and applies small deterministic edits, such as wordy phrases, punctuation, optional contractions, typos, and formatting cleanup, with no model or network calls. A seeded batch mode distributes options across many drafts exactly and reports cross-item repetition. One engine powers a Bun CLI and a web workbench with a contract-first API.

TypeScript, Bun, Hono, zod, Next.js, Docker
product page | live

Snippet Recorder - Android app for quick text and voice notes with on-device Gemini Nano summaries (2026)

Flutter app that captures text snippets and voice recordings, stores them locally, and optionally transcribes audio through Deepgram. Generates titles and summaries on-device with Gemini Nano through ML Kit via a Kotlin platform channel, with a fallback path on unsupported devices. Ships as signed APKs with an in-app updater and scripted release tooling.

Flutter, Dart, Kotlin, ML Kit, Deepgram, Android

QLearner.js - Q-learning agent library that trains in the browser with TensorFlow.js (2018)

JavaScript port of an earlier Python deep Q-learning project that trains agents directly in the browser with TensorFlow.js. Provides an agent with replay memory, player and game abstractions, a live training-history chart, and a tic-tac-toe demo where the agent trains against an alpha-beta minimax opponent.

JavaScript, TensorFlow.js, Chart.js, Babel

SEE ALSO

* ari(7), the resume
* PDF Resume: Download Resume
* GitHub: github.com/hamidzr

PROJECTS(7) updated 2026-10-23 PROJECTS(7)