Skip to main content

vibefs

A file preview server with time-limited access control, designed for AI agents to share local files with users via URLs.

Files are not accessible by default. Each file must be explicitly authorized with a TTL (default: 1 hour). The server starts automatically on the first allow call and shuts down when all authorizations expire.

Agent interaction File preview

Install

With uv:

# Install globally
uv tool install vibefs

# Or run directly without installing
uvx vibefs --help

Usage

Authorize a file

vibefs allow /path/to/file.py
# http://localhost:17173/f/a3b7c2d1/file.py

vibefs allow /path/to/file.py --ttl 300   # 5 minutes
vibefs allow /path/to/file.py --head 50   # Only first 50 lines
vibefs allow /path/to/file.py --tail 20   # Only last 20 lines

The daemon starts automatically if it's not already running.

Authorize a git commit

vibefs allow-git /path/to/repo abc1234
# https://files.example.com/git/a3b7c2d1

vibefs allow-git . HEAD          # Current commit in current repo
vibefs allow-git . HEAD --ttl 300

The commit is displayed as a web page with metadata, file list, and expandable diffs with syntax highlighting.

Manage authorizations

vibefs list                 # List active authorizations
vibefs revoke <token>       # Revoke a specific authorization

Server control

vibefs status               # Check if daemon is running
vibefs stop                 # Stop the daemon
vibefs serve                # Start server in foreground (for debugging)

Configuration

vibefs config set base_url https://files.example.com
vibefs config get base_url

# Default TTL for allow/allow-git (in seconds, default: 3600)
vibefs config set file_ttl 43200            # 12 hours

# Pygments syntax highlighting options
vibefs config set pygments.style dracula    # Theme (default: monokai)
vibefs config set pygments.linenos true     # Show line numbers (default: false)

Available styles: monokai, dracula, github-dark, one-dark, nord, solarized-dark, gruvbox-dark, and many more.

When base_url is set, the allow command outputs URLs using it instead of localhost:port:

vibefs allow /path/to/file.py
# https://files.example.com/f/a3b7c2d1/file.py

File rendering

  • Code and text files (.py, .js, .md, .json, etc.) are rendered with syntax highlighting via Pygments.
  • Git commits are rendered with metadata, file list, and expandable diffs highlighted with Pygments.
  • Other files are served with their original content type.

Deploy

vibefs listens on localhost:17173 by default. To make it accessible from the internet, use a tunneling service to map the local port to a public domain.

Cloudflare Tunnel

# Install cloudflared: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/

# Quick tunnel (temporary public URL)
cloudflared tunnel --url http://localhost:17173

# Named tunnel (persistent domain)
cloudflared tunnel create vibefs
cloudflared tunnel route dns vibefs vibefs.example.com
cloudflared tunnel run --url http://localhost:17173 vibefs

Other options

  • ngrok: ngrok http 17173
  • Tailscale Funnel: tailscale funnel 17173
  • frp, bore, or any TCP tunneling tool

After setting up the tunnel, configure the base URL so generated links use your public domain:

vibefs config set base_url https://vibefs.example.com

Agent integration

To let an AI agent use vibefs, add instructions like the following to its system prompt or tool documentation:

You have access to `vibefs`, a file preview tool. When you want to share a file
with the user, run:

    vibefs allow /path/to/file [--ttl SECONDS]

This prints a URL. Send the URL to the user — they can open it in a browser to
view the file. The link expires after the TTL (default: 1 hour).

Use this when:
- Showing code, logs, or config files
- Sharing generated output
- Any time a file is easier to read in a browser than in chat

State

All runtime data is stored in ~/.vibefs/:

  • vibefs.db — authorization records (SQLite)
  • vibefs.pid — daemon PID file
  • vibefs.log — daemon log output
  • config.json — configuration

License

MIT

Metadata

Release files for vibefs 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vibefs 0.6.0
File Size Uploaded Provenance
vibefs-0.6.0.tar.gz 193.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for vibefs 0.6.0
File Interpreter ABI Platform
vibefs-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 206.7 kB

Release files / vibefs-0.6.0.tar.gz

Download URL vibefs-0.6.0.tar.gz
Size 193.3 kB
Tags Source
SHA-256 checksum
How to use checksums
31730951f4429c17011d31172fdc8e3a63291049d6e19f1a2210db00ad51cf0b
BLAKE2b-256 checksum
How to use checksums
9cc934855f2f8ff4673a77a4d87098e459d86771f8f16eb6dfaf06d8cb28e7d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / vibefs-0.6.0-py3-none-any.whl

Download URL vibefs-0.6.0-py3-none-any.whl
Size 13.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ca9e929dc4acc722d608c22faf6183d6c644eec0cf20f573c211d4d157c6de3b
BLAKE2b-256 checksum
How to use checksums
d78f52cd70452707ea5cfbda391217b882af065f3b59b2cab9546da933f80124
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for vibefs 0.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page