LLM-Conductor
CLI pipeline for localizing nested JSON string resources with language models (Ollama or any OpenAI-compatible API). Optional second stage proofreads with a separate endpoint.
This is not a local machine-translation product, offline dictionary, or GUI translator. There is no built-in MT engine — you supply the model and the prompts; quality follows them. Think “batch orchestration for LLM localization,” not “install and translate offline.”
Language pair = prompt only. The engine does not hard-code source or
target languages. Name them in llm.toml. The default init profile is one
working example (often English→another language), not a product limit.
Features
- Recursive JSON of any depth; non-strings left untouched
- Per-string isolation (no batching unrelated keys into one prompt)
- Key-name linguistic hints (
_male/_female/_plural/ …) - Glossary injection, formatting-tag masking, disk cache + in-run dedup
- Reply validation, consecutive-failure breaker, OS locks, progress heartbeat
- Independent transports for translation vs verification
Quick start
1. Install or grab a binary
From PyPI:
pip install llm-conductor
From a clone (editable install + dev tools):
git clone https://github.com/Necrofox/llm-conductor.git
cd llm-conductor
pip install -e ".[dev]"
Or download llm-conductor.exe from
GitHub Releases.
2. Configs next to the program
llm-conductor init # conductor.toml + llm.toml
# portable checkout:
python llm-conductor.py init
Configs resolve beside the entry point (exe / wrapper / installed shim),
not cwd. Edit llm.toml for your endpoint and prompts; set
[validation].allowed_scripts for the target writing system (e.g.
["cyrillic"], ["latin"], ["cjk"]). Prefer key_env over literal keys.
3. Run
llm-conductor run --target path/to/strings.json
llm-conductor run --target path/to/strings.json --stage translate --strict
llm-conductor run --target project/ui.toml
llm-conductor run --target project/ui.toml --dry-run # same resolver; no API
Batch runs use a .toml run manifest ([[targets]]); .list is removed.
Results land under result/<target-name>/ (translated/, redacted/,
final/) unless result2target (CLI for a lone JSON, or a field in the
manifest). See
doc/cli.md.
Ollama vs OpenAI-compatible
| Ollama | OpenAI-compatible | |
|---|---|---|
type |
ollama |
openai |
| URL | …/api/chat |
…/v1/chat/completions |
| Key | ignored | key_env / key required |
Point translation and verification at different hosts if you want.
Example
Input (see examples/sample.json):
{
"npc": {
"greeting_male": "Welcome, traveler.",
"greeting_female": "Welcome, traveler."
}
}
Same English text, different key suffixes → separate requests and (usually) different grammatical forms in the target language. Full prompt rules: doc/prompts.md.
Key-name conventions
| Pattern | Hint |
|---|---|
*_male, *_female, *_neutral |
gender |
*_plural, *_singular, *_few, *_zero, count_* |
number |
*_formal, *_informal |
formality |
Documentation
| Doc | Topic |
|---|---|
| doc/concepts.md | What it is / is not; isolation; language=prompt |
| doc/configuration.md | TOML split, paths, secrets |
| doc/cli.md | Commands, results, exit codes |
| doc/prompts.md | Authoring prompts |
| doc/pipeline.md | Cache, validation, resilience |
| CONTRIBUTING.md | Dev setup and conventions |
| AGENTS.md | Notes for AI coding agents |
Cache note
Rejected model replies are not cached. A warm-cache rerun that only hits
residual misses can exit with code 5 even if an earlier full run was 0.
Fix prompts/model or remeasure with --no-cache
(doc/cli.md).
Roadmap (high level)
- Richer input formats (e.g. subtitle adapters)
- Optional in-stage parallelism with single-flight on the full cache key
- Stage-local resume orthogonal to the LLM cache (concept)
License
MIT — see LICENSE.
Кратко (RU)
LLM-Conductor — CLI-конвейер: гоняет строковые листья JSON через LLM
(Ollama / OpenAI-совместимые API), опционально второй моделью вычитывает
перевод. Это не локальный переводчик и не движок MT — модель и промпты
ваши. Пара языков задаётся только текстом промпта в llm.toml, не схемой
движка. Быстрый старт: init → правки профиля → run --target …. Документация
на английском в doc/.
Metadata
Release files for llm-conductor 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| llm_conductor-1.1.1.tar.gz | 133.3 kB | With provenance | Details for llm_conductor-1.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| llm_conductor-1.1.1-py3-none-any.whl | Python 3 | none | any | Details for llm_conductor-1.1.1-py3-none-any.whl |
Total release size: 281.9 kB
Release files / llm_conductor-1.1.1.tar.gz
| Download URL | llm_conductor-1.1.1.tar.gz |
|---|---|
| Size | 133.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5de8c570927e3d16a59cacd709569ed25e7d8b1b699991c4c3a282f42ca77e0a
|
|
BLAKE2b-256 checksum How to use checksums |
6dcf1ae6a28aae2eb5cd9d9cd23af1b04893580876e9aa7b615dbee1beccbc50
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 10, 2026.
Transparency logRelease files / llm_conductor-1.1.1-py3-none-any.whl
| Download URL | llm_conductor-1.1.1-py3-none-any.whl |
|---|---|
| Size | 148.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b93cb7fcc9976bbe5d1870755686bdca1e6f74667e3b61f669ffd9cdd5a6bd5b
|
|
BLAKE2b-256 checksum How to use checksums |
66bb75a64893fa49b3b7b9acde6269c36fa1a976b1feba2740664595bf4291d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 10, 2026.
Transparency logSecurity for llm-conductor 1.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for llm_conductor-1.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 10, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.