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

@mjasano/devtunnel

v1.5.5

Published

Web terminal with code editor and tunnel manager - access your dev environment from anywhere

Readme

DevTunnel

Web-based terminal with integrated code editor and Cloudflare tunnel management. Access your development environment from anywhere.

Features

  • Web Terminal: Full-featured terminal with xterm.js
    • Multiple terminal sessions with tabs
    • Session persistence (24h timeout)
    • tmux session integration
  • Code Editor: Monaco Editor (VS Code engine)
    • File explorer with breadcrumb navigation
    • 20+ language syntax highlighting
    • Multi-file tabs with unsaved change indicators
    • Keyboard shortcuts (Ctrl+S to save)
  • Tunnel Manager: Expose local ports via Cloudflare
    • Quick tunnel creation
    • Real-time status updates
    • Copy-to-clipboard functionality
  • System Monitor: Real-time resource monitoring
    • CPU and memory usage
    • Uptime and load average

Installation

npm install -g @mjasano/devtunnel

Prerequisites

  • Node.js 18+
  • cloudflared (auto-installed on macOS/Linux)

Usage

# Start DevTunnel with tunnel
devtunnel

# Use custom port
devtunnel --port 8080

# Enable passcode authentication (auto-generated)
devtunnel --passcode

# Enable passcode authentication (custom)
devtunnel --passcode=MYCODE

# Show help
devtunnel --help

# Show version
devtunnel --version

Authentication

When running with --passcode, DevTunnel requires authentication:

  • A login page is shown before accessing the terminal
  • Passcode is displayed in the CLI output when auto-generated
  • Sessions remain authenticated for 24 hours
  • Use the Logout button in the header to end your session

Development

# Clone the repository
git clone https://github.com/mjasano/web-terminal.git
cd web-terminal

# Install dependencies
npm install

# Start development server
npm start

Docker

# Build and run
docker-compose up -d

# Or with Docker
docker build -t devtunnel .
docker run -p 3000:3000 -v $(pwd):/workspace devtunnel

Environment Variables

| Variable | Description | Default | |----------|-------------|---------| | PORT | Server port | 3000 | | WORKSPACE | Root directory for file browser | Home directory | | PASSCODE | Authentication passcode | None (no auth) |

API Endpoints

REST API

| Method | Endpoint | Description | |--------|----------|-------------| | GET | /api/auth/status | Check auth status | | POST | /api/auth/login | Login with passcode | | POST | /api/auth/logout | Logout | | GET | /api/system | System information | | GET | /api/files | File listing | | GET | /api/files/read | Read file content | | POST | /api/files/write | Write file content | | POST | /api/files/delete | Delete file/directory | | POST | /api/files/rename | Rename file/directory | | GET | /api/sessions | Terminal sessions | | DELETE | /api/sessions/:id | Kill session | | GET | /api/tunnels | Active tunnels | | POST | /api/tunnels | Create tunnel | | DELETE | /api/tunnels/:id | Stop tunnel | | GET | /health | Health check |

WebSocket Messages

| Type | Direction | Description | |------|-----------|-------------| | attach | Client | Attach to session | | detach | Client | Detach from session | | input | Client | Terminal input | | resize | Client | Terminal resize | | create-tunnel | Client | Create tunnel | | stop-tunnel | Client | Stop tunnel | | output | Server | Terminal output | | attached | Server | Session attached | | sessions | Server | Session list | | tunnels | Server | Tunnel list |

License

MIT