Context Profiles
Different parts of your app need different tones. Marketing copy sounds energetic. Legal text stays precise. One command handles all of it.
╦╔═ ╔═╗ ╔╦╗ ╔═╗ ╠╩╗ ║ ║ ║ ║ ║ ╩ ╩ ╚═╝ ╩ ╚═╝
Ship your app in every language. One command, any LLM.
You add a button. You change a heading. Your source locale is done in seconds — but your 6 target locales are now stale. AI translation tools exist, but they treat a payment confirmation the same as a marketing headline.
Context Profiles
Different parts of your app need different tones. Marketing copy sounds energetic. Legal text stays precise. One command handles all of it.
Bring Your Own LLM
OpenAI, Anthropic, Google Gemini, Ollama, or any compatible endpoint. Switch providers with one config line.
Type-Safe Keys
Generate TypeScript types from your locale files. Typos and missing keys fail at build time, not in production.
Smart Cache
SHA-256 content hashing + lockfile. Unchanged strings are never re-translated. Incremental runs take seconds.
Quality Scoring
Placeholder integrity, length ratio, untranslated detection. Gate your CI pipeline on translation quality.
CI/CD Ready
GitHub Action included. Translations run in your pipeline. Use --fail-on-error to block bad releases.
/** @type {import('koto').KotoConfig} */export default { sourceLocale: 'en', targetLocales: ['es', 'fr', 'de', 'ja'], files: ['src/locales/[locale].json'], provider: { name: 'openai', model: 'gpt-4o-mini' },};That’s it. Run npx koto and your locale files are ready.
Contribute translations to open-source projects without cloning, configuring, or setting up anything. koto forks the repo, detects the i18n setup, translates, and opens a PR — automatically.
npx koto contribute calcom/cal.com --locale koThe PR includes a quality report with scores, flagged translations, and a “Powered by koto” footer. See a real example →