Skip to content

Repository files navigation

Vulpix logo

Vulpix

The intelligent gateway to AI metadata.
Search the live frontier, inspect model/dataset metadata, chat via a BYOK playground, compare models in the Arena — one PWA.

Next.js 16.3.2 React 19.2 TypeScript 100% Tailwind CSS v4 Playwright QA Node 22.x

Important

Proprietary — Vulpix Labs. No cloning, forking, or redistribution. Evaluation access only by written permission — open an issue to request access.

About

Vulpix aggregates live metadata from external model and dataset providers into a single hub. There's no relational database — upstream providers are the source of truth, Redis (REST) handles cache/lock/budget duties, and IndexedDB powers the client-side playground.

Stack

Layer Tech
Framework Next.js 16.3.2 App Router, Turbopack, React 19.2.8
Language TypeScript strict
Styling Tailwind CSS v4, Radix UI, shadcn
PWA Serwist 386 precache, pages-v2 5m, apis-v2 120s

Quick Start

git clone https://github.com/vulpixlabs/vulpix.git
cd vulpix
npm ci
cp .env.example .env.local
# fill .env.local then
npm run dev
# http://localhost:3000
curl -H "Authorization: Bearer $CRON_SECRET" "http://localhost:3000/api/cron/sync?force=all"

Environment

Variable Scope Notes
KV_STORE_URL Server REST-based cache store endpoint
KV_STORE_TOKEN Server REST token for the cache store
CRON_SECRET Server 32+ chars, timing-safe comparison
MODEL_PROVIDER_TOKEN Server Read token for the primary model metadata provider
INFERENCE_PROVIDER_KEY Server Key for the multi-model inference provider
NEXT_PUBLIC_SITE_URL Public https://vulpix.vercel.app

Only NEXT_PUBLIC_ variables are exposed to the client. Never commit .env.local.

Commands

Command Use
npm run dev Turbopack dev
npm run lint ESLint
npx tsc --noEmit Typecheck
npm run build Production + service worker
npm run test:e2e Playwright, Chromium/WebKit

Gate: lint && tsc && build && test:e2e.

Architecture

flowchart LR
    subgraph Client [Client Side]
        U[Browser / PWA]
        IDB[(IndexedDB)]
        U <--> IDB
    end

    subgraph App [Next.js Application]
        N[Next.js Server]
        CR[/api/cron/sync/]
        N --- CR
    end

    subgraph Automation [Scheduled Sync]
        SC[Vercel Cron daily]
    end

    subgraph Services [External Services]
        R[(Cache Store)]
        MP[Model Metadata Provider]
        IP[Inference Provider]
    end

    U --> N
    N --> MP
    N --> IP
    N <--> R

    SC --> CR
    CR --> R

    style Client fill:#f8fafc,stroke:#cbd5e1,stroke-width:1px,color:#0f172a
    style App fill:#f1f5f9,stroke:#94a3b8,stroke-width:1px,color:#0f172a
    style Automation fill:#f8fafc,stroke:#cbd5e1,stroke-width:1px,color:#0f172a
    style Services fill:#f1f5f9,stroke:#94a3b8,stroke-width:1px,color:#0f172a
Loading

Model, benchmark, activity, and combined caches use a four-hour TTL. Provider metadata retains its own route-specific TTL.

API

Endpoint Notes
GET /api/models Combined view, source: cache-combined/recombined/live-fallback, s-maxage=300
GET /api/hub/models /datasets Model & dataset metadata proxy
GET /api/arena/benchmarks /activity /providers Live benchmark data, optional client-supplied inference key
GET /api/brand/[brand] Brand icon resolution with fallback chain
GET /api/cron/sync Sync trigger, requires Bearer CRON_SECRET

Project Structure

Vulpix/
|-- public/
|   |-- brands/
|   |-- icons/
|   |-- screenshots/
|   `-- vulpix-logo.png
|-- src/
|   |-- app/
|   |   |-- api/ (cron, hub, models, arena, brand, playground)
|   |   |-- arena/page.tsx
|   |   |-- hub/
|   |   |-- playground/
|   |   |-- manifest.ts
|   |   `-- sw.ts
|   |-- components/ (arena, hub, sections, ui)
|   `-- lib/ (cache, rate-limit, sync, brand-logos)
|-- tests/e2e/ (cron, models, pwa)
|-- playwright.config.ts
`-- vercel.json

QA

npm run test:e2e
npx playwright test --ui
npx playwright show-report

CI runs lint, typecheck, build, and 44 end-to-end tests across Chromium, WebKit, and mobile viewports on every change to main.


Vulpix Labs · Proprietary · Part of the Mavent ecosystem

About

AI model hub, benchmark arena, and multi-provider playground built with Next.js, live metadata providers, and a fast REST cache layer.

Topics

Resources

Contributing

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages