A mobile-friendly web file browser CLI tool built with Bun.
Start a local web server to browse files from any device on your network - perfect for quickly accessing files on your computer from your phone or tablet.
- Mobile-first UI - Touch-friendly interface with large tap targets
- Dark theme - Easy on the eyes
- Copy path - One-tap copy of absolute file paths
- Ignore patterns - Filter out files/folders with glob patterns
- QR code - Scan to open on mobile instantly
- Bonjour discovery - API advertises itself on local network (
_browsey._tcp) - Zero config - Just run
browseyand go
Browsey is installable as a PWA when served over HTTPS (or localhost). If you want Add to Home Screen on a remote device, put Browsey behind a TLS-terminating reverse proxy.
Run directly with bunx — no installation needed:
bunx browsey start .Or install globally:
bun install -g browsey
browsey start .# Serve current directory
browsey start
# Serve a specific directory
browsey start ./photos
# Custom ports
browsey start -p 3000 --app-port 3001
# Open browser automatically
browsey start --open
# Allow file modifications (default is read-only)
browsey start --no-readonly
# Ignore patterns
browsey start -i "node_modules,.git,*.log"
# Show hidden files
browsey start --hidden
# All options
browsey start ./my-folder -p 4200 --app-port 4201 -i "node_modules,.git" --hidden --open --no-readonly --no-qrAll commands work with bunx browsey too:
bunx browsey start ./photos --open| Option | Description | Default |
|---|---|---|
[path] |
Directory to serve | . (current) |
-p, --port <port> |
Port number | 4200 |
-h, --host <host> |
Host to bind | 0.0.0.0 |
-i, --ignore <globs> |
Comma-separated ignore patterns | - |
--open |
Open browser automatically | false |
--no-readonly |
Allow file modifications | false |
--hidden |
Show hidden files | false |
--no-qr |
Do not display QR code | false |
--no-bonjour |
Disable Bonjour/mDNS API advertisement | false |
--no-https |
Disable HTTPS | - |
--https-cert <path> |
Path to TLS certificate (PEM) | ./certs/browsey.pem |
--https-key <path> |
Path to TLS private key (PEM) | ./certs/browsey-key.pem |
Browsey exposes a simple REST API:
| Endpoint | Description |
|---|---|
GET /api/list?path=/ |
List directory contents |
GET /api/file?path=/file.txt |
Download a file |
GET /api/stat?path=/file.txt |
Get file metadata |
GET /api/list?path=/
{
"path": "/",
"items": [
{
"name": "documents",
"type": "directory",
"size": 4096,
"modified": "2024-01-15T10:30:00.000Z",
"extension": null
},
{
"name": "photo.jpg",
"type": "file",
"size": 245678,
"modified": "2024-01-14T08:20:00.000Z",
"extension": "jpg"
}
]
}# Clone the repo
git clone https://github.com/vforsh/browsey.git
cd browsey
# Install dependencies
bun install
# Run in dev mode
bun run dev
# Build
bun run build
# Link locally for testing
bun link- Bun - Runtime, bundler, and package manager
- TypeScript - Type safety
- Bun.serve - Native HTTP server
- Bun.Glob - Pattern matching
- Commander.js - CLI argument parsing


