multitenant

multitenant is a skill for Claude Code, Codex from finom/vovk. It costs 239 tokens per session (3,790 once invoked), scanned A, original, MIT.

A Vovk.ts and Next.js guide for running multiple separate tenants, such as customers or product areas, from one application. A tenant is an isolated customer or group that can have its own subdomain and pages.

In plain words
What is it for?
Use it to configure static, dynamic, or nested subdomains, connect them to frontend routes, protect reserved paths, and set up local or wildcard DNS.
Why use it?
It removes the need to design subdomain routing and tenant-specific frontend and backend connections from scratch.

Skill for Claude CodeCodex

Part of the vovk plugin — 15 skills shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/finom/vovk/multitenant
Any agent
npx skills add finom/vovk --skill multitenant
Clone the repo
git clone --depth 1 https://github.com/finom/vovk

Made for: Claude Code, Codex.

Or install vovk, the plugin that ships this one along with the rest of its 15 skills.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for multitenant

README.md
[![agentmods](https://agentmods.dev/badge/skills/finom/vovk/multitenant.svg)](https://agentmods.dev/skills/finom/vovk/multitenant)
Your own site
<a href="https://agentmods.dev/skills/finom/vovk/multitenant"><img src="https://agentmods.dev/badge/skills/finom/vovk/multitenant.svg" alt="Measured on agentmods" height="20"></a>
Per session 239 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,790 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00239 $0.03790
Opus 5 $0.00120 $0.01895
Sonnet 5 $0.00048 $0.00758
Haiku 4.5 $0.00024 $0.00379

Measured 5d ago against content hash ee704f34a488, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

multitenant scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/multitenant/SKILL.md · 263 lines

How it starts

The opening of the file, as written. The whole thing — 263 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Vovk.ts multi-tenant routing

Host multiple tenants from one Next.js app. Each tenant gets own named segment on backend, own frontend page route on frontend, wired together with subdomain-aware proxy calling multitenant() from vovk.

Typical shape:

  • example.com/ → root tenant (marketing home, or tenant picker).
  • admin.example.com/ → admin tenant — internal backend + UI.
  • customer.example.com/ → customer-facing portal (signup, landing, etc.).
  • <customer>.customer.example.com/ → per-customer instance.
  • pro.<customer>.customer.example.com/ → per-customer pro tier.

Pick any shape; this skill shows wiring for any.

Scope of this skill

Covers:

  • Multi-tenant architecture (segments + proxy + frontend pages).
  • vovk.config.mjs changes (composed → segmented client, segmentNameOverride).
  • proxy.ts wiring with multitenant() helper from vovk.
  • overrides shape (static, dynamic, nested) and reserved-path guard.
  • Per-tenant frontend page routes, how they pair with overrides.
  • DNS wildcard + local /etc/hosts setup.
  • Add-a-tenant checklist.

Out of scope (hand off):

  • Creating/configuring individual segment (initSegment(), segmentName, nested segments, segment priority) → segment skill.
  • Writing controllers inside tenant segment → procedure skill.
  • Client generation modes (composed vs. segmented, outDir, templates) → rpc skill.

Architecture

Three layers, one request:

  1. Proxy (src/proxy.ts) — intercepts every request, calls multitenant() with incoming URL, host, your overrides map, gets back { action, destination }. Branches into NextResponse.rewrite, NextResponse.redirect, or 404.
  2. Named segment per tenant on backend (src/app/api/admin/[[...vovk]]/route.ts, etc.). Each tenant's api/* calls land here after proxy rewrite.
  3. Per-tenant frontend page routes on frontend (src/app/admin/page.tsx, etc.). Each tenant's non-api requests land here after proxy rewrite.

Read the full file on GitHub · 263 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 5d ago First seen · 263 lines · 239 tokens per session scan A ee704f34a488

Subscribe to this mod's changes

multitenant is a skill published in the GitHub repository finom/vovk (52 stars, last pushed 8d ago), licensed MIT. It adds 239 tokens to every session and 3,790 once invoked, about $0.0012 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

ocli-api

Turn any OpenAPI/Swagger API into CLI commands and call them. Search endpoints with BM25, check parameters, execute — no MCP server needed.

EvilFreelancer/openapi-to-cli · 34 tokens

ronykit-framework

Orchestrates RonyKit service development using the ronyup MCP server (knowledge resources, prompts, scaffold tools). Use when the user mentions RonyKit, ronyup, EdgeServer, contracts, scaffolding a workspace or feature, implementing API handlers and services, frontend bootstrap, integration tests, or design documents…

clubpay/ronykit · 75 tokens

react-performance

Optimize React/Next.js runtime performance — eliminate waterfalls, shrink bundles, cut unnecessary re-renders, and speed up rendering. Use when writing, reviewing, or refactoring components for speed, or chasing slow renders, large bundles, janky interactions, or high TTFB/LCP/INP.

clubpay/ronykit · 64 tokens

storybook

Author and maintain Storybook stories with CSF 3.0 best practices — args, decorators, parameters, and config. Use when creating or editing .stories. files, configuring .storybook/, or ensuring every UI component ships with stories.

clubpay/ronykit · 50 tokens

webmcp

Build agent-friendly web apps with the W3C Web Model Context API (WebMCP). Use when exposing frontend features as structured tools for in-browser AI agents, adding document.modelContext tools to React/Next.js apps, designing tool schemas for dashboards or admin UIs, or making existing UI automatable without DOM…

clubpay/ronykit · 69 tokens

composition-patterns

Design reusable React component APIs that scale — compound components, lifted state, generic context, explicit variants. Use when a component is growing boolean props (isThread, isEditing…), when building a component library, or when reviewing component architecture. Includes React 19 API changes.

clubpay/ronykit · 58 tokens