Skip to main content

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)

Source distribution for llm-conductor 1.1.1
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)

Table of built distributions (wheels) for llm-conductor 1.1.1
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page