Skip to content

VielzeugMany 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 functions9.6 KB1/28
Example 1 of 28: arsenal — pnpm add @vielzeug/arsenal
Any framework. No framework. Your choice.
A different kind of toolkitEverything fits. Nothing fights.30 packages built as one. Same conventions, same primitives, same release cadence — so you ship, not integrate.
0Transitive dependencies across all 30 packages
1Shared API shape — learn once, use everywhere
30Independently installable packages
One mental modelSame dispose() contract. Same signal shape. Same error format. Learn the pattern once — every new package feels familiar from line one.
No hidden dependenciesEvery package you install is every package you own. No surprises in node_modules, no version conflicts six months from now.
Built to work togetherValidation schemas plug into form fields. Signals drive UI templates. No adapter layer, no 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 });
});
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" })
assistantUse 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.