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

@thevinci/web

v1.4.0

Published

[![GitHub stars](https://img.shields.io/github/stars/jaygupta17/vinci?style=flat&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0iI2YxZWNlYyIgdmlld0JveD0iMCAwIDI1NiAyNTYiP

Readme

@thevinci/web

GitHub stars GitHub release Discord

Creative companion for video, design, and motion — now in your browser.

A creative control room for OpenCode. Direct AI agents to generate video compositions, iterate on motion graphics, produce assets, and keep the full creative board visible while your video renders.

Full project overview, screenshots, and all features: github.com/jaygupta17/vinci

Install

curl -fsSL https://raw.githubusercontent.com/jaygupta17/vinci/main/scripts/install.sh | bash
vinci --ui-password be-creative-here

Or install manually: bun add -g @thevinci/web (or npm, pnpm, yarn).

Prerequisites: OpenCode CLI installed, Node.js 20+.

Quick Start

vinci                          # Start on port 3900
vinci --port 8080              # Custom port
vinci --ui-password secret     # Password-protect UI
vinci tunnel start --provider cloudflare --mode quick --qr  # Remote access

Creative Agents

Vinci uses a team of AI agents that work together like a creative agency:

  • Motion — Creative Director & Lead Video Editor
  • Designer — UI/UX & Graphic Design Specialist
  • Dataviz — Data Visualization Specialist
  • Publisher — Document & Presentation Designer
  • Assistant — General-purpose Support Specialist

Learn more about agents →

CLI Usage

vinci                          # Start on port 3900
vinci --port 8080              # Custom port
vinci --ui-password secret     # Password-protect UI
vinci tunnel help              # Tunnel lifecycle commands
vinci tunnel providers         # Show provider capabilities
vinci tunnel profile add --provider cloudflare --mode managed-remote --name prod-main --hostname app.example.com --token <token>
vinci tunnel start --profile prod-main
vinci tunnel start --provider cloudflare --mode quick --qr
vinci tunnel start --provider cloudflare --mode managed-local --config ~/.cloudflared/config.yml
vinci tunnel status --all      # Show tunnel state across instances
vinci tunnel stop --port 3900  # Stop tunnel only (server stays running)
vinci logs                     # Follow latest instance logs
vinci stop                     # Stop server
vinci update                   # Update to latest version

Connect to external OpenCode server

OPENCODE_PORT=4096 OPENCODE_SKIP_START=true vinci
OPENCODE_HOST=https://myhost:4096 OPENCODE_SKIP_START=true vinci

| Variable | Description | |----------|-------------| | OPENCODE_HOST | Full base URL of external server (overrides OPENCODE_PORT) | | OPENCODE_PORT | Port of external server | | OPENCODE_SKIP_START | Skip starting embedded OpenCode server | | VINCI_OPENCODE_HOSTNAME | Bind hostname for managed OpenCode server (default: 127.0.0.1, use 0.0.0.0 for LAN/remote access — trusted networks only) | | VINCI_HOST | Bind hostname for the Vinci web server (default: 127.0.0.1; use 0.0.0.0 for LAN/remote access — trusted networks only) |

Tunnel behavior notes

  • One active tunnel per running Vinci instance (port).
  • Starting a different tunnel mode/provider on the same instance replaces the active tunnel.
  • Replacing or stopping a tunnel revokes existing connect links and invalidates remote tunnel sessions.
  • Connect links are one-time tokens; generating a new link revokes the previous unused link.
VINCI_OPENCODE_HOSTNAME=0.0.0.0 vinci --port 3900

Security note: binding to 0.0.0.0 exposes the server on all network interfaces — use only on trusted networks and protect with firewall rules or --ui-password.

vinci             # Runs in background by default
vinci stop        # Stop background server

Use --foreground to keep the CLI process alive so systemd (or any other process manager) can track and restart it. Combine with OPENCODE_HOST to connect to an OpenCode instance running as a separate service.

~/.config/systemd/user/opencode.service

[Unit]
Description=OpenCode Server

[Service]
Type=simple
ExecStart=opencode serve --port 4095
Environment="PATH=/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/YOU/.local/bin:/home/YOU/.npm-global/bin:/usr/local/bin:/usr/bin:/bin"
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target

~/.config/systemd/user/vinci.service

[Unit]
Description=Vinci Web Server
After=opencode.service

[Service]
Type=simple
ExecStart=vinci serve --port 3900 --host 0.0.0.0 --ui-password your-password --foreground
Environment="OPENCODE_HOST=http://localhost:4095"
Environment="OPENCODE_SKIP_START=true"
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target
systemctl --user daemon-reload
systemctl --user enable --now opencode vinci

--host 0.0.0.0 is required to listen on all interfaces (the default is 127.0.0.1). Use --host <ip> or VINCI_HOST=<ip> to bind to a specific interface instead.

What makes the web version special

  • Creative agents — Motion, Designer, Dataviz, Publisher work together like a creative agency
  • Remote access — Cloudflare tunnel with QR onboarding. Scan from your phone, start creating.
  • Mobile-first PWA — optimized chat controls, keyboard-safe layouts, drag-to-reorder projects
  • Background notifications — know when your agent finishes, even from another tab
  • Self-update — update and restart from the UI, server settings stay intact
  • Cross-tab tracking — session activity stays in sync across browser tabs

License

MIT