Translate your application with Languine CLI powered by AI.
Translate your application with Languine CLI powered by AI.
Self-hosted, Vercel-native AI localization. Click Deploy. Run npx languine. That's it.
.%20AI_MODEL%20is%20optional%20(default%20openai%2Fgpt-4.1).&envLink=https%3A%2F%2Fgithub.com%2Flanguine-ai%2Flanguine%23environment-variables&stores=%5B%7B%22type%22%3A%22postgres%22%2C%22productSlug%22%3A%22neon%22%7D%5D&demo-title=Languine&demo-description=Self-hosted%20AI%20localization%20on%20your%20own%20Vercel%20account&demo-image=https%3A%2F%2Fraw.githubusercontent.com%2Flanguine-ai%2Flanguine%2Fmain%2Fapps%2Fweb%2Fsrc%2Fapp%2Fopengraph-image.png&demo-url=https%3A%2F%2Flanguine.ai)
What the button does:
apps/web as the root.DATABASE_URL is auto-injected.LANGUINE_API_KEY (any random string) and an optional AI_MODEL slug.drizzle-kit migrate against your fresh database.After the first deploy, do these two things:
/cli/token. Without this, your API key is publicly visible.https://<your-deployment>.vercel.app). It shows a status checklist and ready-to-paste CLI commands.That's it. No additional integrations to configure — Vercel AI Gateway authenticates automatically via the project's OIDC token.
The self-hosted CLI ships under the
selfhostednpm dist-tag so it doesn't disturb users still pointed at the legacy hosted backend. Install it withnpx languine@selfhosted ...(or pin"languine": "^4"in yourpackage.json).npx languine@latestcontinues to resolve to the legacy 3.x CLI for the old hosted service.
In any project that needs translations:
npx languine@selfhosted login --url https://languine.your-team.vercel.app
npx languine@selfhosted init
npx languine@selfhosted translatelanguine login opens /cli/token in your browser. Because Deployment Protection is on, only authorized owners can see the page — copy the API key, paste it into the CLI prompt.
languine init creates a project on your deployment via tRPC (project.create) and writes the returned projectId into languine.json. You don't need to provision anything from the dashboard.
For non-interactive use (CI, scripts):
export LANGUINE_BASE_URL=https://languine.your-team.vercel.app
export LANGUINE_API_KEY=<the-key-you-set-on-vercel>
npx languine@selfhosted translatename: Languine
on:
push:
branches: [main]
jobs:
translate:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: languine-ai/languine@v4
with:
api-key: ${{ secrets.LANGUINE_API_KEY }}
base-url: ${{ vars.LANGUINE_BASE_URL }}
project-id: prj_xxxxxxx
create-pull-request: 'true'| Variable | Required | Source | Description |
|---|---|---|---|
LANGUINE_API_KEY |
Yes | Set at deploy | Single API key shared between the dashboard, CLI and Action. Generate with openssl rand -hex 32. |
DATABASE_URL |
Yes | Auto-injected | Postgres connection string from the Vercel Marketplace integration you picked at deploy. |
AI_MODEL |
No | Set at deploy | Vercel AI Gateway model slug. Defaults to openai/gpt-4.1. Examples: anthropic/claude-sonnet-4, openai/gpt-4.1-mini. |
AI_GATEWAY_API_KEY |
No | Local dev only | Only needed when running locally outside Vercel. In production the Gateway uses the project's OIDC token. |
workflow SDK) — durable, resumable, observable.@ai-sdk/gateway + AI SDK v6) — single configurable model.LANGUINE_API_KEY for the CLI/Action; the dashboard is gated by Vercel Deployment Protection.flowchart LR
Dev[Developer] -->|languine| CLI
GHA[GitHub Action] -->|x-api-key| Web
CLI -->|x-api-key| Web[apps/web on Vercel]
Web --> Workflows[Vercel Workflows]
Workflows --> Gateway[Vercel AI Gateway]
Gateway --> Models[OpenAI / Anthropic / ...]
Web --> DB[(Postgres)]
Workflows --> DB
Owner[Owner browser] -->|Deployment Protection| Webgit clone https://github.com/languine-ai/languine
cd languine
bun install
cp apps/web/.env.example apps/web/.env # fill in DATABASE_URL etc.
bun devSet AI_GATEWAY_API_KEY in apps/web/.env so the Gateway can authenticate when not running on Vercel.
bun test # everything
bun test --filter @languine/web # just the web app
bun test --filter languine # just the CLIMIT © Midday Labs AB
No open issues yet, or sync has not completed.