Local Excalidraw server with custom handwritten font and advanced instance management
npm install excalocal


> Local Excalidraw server with custom handwritten font and advanced instance management
A self-hosted Excalidraw server that runs locally with a beautiful handwritten font (Excalifont) and powerful instance management features. Perfect for offline sketching, diagramming, and visual brainstorming.
- ✨ Features
- 📦 Installation
- 🚀 Usage
- 📁 Directory Structure
- 🛠️ Configuration
- 🐛 Troubleshooting
- 🙏 Acknowledgments
- 📝 License
- 🚀 Uninstall
- 🖋️ Custom Excalifont - Beautiful handwritten font that enhances the sketchy feel
- 🔄 Instance Management - Run multiple named instances with state tracking
- 🌙 Dark Theme - Default dark mode for comfortable use
- 💾 Auto-Save - Automatic save/restore of drawings using localStorage
- 🚀 Background Mode - Daemon support for persistent instances
- 📱 Responsive - Works on desktop and mobile browsers
- 🔒 Privacy-First - Everything runs locally, no data sent to external servers
Install excalocal globally using npm:
``bash`
npm install -g excalocal
That's it! The package will automatically:
- Install all required dependencies
- Download the custom Excalifont
- Set up the necessary directory structure
- Make the excalocal command available globally
`bash`
excalocal --version
`bash`Start excalocal (opens at http://localhost:3030)
excalocal
| Command | Description |
|---------|-------------|
| excalocal | Start server on default port (3030) |excalocal -p 8080
| | Start on specific port |excalocal -b -n work
| | Start named instance in background |excalocal -l
| | List all running instances |excalocal -o work
| | Open existing instance in browser |excalocal -k work
| | Kill specific instance |excalocal -c
| | Cleanup inactive instances |excalocal -h
| | Show help |excalocal -V
| | Show version |
Start a simple server:
`bash`
excalocalOpens http://localhost:3030 in your browser
Create named instances for different projects:
`bashStart work-related sketches
excalocal -b -n work -p 3031
Manage multiple instances:
`bash
List all running instances
excalocal -lOpen specific project
excalocal -o workKill specific instance
excalocal -k presentationClean up dead instances
excalocal -c
`$3
- Local:
http://localhost:3030
- Network: http://YOUR_IP:3030 (accessible from other devices on your network)
- Custom Port: http://localhost:YOUR_PORT🛠️ Configuration
$3
-
PORT - Default port (default: 3030)
- XDG_STATE_HOME - Instance state directory (default: ~/.local/state)$3
Instance information is stored in:
- Linux:
~/.local/state/excalocal/instances.json
- macOS: ~/Library/Application Support/excalocal/instances.json
- Windows: %APPDATA%\excalocal\instances.json🐛 Troubleshooting
$3
Port already in use:
`bash
excalocal automatically finds the next available port
excalocal # Will use 3031 if 3030 is busy
`Command not found:
`bash
Make sure excalocal is installed globally
npm list -g excalocalIf not installed, install it:
npm install -g excalocal
`Permission issues on Linux/macOS:
`bash
If you get permission errors, you may need to use sudo
sudo npm install -g excalocal
`🙏 Acknowledgments
Special thanks to:
- Dawid Wraga for the brilliant solution on implementing custom fonts in Excalidraw. His article "How to use a custom font on Excalidraw.com" was the foundation that made the Excalifont integration possible.
- The Excalidraw Team for creating this amazing virtual whiteboard tool that makes sketching and diagramming so intuitive and enjoyable.
📝 License
MIT License - see LICENSE file for details.
🚀 Uninstall
`bash
npm uninstall -g excalocal
``