# git8n > An editor for the JSON locale files of a GitHub repository, with an MCP server for agents. To connect an agent to git8n, read [the setup prompt](/docs/agent-prompt.md). Every page below is also in [llms-full.txt](/docs/llms-full.txt). ## Key facts - The files of a GitHub repository are the storage. The database holds the repositories, the accounts and their rights, and no text. - JSON locale files only, in one folder for each language. No YAML, `.po`, XLIFF or ARB. - GitHub only, through a GitHub App. No GitLab or Bitbucket. - No translation memory, no glossary, and no machine translation on the server. - The MCP server and the CLI propose. They never publish: a person with the right reviews and publishes. - A proposal is a commit on the branch `i18n/`. A publication is a commit on the base branch, or a pull request. - `git8n check` checks the locale files of a clone with no server and no token. ## Pages - [CLI](/docs/raw/agents/cli.md): Install the git8n CLI, sign in, read and propose translations from a terminal, a script or CI. - [MCP server](/docs/raw/agents/mcp.md): Connect an agent to the git8n MCP server in each client: what it reads, what it proposes, and what it never does. - [Review and publish a batch](/docs/raw/agents/review-a-batch.md): Read a batch of translations that an agent proposed, and publish what is right. - [Access tokens](/docs/raw/agents/tokens.md): Create, scope and revoke the access tokens that an agent, a script or the CLI uses. - [Translate a new language with Claude Code](/docs/raw/agents/translate-with-claude-code.md): Take a new language from nothing to a proposal with Claude Code and the MCP server. - [i18next JSON](/docs/raw/formats/i18next.md): The i18next JSON files that git8n reads and writes: layout, keys, plurals, placeholders, and limits. - [ICU MessageFormat](/docs/raw/formats/icu.md): What git8n understands of ICU MessageFormat in a text, and what it does not. - [Formats](/docs/raw/formats/index.md): The file formats and placeholder syntaxes that git8n reads, and the ones it does not. - [Libraries](/docs/raw/formats/libraries.md): How react-i18next, vue-i18n, next-intl and other libraries fit the files that git8n edits. - [Accounts and rights](/docs/raw/guide/accounts.md): Admins, the roles of a member in a repository, what each role and an agent can do. - [Compare git8n](/docs/raw/guide/compare.md): git8n compared with Fink, Tolgee, Crowdin and Weblate, and what git8n does not do. - [Concepts](/docs/raw/guide/concepts.md): The parts of git8n, and what each action writes in git, from a proposal to a publication. - [Getting started](/docs/raw/guide/getting-started.md): From the first sign-in to the first commit: connect a repository, translate, publish. - [Migrate from Crowdin](/docs/raw/guide/migrate-from-crowdin.md): Move the translations of a GitHub repository from Crowdin to git8n, step by step. - [A repository and its locale files](/docs/raw/guide/repositories.md): The locale files of a repository, its settings, its manifest, and how a publication reaches the base branch. - [Troubleshooting](/docs/raw/guide/troubleshooting.md): Fixes for the usual problems, one symptom for each title. - [git8n](/docs/raw/index.md): git8n translates the JSON locale files of a GitHub repository, by hand or with an agent. - [Deploy the editor](/docs/raw/operate/deploy.md): Deploy the editor: the two images, the order of a deployment, and every variable. - [The GitHub App](/docs/raw/operate/github-app.md): Create the GitHub App of the editor, its permissions and webhook, and connect a repository. - [Security](/docs/raw/operate/security.md): The threats around tokens, agents and the GitHub App, each with its risk and its mitigation. - [Run it locally](/docs/raw/operate/self-host.md): Run the editor on your own computer: the packages, the commands and the checks. - [CLI reference](/docs/raw/reference/cli.md): Every command, option, environment variable and exit status of the git8n CLI. - [G8N1001](/docs/raw/reference/errors/g8n1001.md): The command or an option is wrong. - [G8N1002](/docs/raw/reference/errors/g8n1002.md): No address of the API: pass --api or set GIT8N_API_URL. - [G8N1003](/docs/raw/reference/errors/g8n1003.md): The input of apply is not valid. - [G8N1004](/docs/raw/reference/errors/g8n1004.md): The file of the credentials is not valid. - [G8N1005](/docs/raw/reference/errors/g8n1005.md): check cannot find the locales, the manifest or the source language. - [G8N2001](/docs/raw/reference/errors/g8n2001.md): No account is signed in, or the API refused the token. - [G8N2002](/docs/raw/reference/errors/g8n2002.md): The device code expired before somebody approved it. - [G8N2003](/docs/raw/reference/errors/g8n2003.md): The person refused the device code. - [G8N2004](/docs/raw/reference/errors/g8n2004.md): The scope of the access token does not allow the request. - [G8N3001](/docs/raw/reference/errors/g8n3001.md): No repository matches. - [G8N3002](/docs/raw/reference/errors/g8n3002.md): The repository is not clear: pass --repo. - [G8N3003](/docs/raw/reference/errors/g8n3003.md): The language is not clear, or the account cannot open it: pass --lang. - [G8N3004](/docs/raw/reference/errors/g8n3004.md): A key is not a key of the source, or its file has no version in the language. - [G8N4001](/docs/raw/reference/errors/g8n4001.md): The API refused the request. - [G8N4002](/docs/raw/reference/errors/g8n4002.md): The API failed, or did not answer. - [The error codes of git8n](/docs/raw/reference/errors/index.md): Every error code of the CLI, with its exit status. - [MCP tools](/docs/raw/reference/mcp-tools.md): Every tool of the git8n MCP server, its input fields, and whether it writes. - [empty-source](/docs/raw/reference/rules/empty-source.md): A text of the source is empty. - [empty-value](/docs/raw/reference/rules/empty-value.md): A translation is empty, and the manifest does not mark it. - [extra-file](/docs/raw/reference/rules/extra-file.md): A file has no version in the source. - [extra-key](/docs/raw/reference/rules/extra-key.md): A key is not in the source. - [icu-plural-forms](/docs/raw/reference/rules/icu-plural-forms.md): An ICU plural does not have the forms of its language. - [The rules of git8n check](/docs/raw/reference/rules/index.md): Every rule of git8n check, with its level. - [invalid-json](/docs/raw/reference/rules/invalid-json.md): The file is not a JSON object. - [invalid-manifest](/docs/raw/reference/rules/invalid-manifest.md): The manifest is not valid. - [missing-key](/docs/raw/reference/rules/missing-key.md): A key of the source has no translation. - [not-a-string](/docs/raw/reference/rules/not-a-string.md): A value is not a string or an object. - [placeholders](/docs/raw/reference/rules/placeholders.md): The translation does not keep the placeholders of the source. - [plural-branches](/docs/raw/reference/rules/plural-branches.md): A plural of vue-i18n does not have the branches of the source. - [skipped-file](/docs/raw/reference/rules/skipped-file.md): The editor leaves out a file with this name. - [stale-empty](/docs/raw/reference/rules/stale-empty.md): A key is empty on purpose, but its source changed since. - [unknown-link](/docs/raw/reference/rules/unknown-link.md): A linked message of vue-i18n names a key that does not exist.