ianlan.dev
Local-first developer tools.
Software that runs on infrastructure you control, keeps credentials under your control, and tells you plainly what it cannot do yet.
- Twelve projects
- Every one self-hosted
- Every doc set says what it is not
The Packet family
Five projects sharing a prefix and a design sensibility — rather less code than that suggests. How they fit together →
PacketBench
alphaA local-first desktop agent development environment. Multi-CLI workspaces, a bring-your-own-key agent picker, Flight Deck orchestration across parallel worktrees, SSH remotes, an MCP hub, project memory and issue tracking — in one native app.
PacketCode
alphaA keyboard-first coding agent that lives in the terminal. One Go binary holding the conversation, tool execution, permission approvals, background agents and MCP connections — speaking to eleven built-in providers, plus any OpenAI-compatible endpoint, rather than binding you to one.
PacketAgent
alphaA self-hosted control plane for Workers — long-running jobs woken by a schedule, a webhook or an alert, that keep going after whatever created them has closed. Each run carries explicit permissions, a budget and an audit trail.
PacketChat
alpha Source privateA private multi-user AI workspace for a small team: chats, projects, prompt libraries, knowledge bases and agents, all against admin-managed provider keys on your own infrastructure. Nobody holds their own key.
PacketRelay
early Source privateAn opaque WebSocket router in Rust. One-to-one bridges, one-to-many broadcast and authenticated multi-member rooms — deployed infrastructure reserved for PacketBench’s planned Remote Agents.
Other tools
The same sensibility, without the shared prefix and without any shared code.
Nodehouse
alphaA self-hosted community BBS reached by Telnet or a browser terminal. Both transports drive the same multi-node session engine for messages, mail, chat, files, administration and door games.
Syndicate
early Source privateA local-first control plane for AI coding agents. It launches a coding-agent CLI you already installed, gives each writable task its own locked Git worktree, and records everything to an append-only event log a browser replays live. The listener binds to loopback and refuses any other address.
Sugar
alpha Source privateOne OpenAI-compatible endpoint in front of the several model providers a small team already pays for, deciding per request which family and which supplier serves it. A single Node process over a single SQLite file.
demarc
alpha Source privateA self-hosted AI phone receptionist for numbers bought from Telnyx. It transcribes the caller, asks a language model what to say, and streams the reply back as speech down the same socket — plus SMS and a dashboard with an attached CRM.
Blackbox AI
alpha Source privateA civic observatory and research workbench for Ridgeport, a persistent fictional world whose residents, institutions and ambient systems continue while the service runs. Observation is read-only by default; research is something you enter deliberately.
Midnight
MVP acceptance Source privateAn open-source platform-as-a-service control plane for one trusted Linux VM: deploy an app, route it, and keep it running, with deployment records, a hash-chained audit ledger and an embedded agent that can deploy, roll back and diagnose failures.
Midnight Marketing
alpha Source privateThe public site for the self-hosted Midnight alpha. Its build verifies the rendered markup, the security headers and the canonical redirect, and refuses to publish product claims that were withdrawn for being ahead of what Midnight can do.