npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

excalocal

v1.1.7

Published

Local Excalidraw server with custom handwritten font and advanced instance management

Downloads

30

Readme

excalocal 🎨

License: MIT Node.js Excalidraw

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.

📚 Table of Contents

✨ Features

  • 🖋️ 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

📦 Installation

Install excalocal globally using npm:

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

✅ Verify Installation

excalocal --version

🚀 Usage

Quick Start

# Start excalocal (opens at http://localhost:3030)
excalocal

Basic Commands

| 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 |

📚 Usage Examples

Start a simple server:

excalocal
# Opens http://localhost:3030 in your browser

Create named instances for different projects:

# Start work-related sketches
excalocal -b -n work -p 3031

# Start personal projects
excalocal -b -n personal -p 3032

# Start presentation prep
excalocal -b -n presentation -p 3033

Manage multiple instances:

# List all running instances
excalocal -l

# Open specific project
excalocal -o work

# Kill specific instance
excalocal -k presentation

# Clean up dead instances
excalocal -c

🌐 Accessing Your Drawings

  • Local: http://localhost:3030
  • Network: http://YOUR_IP:3030 (accessible from other devices on your network)
  • Custom Port: http://localhost:YOUR_PORT

🛠️ Configuration

Environment Variables

  • PORT - Default port (default: 3030)
  • XDG_STATE_HOME - Instance state directory (default: ~/.local/state)

Instance State

Instance information is stored in:

  • Linux: ~/.local/state/excalocal/instances.json
  • macOS: ~/Library/Application Support/excalocal/instances.json
  • Windows: %APPDATA%\excalocal\instances.json

🐛 Troubleshooting

Common Issues

Port already in use:

# excalocal automatically finds the next available port
excalocal  # Will use 3031 if 3030 is busy

Command not found:

# Make sure excalocal is installed globally
npm list -g excalocal

# If not installed, install it:
npm install -g excalocal

Permission issues on Linux/macOS:

# If you get permission errors, you may need to use sudo
sudo npm install -g excalocal

🙏 Acknowledgments

Special thanks to:

📝 License

MIT License - see LICENSE file for details.

🚀 Uninstall

npm uninstall -g excalocal