npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

vokli-sdk

v1.0.4

Published

![Kli mascot](./kli.png)

Readme

Vokli

Kli mascot

Vokli is an open-source TypeScript SDK for defining business agents, generating deterministic Vapi assistant configuration, deploying it, and synchronizing static documents. It is not yet a complete production voice platform: calls, webhooks, business Tools, transfers, and remote-state discovery are not implemented.

Quick Demo

To run and deploy the included example agent to Vapi, ensure you have your VAPI_API_KEY defined in examples/secretariat/.env (see examples/secretariat/.env.example), then run from the root:

# Install all dependencies across workspaces
npm i vokli-sdk

# Compile the packages and example
npm run build

# Deploy and sync the agent
npm start -w examples/secretariat

Local use and deployment (SDK)

import { createVokli, agent, vapiKnowledge } from "vokli-sdk";

// Initialize Vokli (uses Google Gemini and Azure BrigitteNeural defaults automatically)
const vokli = createVokli({
  provider: { type: "vapi", apiKey: process.env.VAPI_API_KEY! },
});

const definition = agent({
  id: "garage-martin",
  business: {
    name: "Garage Martin",
    language: "fr-FR",
    timezone: "Europe/Paris",
  },
  greeting: "Bonjour, comment puis-je vous aider ?",
  collect: {},
  knowledge: vapiKnowledge({ sources: ["./knowledge/services.md"] }),

  // Custom model, voice, and transcriber overrides
  model: { provider: "openai", model: "gpt-5-mini" },
  voice: { provider: "azure", voiceId: "fr-FR-JacquelineNeural" },
  transcriber: { provider: "soniox", model: "stt-rt-v5", language: "fr" },
});

const result = await vokli.deploy(definition);
await vokli.knowledge.sync(definition); // automatically uses result.assistantId

createVokli() remains valid for version and validate(). generate() needs explicit model and voice configuration; a real deployment/sync needs provider.apiKey unless a client is injected. Vokli supplies no fictional defaults.

deploy(agent, { dryRun: true }) validates and returns the generated configuration, canonical SHA-256 hash, and locally knowable plan. It performs no HTTP request or state write and needs no API key. Without prior state it reports a create plan, not a claim about remote differences.

Idempotency and state

.vokli/state.json format v2 atomically stores assistant, Query Tool and file IDs, deployment/document hashes, timestamps and pending recovery operations. It never stores API keys, prompts, or document content. Valid v1 knowledge state is migrated in memory and preserved on the next write; the historical knowledgeBaseId is retained only as migration metadata.

Remote identity comes exclusively from local state or the compatibility assistantId in vapiKnowledge(). Vokli deliberately does not search assistants by name. If state is lost, it cannot safely rediscover an assistant from the Vokli ID; restore the state or explicitly reconcile resources.

Knowledge Query Tool

Synchronization uploads changed files, creates/updates a Vapi query Tool whose knowledgeBases contain Google provider metadata and fileIds, then appends its ID to the assistant model's toolIds while preserving existing IDs and sending the complete fetched model. IDs are persisted after each successful creation/upload so retries do not duplicate completed work.

The injected knowledge.client and explicit vapiKnowledge({ assistantId }) remain supported. The legacy VapiKnowledgeApi Knowledge Base methods are deprecated compatibility shims; implement Query Tool methods for new clients. See the guide.

Command Line Interface (CLI)

Vokli provides a command-line interface to validate, deploy, and synchronize agent configurations without writing deployment scripts.

Ensure your configuration file exports your agent(s) (either as a default export or a named export):

// vokli.config.ts
import { agent } from "vokli-sdk";

export const definition = agent({
  id: "helpdesk-telecom-b2b",
  // ... agent config
});

Deploy the agent directly:

npx vokli deploy vokli.config.ts

Multiple Agents

If your configuration file exports multiple agents (either in an array or as separate named exports), the CLI handles this:

  • Interactive selection: In interactive terminals, it prompts you to select the agent to deploy, deploy all, or cancel.
  • Specific agent selection: Use --agent <id> or -a <id> to deploy only one agent:
    npx vokli deploy vokli.config.ts --agent helpdesk-telecom-b2b
  • Deploy all: Use the --all flag to deploy all agents sequentially:
    npx vokli deploy vokli.config.ts --all

Development

The project is structured as an npm monorepo. Use the following commands to build, format, lint, and test:

npm i vokli-sdk
npm run build
npm test
npm run lint
npm run format