Write the procedure. Get the whole API.
Vovk.ts is your back-end architect: every endpoint designed, typed, documented and ready for AI.
npx skills add finom/vovkDemo: the createTask procedure. Each field you add or rename, and the description, appears at once in the endpoint, the AI tool's input, the TypeScript RPC library and server actions, the Python and Rust types, the OpenAPI request body and the README.
Universal procedures: one definition is an endpoint, a server call, an AI tool and a typed client.
Try it: rename a field, add one or edit the description. Everything else follows.
- Endpointcurl -X POST /api/tasks -d '{"title":"Ship it","done":false}'
- AI tool{ name: "TaskRPC_createTask", description: "Create a task", input: { title: string, done: boolean } }
- RPC librarynpmTaskRPC.createTask({ body: { title: string; done: boolean } })
- Server actionsTaskController.createTask.fn({ body: { title: string; done: boolean } })
- Python clientPyPIclass CreateTaskBody(TypedDict):title: str; done: bool
- Rust clientcrates.iostruct body { title: String, done: bool }
- OpenAPI 3.1description: Create a taskrequestBody: { title: string, done: boolean }
- README### TaskRPC.createTask> Create a taskPOST /api/tasks
What you get
Typed clients
TypeScriptPythonRustGenerated from your procedures as TypeScript, Python and Rust packages, ready to publish.
The OpenAPI spec and a docs page come from the same code, so they match what runs.
Streaming
DocsAn async generator sends JSON Lines, and the client reads them with types.
Multitenancy
Docsmultitenant() in the Next.js proxy sends each subdomain to its own pages and API segment.
Plain Next.js
DocsIt runs in route handlers, with no custom server, and deploys wherever Next.js does.
Build it with your agent
Add the Vovk.ts skills to Claude Code, Cursor, Windsurf, GitHub Copilot or Cline, then ask for the API you need.
npx skills add finom/vovknpx vovk-cli@latest init