DH
Dustin Hargrove
Software Portfolio · Vol. 01
№ 06 · MMXXVI
DH.PORTFOLIOMMXXVITHE SHIP LOG — A PROGRAMMER'S QUARTERLYSAN FRANCISCO EDITION☼ CLEAR · 62°F
— PortfolioSelected work · 2018 → 2026Vol. 01 · № 06

Swift on a phone.Go on a server.Shipped solo.

Native iOS and macOS apps with on-device AI. Full-stack web platforms in Go and Next.js. Security tooling that reads OSV databases and writes CI/CD workflows. ML training pipelines running MLX on Apple Silicon. A self-hosted SSH client. An open-source Headscale dashboard. Each project is designed, architected, and built by me — blank file to shipping product. What ties them together is the standard: strict concurrency, real security, comprehensive tests, and interfaces that feel native to their platform.
AI Lab— Live demos · sites with AI-driven backends · click to enterEnter →
Selected Work
— Six features · spanning 2018 → 2026 · Swift · Go · TypeScript
0106
FEATURE / 2026
01

CoreChat

Private AI chat for iPhone — on-device inference, zero cloud dependency
SwiftSwiftUIiOS 26MLXNeural Engine
Year
2026
Platforms
iOS
Stack
Swift · SwiftUI · MLX · Neural Engine

A private chat app that runs language models directly on your phone — your data never leaves your hands.

  1. Multiple model backends locally — MLX, Llama, Mistral on Apple Neural Engine.
  2. Real-time voice input via SpeechAnalyzer; image understanding via Visual Intelligence.
  3. Built natively for iOS 26, optimized for iPhone 17 Pro.
  4. Optional cloud model access under full user control — offline-first by default.
FIG. 01.01Onboarding · on-device by default4 plates
CoreChat — Onboarding · on-device by default
Chat · Foundation Models
FIG. 01.02 · Chat · Foundation Models
Chats list · pinned + recent
FIG. 01.03 · Chats list · pinned + recent
Memory & controls menu
FIG. 01.04 · Memory & controls menu
Cloud models · dev mode
FIG. 01.05 · Cloud models · dev mode
TERMINAL / 2026
02

ShellForge

Native SSH client for macOS and iOS — terminal, SFTP, tunnels, themes in one Swift 6 app
Swift 6SwiftNIO-SSHSwiftTermSQLCipherSecure Enclave
Year
2026
Platforms
macOS · iOS
Stack
Swift 6 · SwiftTerm · SwiftNIO-SSH · SQLCipher

Replaces the fragmented workflow of terminal + SFTP + tunnels. Swift 6 strict concurrency, 8-module SPM.

  1. Full xterm-256color terminal via SwiftTerm + SwiftNIO-SSH; 22 built-in themes and an editor.
  2. Dual-pane SFTP browser, port forwarding, ProxyJump chains in a single unified app.
  3. SQLCipher-encrypted local database, Secure Enclave + FIDO2/YubiKey — credentials never leave the device.
  4. Phone-first iOS layout; terminal scrollback exposed to VoiceOver — accessibility not retrofitted.
FIG. 02.04Theme editor · live terminal previewCOMPANION
macOS companion
FIG. 02.01iOS terminal · 256-color SSH session5 plates
ShellForge — iOS terminal · 256-color SSH session
SFTP browser · remote filesystem
FIG. 02.02 · SFTP browser · remote filesystem
ANSI colors · OK/WARN/ERR log levels
FIG. 02.03 · ANSI colors · OK/WARN/ERR log levels
SECURITY / 2025
03

ScanDev

Software security scanner — vulnerabilities, SBOMs, and supply chain protection
Swift 6.2SwiftUIGo CLISBOMCycloneDX
Year
2025
Platforms
macOS · CLI
Stack
Swift 6.2 · SwiftData · Go · Claude API

Nine ecosystems. OSV + GitHub Advisory databases. Supply-chain protections, SBOM exports, AI deep scan.

  1. OSV and GitHub Advisory databases with native audit tools (npm, govulncheck, pip-audit, cargo audit).
  2. Supply chain protections: typosquatting detection, new-package cooldown, reachability analysis.
  3. AI deep scanner via Claude API; on-device Apple Intelligence on macOS 26.
  4. Exports CycloneDX/SPDX SBOMs, SARIF, VEX documents, generates CI/CD workflows.
FIG. 03.01Overview · AI project analysis + vulnerability roll-up3 plates
ScanDev
Dependencies · outdated packages, typosquat flag
FIG. 03.02 · Dependencies · outdated packages, typosquat flag
AI settings · provider + on-device vs. external comparison
FIG. 03.03 · AI settings · provider + on-device vs. external comparison
INFRA / 2025
04

TailDeck

Open-source Headscale dashboard — manage your self-hosted VPN from a browser
Next.js 16React 19PrismaSocket.ioAuth.js
Year
2025
Platforms
Web
Stack
Next.js 16 · Prisma · Socket.io · Auth.js

Clean, visual management for self-hosted Headscale — devices, access, topology, in-browser SSH.

  1. BFF architecture — Headscale API keys never touch the browser, all calls server-proxied.
  2. Five-level RBAC (Owner → Auditor) with Auth.js + Authentik OIDC and per-request middleware.
  3. Real-time node status via Socket.io; topology maps with React Flow + ELK.js.
  4. XChaCha20-Poly1305 encrypted API keys, audit logs, CSP headers, Pino secret redaction.
FIG. 04.01Health dashboard · overview + metrics2 plates
Health dashboard · overview + metrics
TailDeck
FIG. 04.0VLive walkthrough · 1:42MP4 · H.264
● REC · Live walkthrough · 1:42
demo poster
0:00 / 0:00
Network topology · React Flow + ELK
FIG. 04.02 · Network topology · React Flow + ELK
Machines list · status + last seen
FIG. 04.03 · Machines list · status + last seen
ML / 2026
05

TrainingML

MLX training studio for macOS — fine-tune, convert, and deploy AI models locally
SwiftMLXCore MLLoRAcoremltools
Year
2026
Platforms
macOS · iOS
Stack
Swift · MLX · Core ML · coremltools

Pick a Hugging Face model, feed it your data, watch training happen on your Mac — then export to any device.

  1. MLX-first LoRA fine-tuning with configurable rank, alpha, target modules across Llama, Phi, Qwen, Gemma.
  2. Core ML conversion via coremltools 9.0 with stateful KV-cache and multifunction export.
  3. Post-conversion compression: linear quantization, palettization, magnitude pruning per-operation.
  4. Distributed training over Bonjour with All-Reduce gradient sync; iOS companion for benchmarking.
FIG. 05.01Welcome · project picker4 plates
TrainingML
Intake · Hugging Face model browser
FIG. 05.02 · Intake · Hugging Face model browser
First-run tutorial · guided pipeline setup
FIG. 05.03 · First-run tutorial · guided pipeline setup
Training · live metrics + checkpoint timeline
FIG. 05.04 · Training · live metrics + checkpoint timeline
PLATFORM / 2026
06

NewsRAG

AI-powered content engine — from tech news to platform-tailored social posts
GoReact 19TypeScriptPostgreSQLOllama
Year
2026
Platforms
Web
Stack
Go · React 19 · PostgreSQL · Ollama

Turns the daily flood of tech news into ready-to-publish posts — Go API, React 19 dashboard, provider-agnostic LLMs.

  1. Full-stack Go REST API (chi, PostgreSQL 16, zerolog) with React 19 + Vite frontend.
  2. Provider-agnostic LLMs — swap local Ollama and cloud OpenRouter without a restart.
  3. Five prompt styles (Analyst Brief → Skeptical Engineer); emoji, controversy, CTA controls.
  4. Multi-workspace with RBAC, audit logging, hot-reloadable config.
FIG. 06.01Draft dashboard · queue + scheduler4 plates
Draft dashboard · queue + scheduler
NewsRAG
Draft editor · workflow + review links
FIG. 06.02 · Draft editor · workflow + review links
Tone settings · AI suggestions · variant opt.
FIG. 06.03 · Tone settings · AI suggestions · variant opt.
Settings · LLM configuration (Ollama local)
FIG. 06.04 · Settings · LLM configuration (Ollama local)

§ About · The Standard
I build tools I want to use — then I ship them with the same care as if a million people depended on them.
— DH / Statement of Purpose

Every project in this portfolio was designed, architected, and built by me from a blank file to a shipping product. I move between Swift and Go, iOS and web, on-device ML and cloud infrastructure — choosing the right tool for each problem rather than forcing one stack on every challenge.

What ties them together is the standard: strict concurrency, real security (not security theater), comprehensive tests, and interfaces that feel native to their platform. I care about the details that users never see — encrypted databases, audit logs, accessibility for VoiceOver — because shipping well means shipping responsibly.