# Lingva CLI engine
The crates.io package is named `lingva`. This crate is the single implementation
of Lingva's customer CLI. It builds the
standalone `lingva` executable used by direct downloads, Homebrew, npm, and
PyPI. Language packages may locate and launch this binary, but must not
reimplement CLI behavior.
Owned commands:
- `lingva auth login|use-key|status|logout`
- `lingva init`
- `lingva update`
- `lingva sync|check`
- `lingva pull|push`
Install the published crate (requires Rust):
```bash
cargo install lingva
```
For customers without a Rust toolchain, use the checksummed GitHub installer,
Homebrew package, npm adapter, or PyPI adapter. Every route launches this same
binary.
## Behavioral guarantees
- `init` defaults to authenticated remote mode; account-free setup requires
`--mode local --no-auth` explicitly.
- `sync` is local-only and preserves translated strings. Variant IDs and
metadata align to the default locale while translated variant text survives.
- `check` never writes and exits non-zero for structural drift or invalid
translation leaves/keys.
- `pull` completes all selected three-way merges before writing, preventing
partial updates on conflict.
- `push` uses the last common revision and a semantic SHA-256 mutation ID;
`--force` deliberately removes the optimistic guard.
- explicit command tokens override environment, config, and stored credentials.
- text output is for people; `--format json` is the automation contract.
The TypeScript CLI remains available during the compatibility window only for
operator and artifact-generation commands outside this customer surface.
Migrated customer commands never fall back to TypeScript or Python.