Skip to content

Vielzeug Many Tools. Zero Weight. Huge Impact.

Pick and compose the tools you need: from routing to charts. Shared conventions, unified architecture, and zero dependencies.
75+ utility functions•6.1 KB•1/39
Example 1 of 39: arsenal: pnpm add @vielzeug/arsenal
Any framework. No framework. Your choice.
A different kind of toolkit Everything fits. Nothing fights. 41 packages built as one. Same conventions, same primitives, same release cadence, so you ship, not integrate.
0 Transitive dependencies across all 41 packages
1 Shared API shape: learn once, use everywhere
41 Independently installable packages
One mental model Same dispose() contract. Same signal shape. Same error format. Learn the pattern once: every new package feels familiar from line one.
No hidden dependencies Every package you install is every package you own. No surprises in node_modules , no version conflicts six months from now.
Built to work together Validation schemas plug into form fields. Signals drive UI templates, with no adapter layer or boilerplate. just packages that know about each other.
Eliminate entire categories of glue code. Each package is standalone: combined, they compose naturally.
import { createForm } from '@vielzeug/forge';
import { s } from '@vielzeug/spell';
import { createApi } from '@vielzeug/courier';
import { createLogger } from '@vielzeug/rune';

const log = createLogger('auth');
const api = createApi({ baseUrl: 'https://api.example.com' });

const LoginSchema = s.object({
  email: s.string().email(),
  password: s.string().min(8),
});

const form = createForm({
  defaultValues: { email: '', password: '' },
  schema: LoginSchema,
});

form.submit(async (values) => {
  const user = await api.post('/auth/login', { body: values });
  log.info('Login successful', { user });
});
All 41 packages, one search. Organized by domain. Click any package to jump straight to its docs.
All packages
Your AI already knows Vielzeug @vielzeug/codex is an MCP server that bundles the entire documentation, package APIs, and Refine component metadata into a single offline snapshot. Wire it into Claude Desktop, Copilot Chat, or any MCP-compatible client: then ask anything.
  • search-packages: find the right package by keyword across docs and exports
  • get-docs: fetch any package's index, API, usage, or examples page
  • get-component: full Refine component CEM: attributes, slots, CSS parts, events
Install via npm or run directly: Setup guide & all tools
userHow do I debounce a function call in Arsenal?
tool
get-docs({ packageSlug: "arsenal", page: "api" })
assistant Use debounce(fn, wait): returns a version of fn that delays invoking until wait ms after the last call. Pass { leading: true } to fire on the first call instead.
import { debounce } from '@vielzeug/arsenal';

const save = debounce(persistToDb, 300);
input.addEventListener('input', save);
Everything lives on GitHub. Bug reports, questions, and contributions: all welcome. Open an issue or start a discussion.