Kivel
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
Kivel
The internet toolkit for AI coding agents: HTTP and webhooks, email, mock APIs
and OAuth, files, monitors, memory, authenticators, a password vault, scheduled jobs and status
pages, test data and media, developer utilities, DNS and network checks.
One MCP connection, with HTTP, a TypeScript SDK, CLI and optional SSH gateway.
Use search_tools to discover the complete catalog, describe_tool for inputs
and run_tool for utilities. Hosted resources have dedicated tools and lifecycle
routes. The catalog drives tool counts and availability; browser utilities stay free.
Next.js, Radix UI, Motion, Fastify and PostgreSQL.
Development
Requires Node.js 22+ and pnpm 10.
pnpm install
pnpm devOpen the site at http://localhost:3001 and create a local account at
http://127.0.0.1:3002/signup/. Use the exact workspace address for sign in so
the browser sends its session cookie. pnpm dev starts a loopback backend and
a PostgreSQL instance with data in .data/. Set DATABASE_URL to use another
development database. If a port is occupied, set KIVEL_BACKEND_PORT,
KIVEL_SITE_PORT, or KIVEL_APP_PORT before running pnpm dev.
pnpm checkRuns type checks, catalog and API tests, PostgreSQL integration tests, and production builds.
Audio/video tools need ffmpeg and ffprobe on PATH for local development.
The Docker image includes both. They accept files up to 10 MiB and 120 seconds,
produce at most 5 MiB, and cancel after 20 seconds. Uploads and results are removed
after processing; no media history is retained.
Related MCP server: agentforge
Production
Kivel runs on one VPS behind Cloudflare. Every push to main that passes CI runs the
Deploy workflow: it builds the app, database and proxy images, pushes them to the private
Docker Hub repository tangobee/socket, then runs deploy/server-deploy.sh
on the server over SSH. That script backs up the database, pulls the release, waits for it to
become healthy and rolls back if it does not; the workflow then runs
scripts/production-check.mjs against the live site. Run the workflow by hand to redeploy any
commit. It needs the DOCKERHUB_TOKEN, DEPLOY_SSH_KEY and DEPLOY_KNOWN_HOSTS secrets and the
DEPLOY_HOST variable.
BILLING_ENABLED=false is the default for self-hosting; Pro/Team checkout stays closed even if
Dodo credentials are present. Public production startup requires recovery email configuration.
Support is support@kivel.io.
Docker
node scripts/setup-env.mjs
docker compose up -d --build --wait
pnpm test:smokeOpen the public site at http://localhost:8080 and the workspace at http://127.0.0.1:8080. The workspace manages resources, keys and usage. The public site has pricing, docs and the tool catalog.
Passwords are generated in ignored .env with owner-only
permissions. PostgreSQL uses a persistent volume; the app runs as a non-root user
with a read-only filesystem. Do not remove volumes when upgrading.
For public HTTPS, point your domain and its app subdomain at the server. Set up both DNS records before deploying the host split, allow ports 80 and 443, and set DOMAIN in .env. Caddy serves both hosts from one app image and provisions their certificates.
Deploy the host split before enabling live events so the previous release can also start on database schema 20.
docker compose -f compose.yaml -f compose.production.yaml up -d --build --waitThe app trusts only the proxy's configured IP. The proxy
network uses 10.203.0.0/24; set PROXY_NETWORK_PREFIX to another unused prefix
if that range conflicts with your host. HTTP and SSH app ports bind to localhost; only the proxy exposes public ports by default.
If you add a CDN or another proxy, configure its trusted IP ranges in Caddy too.
Operations
/health checks the process; /ready also checks PostgreSQL. Logs rotate and
exclude payloads, query strings, and tokens. Migrations run transactionally at startup.
Keep .env with the persistent volume; changing passwords there does not rotate
existing database credentials.
docker compose exec -T database pg_dump -U socket_admin -d socket -Fc > backup.dumpProtect backups and define a short retention period: they include captured data. Restore while the app is stopped:
docker compose stop app
docker compose exec -T database pg_restore -U socket_admin -d socket --clean --if-exists --exit-on-error < backup.dump
docker compose up -d --waitnode scripts/verify-backup.mjs verifies a backup in an isolated temporary database.
pnpm scan:images checks all three built images for high/critical vulnerabilities.
pnpm test:https tests the built stack with verified local TLS and proxy trust.
See backend/README.md for API details. Start at /docs/; the interactive Scalar reference is at
/docs/reference/. Tool guides, /blog/, and /compare/ are statically rendered
with canonical metadata and sitemap coverage. Unavailable tools remain Coming soon
and are excluded from search indexing.
Set SITE_URL at build time for custom SEO canonicals; the HTTPS Compose stack
uses DOMAIN automatically.
MCP Registry
Kivel is listed on the official MCP Registry
as io.kivel/kivel, from server.json. The io.kivel namespace is verified by a DNS TXT
record on kivel.io, signed with an Ed25519 key kept outside the repository. To publish a
new version, bump version in server.json to match the server's reported version, then:
mcp-publisher validate server.json
mcp-publisher login dns --domain kivel.io --private-key "<hex private key>"
mcp-publisher publish server.jsonClients and billing
pnpm build:packages builds the shared engine, TypeScript SDK, and CLI.
SDK and CLI are published on npm:
npm install @kivel.io/sdk and
npm install --global @kivel.io/cli (then kivel --help).
Run pnpm test:packages to verify standalone installable tarballs in release/.
See client releases for publishing and installation.
Start with /docs/agent-workflows/ for device login, email, memory, monitors and human questions.
Use pnpm cli --help; set KIVEL_URL and KIVEL_API_KEY for scripts.
For file utilities, pipe bytes to run <id> --file <name>. PDF merging and image-to-PDF
accept an ordered file array in SDK/HTTP execution; MCP uses the files argument.
The CLI exposes the same multi-file request through api POST /api/tools/<id>/run.
The optional SSH gateway listens on localhost:2222 in Docker and accepts API keys
as the password for user socket. Its host key persists in ssh_host_keys; verify
the fingerprint printed at startup. Set SSH_PORT=0 to disable it. It exposes tool
commands, with no shell, forwarding, SCP, or SFTP.
Dodo Payments checkout requires BILLING_ENABLED=true and the four DODO_* credentials/product
settings in .env.example to be configured. Rebuild after changing the billing flag so static pricing and
runtime checkout agree. DODO_PAYMENTS_ENVIRONMENT defaults to
test_mode; enable live_mode only after a complete sandbox checkout and renewal.
Use two distinct fixed recurring products with no trials, discounts or usage meters.
Set the subscription duration to 20 years, as required by this integration, with
a monthly payment frequency. Annual billing is not offered. Prices come from Dodo.
Register https://<your domain>/billing/webhook (for production, exactly
https://kivel.io/billing/webhook) for subscription lifecycle events. Dodo does not
follow redirects, so an old domain or http:// URL fails every delivery with 308;
node scripts/production-check.mjs checks the endpoint answers directly. Use the endpoint’s
Standard Webhooks signing secret. Entitlements follow verified events and a fresh
subscription retrieval, never the checkout return URL. The customer portal is
available to workspace owners. When replacing a Dodo product, add its old ID to
DODO_LEGACY_PRODUCT_IDS, for example {"pdt_oldpro":"pro"}. Existing subscriptions
keep their paid access and new checkout uses the current product IDs.
The deploy workflow builds with the legacy pricing schedule by default. To
launch early pricing, create fixed USD monthly products for Pro ($5) and Team
($29) in Dodo. Configure their IDs on the server and map the retired IDs with
DODO_LEGACY_PRODUCT_IDS. Set the GitHub repository variable
BILLING_PRICE_SCHEDULE to early and deploy. The image uses the same schedule
for the public pages and checkout. Checkout checks the Dodo product prices
before creating a session. Test the matching products in Dodo test mode before
switching live. To move to the $9 Pro price, use standard and add the $5
product ID to the retired map. When rolling back pricing, restore the matching
current product IDs with the earlier image.
Account recovery
Set SMTP_HOST, SMTP_PORT (587 by default), SMTP_FROM (an email address), and
SMTP_USER / SMTP_PASSWORD for your transactional email provider. Remote SMTP
requires TLS; credentials and sender settings stay in .env. Keep AUTH_SECRET
stable: it encrypts pending recovery mail. Delivery retries use the PostgreSQL
outbox. Configure SMTP before enabling Dodo Payments subscriptions.
Signup always requires and saves an email address, including before SMTP is configured. Users verify that address from Account security. Password recovery uses an eight-digit, single-use code entered on the site, never in a URL. Codes last 15 minutes with five attempts. Resetting revokes all sessions and API keys while preserving workspace resources. Checkout requires a verified recovery email.
Sharing and isolation
Resource pages default to private access. Public links work without a credential;
private downloads, mock calls, MCP calls, and webhook senders require a separate
sharing token (X-Access-Token or Bearer). Management/inspection tokens control
configuration and history; they cannot download private content. Account-owned
management requires current workspace access. Rotate a sharing token to invalidate
previously issued access tokens. All interfaces default to private; send
?visibility=public explicitly for public sharing. File links contain only the
resource ID. Share private access tokens separately; recipients enter them on
the receiver page, which sends them in a request header. URL fragments do not
authorize access.
Formatters, generators and image/PDF operations run in bounded worker threads.
Network tools contact public targets with address pinning, redirect validation and
a ten-second deadline (API scenarios allow up to six sequential requests and twenty seconds overall). Execution inputs and results are not retained; mock/MCP configuration never
executes user code. Uploads are served as attachments, and previews run locally.
Global PostgreSQL allocation caps can be set with MAX_RESOURCE_BYTES,
MAX_RESOURCES, MAX_TOTAL_INBOX_BYTES, and MAX_INBOXES, separately from plan limits.
Set maxDownloads=1 for a one-time file link. Its final allowed download removes
the stored file contents and releases their storage; metadata remains manageable
until deletion or expiry. The web catalog includes one-time and private-sharing
pages. SDK and CLI uploads default to private access, and raw API creation uses the same private default.
Original music assets
The built-in CC0 tracks include full MP3 arrangements and editable WAV loops.
Source recipes live in packages/tools/src/audio.ts; reproduce the MP3 files with
pnpm build:packages followed by node scripts/build-music-library.mjs (FFmpeg required).
Track-specific license notes ship in frontend/public/music/LICENSE.txt.
The composer and image tools also publish option metadata through
GET /api/tools/:id, kivel describe <id>, and MCP describe_tool.
API test scenarios use the same hosted execution endpoint and clients. The workbench
supports variables, separate secret inputs, response checks and JSON captures; exports
exclude secret values. See /docs/api-scenarios/ for the format and report contract.
Stateful CRUD mocks add one seeded collection to the existing mock lifecycle. Record
reads and writes use /mock/:id/:collection; management reset is
POST /api/mocks/:id/reset. SDK/CLI/SSH accept /mock/ paths with a separate caller
token; MCP exposes call_mock_api. See /docs/stateful-crud-mocks/ for formats,
revision guards, limits and the distinction between seed and live exports.
HTTP echo endpoints use the same mock lifecycle with {name, routes: [], echo: true}.
Call /mock/:id with an optional relative path to inspect redacted request metadata
and a parsed JSON/text body. Requests are not retained. See /docs/http-echo/.
Test agent payments
Test mode wallets, x402 v1 paywalls and hosted checkouts use fake units only. There are no real funds, blockchain transactions or private keys. Wallet limits and approval thresholds require an owner/admin browser session; agent keys cannot change them. Above the threshold, agents share the approval URL and resume with the same idempotency key after a human answers. Hosted checkouts collect no card details. Checkout webhooks are signed and retried using the existing forwarder.
Use create_test_wallet, wallet_pay and list_wallet_transactions over MCP,
the SDK test payment methods or kivel test-wallet, test-paywall and
test-checkout. All three use existing resource/storage quotas and mock retention.
Keep AUTH_SECRET stable for encrypted webhook secrets and payment tokens.
Guide: Test an agent that pays.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA comprehensive MCP server providing over 390 tools across 66 providers, including major SaaS platforms like GitHub, Slack, and Stripe. It enables AI assistants to interact directly with a wide array of public APIs and utility services through a single interface.-
- AlicenseAqualityDmaintenanceMCP server that exposes 300+ AI agents as tools via a single API key. Supports listing agents, invoking any agent with chat-completion style messages, checking agent health, and retrieving platform statistics.54MIT
- AlicenseAqualityDmaintenanceA general-purpose MCP server providing web search, persistent memory storage, and secure code execution capabilities. It enables AI agents to search the web, store and retrieve data, and run Python/JavaScript code in sandboxed environments.8MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to discover and execute tools via a secure MCP server with JWT authentication, RBAC, rate limiting, and audit logging.1MIT