CLI tool
argosopentech/argos-translate avatar
argosopentech/argos-translate

Argos Translate: an offline Python translation library you install with pip

Open-source offline translation library written in Python

6,467 stars485 forksPythonMIT

At a glance

What is it?
Argos Translate runs OpenNMT models locally through CTranslate2, installs languages as .argosmodel packages, and pivots through intermediate languages when a direct pair is missing. It is a good fit for offline pipelines and a poor fit for anyone who needs the accuracy of a hosted engine.
Who is it for?
Adopt Argos Translate if you need translation to run inside your own process, on your own machine, with no network call and no per-character billing; the pip install, the .argosmodel package format and the argospm CLI make that path short. Do not adopt it if your requirement is the translation quality of a large hosted service, or if the language pair you need has no package in the index and no usable pivot through English.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 41 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem Argos Translate solves: translation without a network call

Most translation APIs are a network dependency. You send text to a vendor, you get text back, and your application inherits the vendor's latency, pricing, rate limits and terms. Argos Translate inverts that. It is a Python library that performs the translation in your own process, using model files you download once and keep on disk. The README describes it as an "Open-source offline translation library written in Python", and that single word, offline, is the whole design constraint.

The audience follows from that constraint. If you are processing documents that cannot leave a machine, if you are building a desktop application that has to work on a plane, if you want translation inside a batch job without a per-request cost, this is the shape of tool you are looking for. It is also the engine underneath LibreTranslate, which the README describes as an API and web app built on top of it, so if you have used that service you have already used these models.

How the translation pipeline actually works

Argos Translate does not train models at runtime. It loads pre-trained OpenNMT models and runs them through CTranslate2, which is the inference engine listed first in requirements.txt as ctranslate2>=4.0,<5. Tokenization and sentence handling come from the other pinned dependencies: sentencepiece, spacy, sacremoses and minisbd.

Models are distributed as zip archives with a .argosmodel extension, containing the data needed for translation. The argospm-index repository holds metadata and download links for the pre-trained packages, and the library can update its local view of that index and install a package from a URL. Each package is directional: the README's example uses an en to es package, and the CLI example installs translate-en_de, which is English to German.

The interesting mechanism is pivoting. If you have es to en and en to fr installed, the library will translate es to fr by going through English, without an es to fr package being present. The README is explicit that this comes "at the cost of some loss of translation quality". That trade is the central engineering decision in the project: it multiplies the number of reachable language pairs enormously while making the quality of any pivoted pair dependent on two models instead of one. If your source language is not well served by a direct package, you are almost certainly going through English, and you should evaluate the output with that in mind.

Installing Argos Translate with pip and translating your first string

The README gives a pip install as the primary route. The package is published on PyPI as argostranslate.

bash
pip install argostranslate

There is a separate GUI package, argostranslategui, installed the same way, but the GUI code lives in its own repository. For source work, the README clones the repo into a virtualenv and installs it in editable mode:

bash
virtualenv env
source env/bin/activate
pip install -e .

The Python example downloads the package index, filters for the pair you want, installs it, then calls translate. Note that installing a package requires fetching it, so the first run needs network access even though translation itself does not.

python
import argostranslate.package
import argostranslate.translate

from_code = "en"
to_code = "es"

argostranslate.package.update_package_index()
available_packages = argostranslate.package.get_available_packages()
package_to_install = next(
    filter(lambda x: x.from_code == from_code and x.to_code == to_code, available_packages)
)
argostranslate.package.install_from_path(package_to_install.download())

translatedText = argostranslate.translate.translate("Hello World", from_code, to_code)
print(translatedText)

The README states the expected output is '¡Hola Mundo!'. If the filter returns nothing, there is no package for that pair in the index, and you will need to pick a different pair or rely on a pivot.

For command line use, two console scripts are declared in setup.py: argos-translate and argospm. The README's sequence is to update the index, install a package by name, then translate.

bash
argospm update
argospm install translate-en_de
argos-translate --from en --to de "Hello World!"

The documented output is "Hallo Welt!". There is also a bulk install, argospm install translate, which the README says installs all translation packages. That is a large download and worth doing only if you genuinely need many pairs.

GPU acceleration is opt-in through an environment variable, which is passed to CTranslate2. The README shows cuda, and the text also mentions auto as a value.

bash
ARGOS_DEVICE_TYPE=cuda argos-translate --from-lang en --to-lang es "Hello World"

One inconsistency worth flagging: the GPU example uses --from-lang and --to-lang, while the earlier CLI example uses --from and --to. The README shows both spellings without explaining the difference, so check the CLI help on your installed version rather than assuming.

Where Argos Translate is the wrong tool

The honest limitation is quality, and the README states part of it plainly: pivoting costs translation quality. A pair routed through English is the composition of two models, and errors compound. For a language pair with no direct package, the library will still return something, which can be worse than refusing, because a silently degraded translation is easy to ship without noticing.

The second limitation is the model supply. The supported language list is long and includes Arabic, Chinese, Japanese, Korean, Hindi, Swahili and many European languages, but the README ends the list with "and more" rather than a guarantee, and the project has a discussion thread specifically for requesting a language. If your pair is not in the index, no amount of configuration will produce it. Training your own is possible, and the README points to argos-train, but that is a different project with its own data requirements, not a flag on this one.

Third, this is a CPU-first library. GPU support exists but requires the ARGOS_DEVICE_TYPE variable and a working CTranslate2 CUDA setup. On CPU, throughput is bounded by the models you installed, and installing many languages means keeping many model files on disk. The uninstall instructions hint at the footprint: the README tells you to remove ~/.local/cache/argos-translate and ~/.local/share/argos-translate, two separate directories of cached and installed data.

Finally, if your requirement is conversational quality on a major pair, a hosted engine will beat this on most inputs. Argos Translate is not competing on that axis and does not claim to.

Argos Translate versus LibreTranslate and hosted engines

The most direct comparison is with LibreTranslate, because LibreTranslate is not a rival implementation: it is an API and web app built on top of Argos Translate. The difference is packaging and interface, not the translation itself. If you want an HTTP endpoint you can point other services at, with request handling and a web UI, LibreTranslate gives you that and Argos Translate does not. If you want to call translation from inside a Python process, or from a shell script, with no server running, Argos Translate is the lower layer you would otherwise be installing anyway. Choosing between them is choosing between a service and a library, not between two model families.

Against hosted engines such as Google Translate or DeepL, the difference in approach is total. Those run large proprietary models on vendor hardware and charge per use; the quality is generally higher and the operational burden is zero. Argos Translate runs smaller OpenNMT models on your hardware, costs nothing per request, and requires you to manage model files, disk space and, if you want GPU, a CUDA environment. The right framing is not which is more accurate but which constraint binds you: if data cannot leave your infrastructure, the hosted option is not on the table regardless of quality, and this is one of the few Python libraries that solves that problem directly.

Licence, maintenance and what an upgrade costs

The project is MIT licensed, which is permissive and places few obligations on how you redistribute or embed it. That covers the library code. It does not automatically cover the model files, which are downloaded separately from the argospm-index; if you plan to redistribute models inside a product, check the terms attached to those packages rather than assuming the library's licence extends to them. This is a question for your own review, not something the README settles.

The repository is not archived, and the last push was on 2026-08-08. Note that the most recent release listed is v1.4.0 from 2021, while setup.py declares version 1.11.1, so the release feed and the package version have drifted apart; treat the PyPI version, not the GitHub release list, as the thing you are installing.

Upgrade cost is dominated by models, not code. The library depends on ctranslate2>=4.0,<5 and sentencepiece>=0.2.0,<0.3, both upper-bounded, so a major bump in either will require a deliberate move rather than arriving silently. Installed .argosmodel packages live outside the Python environment and survive a pip upgrade, which means an upgrade can leave you with models that a newer library version handles differently. The practical sequence is to pin the library version, keep a copy of the model files you depend on, and re-run a fixed sample of your own text after any upgrade rather than trusting the version number.

Editorial conclusion

Adopt Argos Translate if you need translation to run inside your own process, on your own machine, with no network call and no per-character billing; the pip install, the .argosmodel package format and the argospm CLI make that path short. Do not adopt it if your requirement is the translation quality of a large hosted service, or if the language pair you need has no package in the index and no usable pivot through English. Before committing, verify three things in this order: that a direct or pivotable package exists for your pair in the argospm-index, that a sample of your own text survives a round trip through that pivot acceptably, and that the disk and memory cost of the installed models is acceptable on the machine that will run them. The pivot behaviour is the part most likely to change your mind.

Frequently asked questions

How do I install Argos Translate?

Install it from PyPI with pip install argostranslate, or clone the repository and run pip install -e . inside a virtualenv. The separate GUI is installed with pip install argostranslategui.

How do I install the Argos Translate GUI?

The README gives pip install argostranslategui, and notes that the GUI code lives in a separate repository from the library itself.

What is Argos Translate?

It is an open-source offline translation library written in Python that uses OpenNMT and can be used as a Python library, a command-line tool, or a GUI application. LibreTranslate is an API and web app built on top of it.

Is Argos Translate free?

The repository is MIT licensed and the package is published on PyPI, so there is no per-request cost described anywhere in the documentation. The model packages are downloaded separately from the argospm-index.

Is Argos Translate the same as Google Translate?

No. Argos Translate runs OpenNMT models locally through CTranslate2 rather than calling a hosted service, which is why it works offline. That also means it does not use Google's models or infrastructure.

Official sources

  1. argosopentech/argos-translate on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Community notes

Community notes