|
Documentation
Book a DemoPlatform
PlatformMCPCLI
APIWorkflows
GuidesChangelog

Overview

  • @lingo.dev/cli

Getting started

  • Quickstart
  • Configuration

Reference

  • lingo push
  • lingo pull
  • Other commands
  • lingo purge

Configuration

  • Key controls
  • Formats
  • Locales

Guides

  • Adding a locale
  • Existing translations
  • Retranslation
  • Translator notes
  • Runs, state, and recovery
  • CI/CD
  • Monorepos
  • Large projects

Looking for the older CLI (v0)? See the legacy CLI docs

Runs, state, and recovery

lingo push submits a run to the engine and waits for it. But the run lives on the server, not in your terminal — so you can close the terminal, switch machines, or let CI take over, and still collect the results. This page covers how that works and how to recover when a run fails.

Run state#

Each push records the run it submitted in a per-machine file:

text
~/.lingo/runs/<hash>.json

The <hash> is derived from the absolute project path, so every checkout gets its own entry. The file holds the run ID, engine, and org — enough for a later lingo pull to find the outputs.

It's per-machine state, not project state — it lives in your home directory, never in the repo, and isn't committed.

Pulling on another machine#

Because the run lives server-side, you can push from one place and pull from another:

bash
# laptop
lingo push

# CI, or a second machine with the same checkout + credentials
lingo pull

pull fetches the outputs of the most recent run for this project. It also checks the lockfile for local edits and refuses to clobber them unless you pass --force. See lingo pull.

Moving the project

The run-state filename is keyed on the absolute project path. If you move the directory between push and pull, the lookup misses — the run ID is still in ~/.lingo/runs/ if you need to recover it by hand.

Recovering a failed run#

If a run errors out partway — a timeout, a transient engine error — use:

bash
lingo resume

resume re-emits the outputs from the engine's cached results instead of re-translating, so a recovered run doesn't spend credits again. It reports what it recovered and what couldn't be linked back.

If resume reports targets it couldn't recover, fill them in with a normal backfill:

bash
lingo push --backfill-missing

When to use what#

SituationCommand
Collect results after closing the terminallingo pull
Push on a laptop, pull in CIlingo push then lingo pull
A run failed midwaylingo resume
Resume left gapslingo push --backfill-missing

Was this page helpful?

Max PrilutskiyMax Prilutskiy·Updated about 8 hours ago·2 min read