Winston
A browser-based IDE built mobile-first: Monaco editor, real terminal sessions, an AI chat agent, and git panel, served over LAN so any device on the network can code.

Screenshot unavailable. The project description below explains the workflow.
What it is
Winston is a browser-based IDE served over the local network. The premise: your development environment should be reachable from your phone, tablet, or any machine on the LAN, without the interface falling apart on a small screen.
The problem it solves
Most remote-development tools treat mobile as a demo case. Real work happens in odd moments - reviewing a diff from the couch, running a command from a phone, editing a config from a laptop that has nothing installed. Winston treats the small screen as a first-class target while scaling up to a full desktop IDE experience.
My contribution
I built the server and client: the Fastify server with node-pty terminal sessions, the React frontend with resizable panes, the mobile-first navigation, and the OpenAI-compatible chat agent with tool use for file editing, terminal commands, and code search.
Architecture
- Server: Node.js with Fastify, WebSocket transport, and real terminal sessions through node-pty - not a web shell simulation.
- Frontend: React with Monaco Editor, xterm.js, and Allotment split panes.
- AI: any OpenAI-compatible provider (Ollama, OpenRouter, or others), streaming with tool use.
- PWA: service worker with offline support, share target, and install-to-home-screen.
Engineering decisions
Real terminals via node-pty. Simulating a shell in the browser breaks the moment a tool reads a TTY; node-pty keeps every CLI tool behaving as if a human typed it.
Mobile layout as a distinct mode, not a squeezed desktop. Bottom tab navigation across Files, Editor, Terminal, and Chat, with touch-optimized passive event listeners, rather than shrinking the desktop grid.
Provider-agnostic AI. The chat agent speaks the OpenAI-compatible protocol, so local models and hosted models are configuration, not different integrations.
Stack
TypeScript, Node.js, Fastify, node-pty, React, Vite, Monaco, xterm.js, WebSocket.
The walkthrough above was recorded against a scratch repository containing fictional sample code. Cross-device state sync is a feature of the product; this site does not host a terminal server.