A lightweight, web-based IDE designed for easy deployment on a VPS or Railway. Provides a full development environment accessible from any browser — file management, code editing with syntax highlighting, multiple terminal sessions, and integrated AI coding agents.
- File Explorer — Grid and tree views with breadcrumb navigation, upload, rename, delete, and context menus
- Code Editor — CodeMirror 6 with syntax highlighting for JavaScript, TypeScript, Python, HTML, CSS, JSON, Markdown, and more. Ctrl+S to save
- Multi-Terminal — Multiple persistent terminal sessions with tabs. Sessions survive tab switching
- AI Agents — One-click launch for Claude Code and OpenAI Codex directly in the terminal
- Browser Preview — Built-in iframe browser for previewing web apps
- Theming — Customizable color scheme with live preview
- Branding — Custom instance name and icon (shows in browser tab and PWA)
- PWA — Installable as a Progressive Web App
- Authentication — Token-based auth with configurable credentials
| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite, Tailwind CSS |
| Editor | CodeMirror 6 (modular, lazy-loaded language support) |
| Terminal | xterm.js + node-pty via WebSocket |
| Backend | Express.js, TypeScript |
| Deployment | Docker, Node 20 |
# Install dependencies
npm install
cd client && npm install && cd ..
# Run dev server (backend + frontend with hot reload)
npm run devThe app will be available at http://localhost:5173 (Vite proxy forwards API calls to the backend on port 3000).
Default credentials: admin / admin
docker build -t mini-ide .
docker run -p 3000:3000 -v mini-ide-data:/data mini-ide- Connect your repo to Railway
- Add a volume mounted at
/datafor persistent storage - Set environment variables as needed (see below)
| Variable | Default | Description |
|---|---|---|
AUTH_USERNAME |
admin |
Login username |
AUTH_PASSWORD |
admin |
Login password |
DATA_DIR |
/data |
Directory for user files (mount a volume here) |
PORT |
3000 |
Server port |
SHELL |
/bin/bash |
Shell used for terminal sessions |
GITHUB_TOKEN |
— | Auto-login to GitHub CLI on container start |
ANTHROPIC_API_KEY |
— | Required for Claude Code |
OPENAI_API_KEY |
— | Required for OpenAI Codex |
mini-ide/
├── client/ # React frontend
│ └── src/
│ ├── components/ # UI components
│ │ ├── FileExplorer.tsx # File browser (grid + tree)
│ │ ├── FileTreeView.tsx # Tree view with collapsible dirs
│ │ ├── CodeEditor.tsx # CodeMirror 6 editor
│ │ ├── EditorTabs.tsx # Editor tab bar
│ │ ├── Terminal.tsx # Multi-session terminal
│ │ ├── FilePreviewModal.tsx # Image/file preview modal
│ │ ├── PreviewWindow.tsx # Browser iframe
│ │ ├── ThemeCustomizer.tsx # Theme editor
│ │ ├── LoginScreen.tsx # Auth screen
│ │ └── ContextMenu.tsx # Right-click menu
│ ├── hooks/ # Custom React hooks
│ ├── utils/ # Shared utilities
│ ├── App.tsx # Main layout
│ └── theme.ts # Theme system
├── server/ # Express backend
│ ├── index.ts # Server entry, routing, WebSocket
│ ├── filesystem.ts # File I/O API (/api/fs/*)
│ ├── terminal.ts # PTY spawning + WebSocket handler
│ ├── auth.ts # Authentication
│ └── branding.ts # Instance customization
├── Dockerfile
├── docker-entrypoint.sh
└── package.json
The Docker image includes:
- Node.js 20 — JavaScript runtime
- Git — Version control
- GitHub CLI (
gh) — GitHub operations from the terminal - Claude Code — Anthropic's AI coding agent
- OpenAI Codex — OpenAI's AI coding agent
- vim, nano — Terminal text editors
- curl, wget — HTTP clients
- build-essential, python3 — Build tools
Private — Verne Studios