Skip to content

Getting started

Installation & Setup

Complete guide to setting up langctl for your team, including both the web dashboard and CLI tool.

Prerequisites

Before installing langctl, ensure you have:

For Dashboard

  • Modern web browser (Chrome, Firefox, Safari, Edge)
  • Valid email address
  • Internet connection

For CLI

  • Node.js 20 or higher (Download)
  • npm or yarn package manager
  • Terminal/Command line access
  • langctl account (for API key)

Verify Node.js Installation

terminal
node --version
npm --version

Set Up the Dashboard

Create Your Account

  1. Navigate to app.langctl.com/signup
  2. Fill in the form:
    • Full Name: Your name
    • Email: A valid email address (you’ll receive a verification link)
    • Password: At least 8 characters
  3. Click Create account

Verify Your Email

After signing up:

  1. Check your email inbox
  2. Open the verification email from langctl
  3. Click the verification link (it expires after 24 hours)
  4. You’ll be taken back to the app

Tip

Didn’t receive the email? Check your spam folder, or click Resend email on the verification screen. The newest link replaces any earlier ones.

Note

Until your email is verified you can’t create an organization, invite people or use langctl’s AI translation.

Create Your Organization

After verifying your email and signing in:

  1. You’ll be asked to create an organization
  2. Enter your organization name:
    • Can be your company name, team name, or project name
    • Examples: “Acme Inc”, “My Startup”, “Personal Projects”
  3. Create the organization

What is an Organization?

An organization is the top-level container for your projects, team members, API keys and plan. All your translation projects belong to an organization.

After creating your organization, you’ll land on Home:

  • Sidebar: Projects, the current project’s Translations, Import & Export, Languages and Project settings, plus Team, API Keys, Plan & Billing and Settings
  • Getting started checklist: Create a project, add keys, install the CLI, pull translations
  • Your projects: Key counts and missing translations per project

To rename the organization later, go to Settings in the sidebar (owners and admins only). Your plan and usage are under Plan & Billing.

Install the CLI

terminal
npm install -g langctl

The -g flag installs langctl globally, making it available from any directory.

terminal
yarn global add langctl

Run without installing:

terminal
npx langctl --version

Tip

Use npx langctl if you want to try the CLI without installing it globally, or if you need to use a specific version.

terminal
langctl --version
langctl --help

If you see the version number, installation was successful!

If you get command not found: langctl after npm install:

  1. Check npm global bin path:

    terminal
    npm config get prefix
  2. Add to PATH (macOS/Linux):

    terminal
    export PATH="$PATH:$(npm config get prefix)/bin"
  3. Reload shell:

    terminal
    source ~/.zshrc  # or ~/.bashrc

If you get permission errors:

terminal
npx langctl

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc
source ~/.zshrc
npm install -g langctl

On Windows, ensure Node.js bin directory is in PATH:

  1. Open System Properties -> Environment Variables
  2. Edit PATH variable
  3. Add: %APPDATA%\\npm
  4. Restart terminal

Create an API Key

  1. Log in to app.langctl.com
  2. Navigate to API Keys in the sidebar
  3. Click New API Key
  4. Enter a descriptive name:
    • Examples: “My Laptop”, “CI/CD”, “Development”
  5. Choose its permissions (see scopes)
  6. Click Create API Key
  7. Copy the API key immediately (it’s shown only once!)

Important: Save Your API Key

The API key is displayed only once for security reasons. If you lose it, you’ll need to create a new one. Store it securely (e.g., in a password manager).

terminal
langctl init

langctl init asks for the API key (input is hidden), lets you pick a project, file format and path, and writes a langctl.json to commit with your code.

To store a key without setting up a repository, use langctl auth. It prompts for the key, or reads it from stdin so the key stays out of your shell history:

terminal
langctl auth                              # prompts for the key (input hidden)
echo "$MY_LANGCTL_KEY" | langctl auth --stdin

For CI/CD or temporary use, set an environment variable instead — no login step needed:

terminal
export LANGCTL_API_KEY=lc_your_api_key_here
langctl projects list

Check that everything works:

terminal
langctl whoami

whoami shows your organization, where the key came from, its scopes and the API latency. If you see your organization, authentication was successful!

The stored key lives in ~/.langctl/config.json (readable only by you, mode 600; set LANGCTL_CONFIG_DIR to move it). LANGCTL_API_KEY and --api-key take precedence over it. Project settings (project, format, output path) live in langctl.json in your repository instead.

To see the effective configuration and where each value comes from:

terminal
langctl config

To remove the stored key:

terminal
langctl logout

To switch between organizations or environments:

terminal
LANGCTL_API_KEY=lc_prod_key_here langctl pull

LANGCTL_API_KEY=lc_dev_key_here langctl push --dry-run

✅ DO:

  • Store API keys in environment variables for CI/CD
  • Use separate API keys for different environments
  • Revoke unused API keys
  • Rotate keys periodically (every 90 days)
  • Use descriptive names to track key usage

❌ DON’T:

  • Commit API keys to version control
  • Share API keys via email or chat
  • Use production keys in development
  • Store keys in plain text files in your repository
terminal
# .gitignore — keep keys out of the repo
.env

# .env
LANGCTL_API_KEY=lc_your_key_here

# load it in your shell
export LANGCTL_API_KEY=$(grep LANGCTL_API_KEY .env | cut -d '=' -f2)

langctl.json contains no secrets (only project, format and paths), so commit it.

Use secrets management:

  • GitHub Actions: Use repository secrets
  • GitLab CI: Use CI/CD variables
  • CircleCI: Use environment variables
  • Jenkins: Use credentials plugin
yaml
- name: Check translations are up to date
env:
  LANGCTL_API_KEY: ${{ secrets.LANGCTL_API_KEY }}
run: npx langctl@0 pull --check

Invite Your Team

  1. Navigate to Team in the sidebar
  2. Enter one or more email addresses (separate several with commas)
  3. Select a role:
    • Admin: Projects, keys, import/export, team members and API keys
    • Member: Edit translations and keys, import and export
    • Viewer: Read-only access to projects and translations
  4. Click Send Invite

Owners and admins can invite people. Your plan’s member limit applies - the Free plan has a single seat, so inviting teammates needs a plan with more members.

terminal
langctl team invite developer@company.com --role member
langctl team invite manager@company.com --role admin

Team commands need an API key with the org:admin scope.

  1. The team member receives an invitation email (valid for 7 days)
  2. They click the invitation link
  3. They create an account (if new) or sign in with the invited email address
  4. They’re added to the organization and can access every project, according to their role

Now that you’re set up, continue with:

If you need to uninstall langctl:

terminal
npm uninstall -g langctl

yarn global remove langctl
terminal
rm -rf ~/.langctl   # stored API key and CLI configuration

Delete Your Organization

  1. Log in to the dashboard
  2. Go to Settings in the sidebar
  3. Scroll to Danger Zone
  4. Click Delete Organization (owners only)
  5. Type the organization name to confirm

Warning

Deleting your organization will permanently delete all projects, translations, and team member access. This action cannot be undone.