Hotplate
π₯ HotPlate β Fast HTTPS live-reload dev server
Ask AI about Hotplate
Powered by Claude Β· Grounded in docs
I know everything about Hotplate. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
π₯ Hotplate
β‘ Lightning-fast HTTPS live-reload dev server powered by Rust.
A blazingly fast, single-binary replacement for Live Server β built from scratch in Rust with zero runtime dependencies.
π Landing Page
Why Hotplate?
Live Server (ritwickdey) hasn't been maintained since 2021 (900+ open issues). It has critical bugs β HTTPS relative path crashes, can't read JSONC comments in settings.json, and requires the entire Node.js runtime.
Hotplate fixes all of this with a single ~7.5MB binary:
| Metric | Live Server (JS) | Vite | π₯ Hotplate |
|---|---|---|---|
| Binary size | ~50MB (Node.js) | ~80MB (Node.js) | ~7.5MB |
| Startup time | ~800ms | ~300ms | ~10ms |
| Memory (idle) | ~40MB | ~50MB | ~3MB |
| HTTPS | β οΈ Buggy | β | β rustls |
| JSONC support | β | β | β |
| No runtime needed | β | β | β |
| Framework agnostic | β | β | β |
Features
- β‘ Blazingly fast β Axum + Tokio async runtime, starts in ~10ms
- π HTTPS native β Built-in TLS with rustls, relative cert paths just work
- π Live reload β WebSocket-based, auto-injected into HTML, 150ms debounce
- π¨ CSS hot reload β Inject CSS changes without full page reload
- ποΈ OS-native file watcher β
ReadDirectoryChangesW/inotify/kqueue - π JSONC parser β Reads
settings.jsonwith comments and trailing commas - π LAN auto-detect β Shows Network URL for mobile testing
- π¦ Single binary β No Node.js, no npm, zero runtime dependencies
- π― Smart filtering β Ignores
.git,node_modules,__pycache__automatically - π Proxy pass β Forward
/apirequests to backend server - π± SPA fallback β Serve
index.htmlfor all 404 routes (React/Vue/Angular) - π Mount directories β Serve multiple directories on one server
- π§© VS Code extension β Go Live button, context menu, output channel
- π€ MCP Server β AI-controllable via Model Context Protocol (11 tools)
- π Event sourcing β JSONL event logs for all server activity
- π¨ Watch extensions β Configurable file types to watch,
"*"for all
Quick Start
CLI Usage
# Basic β serve current directory
hotplate
# Specify root and port
hotplate --root ./apps --port 5500
# With HTTPS
hotplate --root ./apps --cert .hotplate/certs/server.crt --key .hotplate/certs/server.key
# SPA mode (React/Vue/Angular)
hotplate --root ./dist --file index.html
# With proxy (forward /api to backend)
hotplate --root ./frontend --proxy-base /api --proxy-target http://127.0.0.1:8000
# Mount extra directories
hotplate --root ./src --mount "/node_modules:./node_modules" --mount "/assets:../shared/assets"
# Custom headers
hotplate --header "X-Custom: value" --header "Cache-Control: no-cache"
# CSS-only hot swap disabled (always full reload)
hotplate --full-reload
VS Code Extension
- Install Hotplate β Live Server from the VS Code Marketplace
- Click π₯ Go Live in the status bar β or use
Alt+L Alt+O - Right-click any HTML file β Open with Hotplate
- Stop with
Alt+L Alt+C
MCP Mode (AI Agents)
Hotplate includes a built-in MCP server for AI-driven development:
hotplate --mcp # runs MCP stdio server (JSON-RPC 2.0)
11 MCP tools let AI agents control the server and inspect the browser:
| Tool | Description |
|---|---|
hotplate_start | Start the live server (background) |
hotplate_stop | Stop the running server |
hotplate_status | Get server status (port, root, HTTPS, etc.) |
hotplate_reload | Force-reload all connected browsers |
hotplate_inject | Inject JS/CSS into all connected pages |
hotplate_screenshot | Take screenshot from connected browser |
hotplate_console | Get browser console logs (warn/error/js_error) |
hotplate_network | Get network requests (url, method, status, duration) |
hotplate_server_logs | Get server-side event logs (JSONL sessions) |
hotplate_dom | Query DOM using CSS selector |
hotplate_eval | Evaluate JavaScript in connected browser |
Configure in .vscode/mcp.json:
{
"servers": {
"hotplate": {
"command": "${workspaceFolder}/vscode-extension/bin/hotplate-win32-x64.exe",
"args": ["--mcp"]
}
}
}
CLI Options
hotplate [OPTIONS]
Options:
-p, --port <PORT> Bind port [default: 5500]
--host <HOST> Bind host [default: 0.0.0.0]
-r, --root <ROOT> Root directory to serve
--cert <CERT> TLS certificate path (PEM)
--key <KEY> TLS private key path (PEM)
--no-reload Disable live reload
--full-reload Force full page reload (disable CSS hot swap)
-w, --workspace <WORKSPACE> Workspace dir (for .vscode/settings.json)
--ignore <PATTERN> Glob patterns to ignore (repeatable)
--file <FILE> SPA fallback file (e.g. "index.html")
--proxy-base <PATH> Proxy base URI (e.g. "/api")
--proxy-target <URL> Proxy target URL (e.g. "http://127.0.0.1:8000")
--header <HEADER> Custom header "Key: Value" (repeatable)
--mount <MOUNT> Mount dir "/url:./path" (repeatable)
-h, --help Print help
VS Code Settings
Hotplate reads settings from .vscode/settings.json (JSONC supported):
{
// Server
"hotplate.port": 5500,
"hotplate.host": "0.0.0.0",
"hotplate.root": "",
// HTTPS
"hotplate.https.cert": ".hotplate/certs/server.crt",
"hotplate.https.key": ".hotplate/certs/server.key",
// Live Reload
"hotplate.liveReload": true,
"hotplate.fullReload": false,
"hotplate.wait": 150,
"hotplate.ignoreFiles": [".vscode/**", "**/*.scss", "**/*.sass", "**/*.ts"],
// SPA
"hotplate.file": "index.html",
// Proxy
"hotplate.proxy": {
"enable": true,
"baseUri": "/api",
"proxyUri": "http://127.0.0.1:8000",
},
// Custom headers
"hotplate.headers": {
"X-Custom-Header": "value",
"Cache-Control": "no-cache",
},
// Mount extra directories
"hotplate.mount": [
["/node_modules", "./node_modules"],
["/assets", "../shared/assets"],
],
// UI
"hotplate.openBrowser": true,
"hotplate.showOnStatusbar": true,
}
Architecture
src/
βββ main.rs # CLI (clap) + JSONC config loader
βββ server.rs # Axum router + HTTPS/HTTP + WebSocket + MCP channels
βββ mcp.rs # MCP stdio server β 11 JSON-RPC tools for AI agents
βββ events.rs # JSONL event logger (file change, reload, errors...)
βββ watcher.rs # File system watcher (notify) + debounce
βββ inject.rs # HTML middleware β inject livereload script
βββ livereload.js # Browser-side: WebSocket + console/network/DOM agent
βββ jsonrpc.rs # JSON-RPC 2.0 types
vscode-extension/
βββ extension.js # VS Code extension β spawn & manage binary
βββ package.json # Extension manifest
βββ bin/ # Pre-built Rust binaries
The VS Code extension is a thin wrapper β all logic lives in the Rust binary. This means:
- β Can run outside VS Code (terminal, CI/CD, Docker, SSH)
- β Update logic without updating the extension
- β Framework and editor agnostic
Tech Stack: Axum Β· Tokio Β· Rustls Β· Notify Β· Tower Β· Clap
Build from Source
# Prerequisites: Rust toolchain (rustup.rs)
git clone https://github.com/maithanhduyan/hotplate.git
cd hotplate
# Build release binary
cargo build --release
# Binary at: target/release/hotplate (or hotplate.exe on Windows)
./target/release/hotplate --root ./apps --port 5500
Keyboard Shortcuts
| Action | Windows/Linux | macOS |
|---|---|---|
| Start Server | Alt+L Alt+O | Cmd+L Cmd+O |
| Stop Server | Alt+L Alt+C | Cmd+L Cmd+C |
Roadmap
| Phase | Timeline | Status |
|---|---|---|
| Core β Static serving, HTTPS, live reload, file watcher, CLI | 2026 Q1 | β Done |
| DX β CSS hot reload, SPA fallback, proxy, custom headers, mount, auto-cert | 2026 Q2 | β Done |
| VS Code Extension β Status bar, 6 commands, context menu, keybindings, settings UI | 2026 Q3 | β Done |
| MCP Server β AI-controllable via Model Context Protocol (11/11 tools) | 2026 Q4 | β Done |
| Ecosystem β Plugin system, Neovim/Zed, GitHub Action, Docker | 2027 Q1 | π Planned |
See docs/ROADMAP.md for details.
Contributing
Contributions are welcome! π
- π Bug reports β GitHub Issues
- π‘ Feature requests β GitHub Discussions
- π§ Pull requests β Fork β Branch β PR
