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

vectraspace

v0.1.2

Published

Vectraspace media server for local media search and management

Readme

Media Server Workspace

This workspace contains two parts:

  • app - the SvelteKit media server UI and API
  • embedding-host - the local multimodal embedding service

Quick Start

Install globally:

npm install -g vectraspace

If npm global install fails on macOS/Linux due to permissions, use:

pnpm add -g vectraspace

From your vectraspace workspace root:

vectraspace init
vectraspace start

Full install options are in docs/INSTALL.md. Primary docs are on the website: https://vectraspace.org/docs

What The Scripts Do

vectraspace setup

  • copies .env.example to .env if needed
  • validates docker compose
  • generates media root bind mounts for containers from MEDIA_ROOTS
  • builds the app and embedding host images

vectraspace up

  • starts Qdrant, embedding host, and app containers with Docker Compose
  • waits for health checks and returns when stack is ready
  • keeps your terminal free (use vectraspace logs to follow logs)

vectraspace start

  • runs setup, starts all containers, waits for readiness, and opens the app in your browser
  • best default command for non-technical users

A Node CLI for the common flows:

  • vectraspace onboard
  • vectraspace setup
  • vectraspace init
  • vectraspace start
  • vectraspace up
  • vectraspace stop
  • vectraspace down
  • vectraspace logs
  • vectraspace ps
  • vectraspace doctor
  • vectraspace index <directory>
  • vectraspace search <query>

Requirements

  • docker
  • Qdrant is started by Compose

The compose file starts Qdrant for you.

Environment

Create or update app/.env from app/.env.example, or run vectraspace onboard to configure it interactively.

Recommended semantic search settings:

QDRANT_URL=http://127.0.0.1:6333
QDRANT_COLLECTION=media_semantic
EMBEDDING_PROVIDER=multimodal
MULTIMODAL_EMBEDDING_URL=http://127.0.0.1:8000/embed
MULTIMODAL_EMBEDDING_MODEL=Qwen/Qwen3-VL-Embedding-2B
MEDIA_ROOTS=/path/to/your/media
EMBEDDING_REINDEX_CONCURRENCY=1

Embedding Host

The embedding host exposes a single endpoint:

  • POST /embed

Request examples:

{ "model": "Qwen/Qwen3-VL-Embedding-2B", "type": "text", "text": "sunset over ocean" }
{ "model": "Qwen/Qwen3-VL-Embedding-2B", "type": "image", "imageBase64": "...", "filename": "image.jpg" }

It returns normalized vectors in the format:

{ "embedding": [0.1, 0.2, 0.3] }

Semantic Search Flow

  1. Run vectraspace start.
  2. Set EMBEDDING_REINDEX_CONCURRENCY in .env if you want more parallel reindexing.
  3. Index a directory: vectraspace index /path/inside/your/media/root.
  4. Search from terminal: vectraspace search "your query".
  5. Use the Reindex button in the UI, or call POST /api/search/reindex.

Manual Commands

If you want to run things separately:

docker compose up -d qdrant embedding-host app
docker compose logs -f --tail=100

Troubleshooting

  • If semantic search returns no results, check that Qdrant is running and that /api/search/reindex completed successfully.
  • If embeddings fail to load, confirm the multimodal endpoint URL in .env matches your local server.
  • If you change the embedding model, recreate the Qdrant collection and reindex so vector dimensions stay consistent.