Skip to main content

Minimalist AI translation CLI powered by LLMs

Project description

🌐 Other languages

🌿 Mint

Minimalist AI Translation CLI — Simple. Fast. Intuitive.

GitHub Release PyPI npm codecov

Mint is a single-binary, LLM-powered translation CLI. Set two environment variables and translate anything from the command line — files, piped output, or inline text. Built-in language detection, grammar correction, streaming output, and multi-language rotation.

export MINT_PROVIDER=google-genai
export MINT_API_KEY=your_key

mint -t ja "Good morning"         # おはようございます
echo "早安" | mint -t en          # Good morning
cat document.txt | mint -t fr     # translate a whole file

✨ Why Mint?

  • Zero-config — Single binary; API keys via env vars, no config file pollution
  • Multi-provider — Google Gemini, OpenAI, Anthropic, or local Ollama / LM Studio
  • Smart detection — Auto-detects language on every call; language-neutral content (numbers, symbols) passes through unchanged
  • Smart correction — Same-language input? Auto-corrects grammar & spelling instead of translating
  • Streaming — Output streams in real-time, no waiting for long translations
  • Composable — Pipe-friendly stdin/stdout; pairs seamlessly with grep, sed, xargs, and friends

📋 Installation

Automated install (recommended)

macOS / Linux

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/min0625/mint/main/script/install.sh)"

Auto-detects OS and architecture (Linux/macOS, x86_64/arm64), installs to ~/.local/bin. Override with MINT_INSTALL_DIR or pin a version with MINT_VERSION=v1.0.0.

Windows (PowerShell)

irm https://raw.githubusercontent.com/min0625/mint/main/script/install.ps1 | iex

Auto-detects architecture (x86_64/arm64) and installs to $HOME\.local\bin. Override with $env:MINT_INSTALL_DIR or pin a version with $env:MINT_VERSION = 'v1.0.0'.

Homebrew (macOS / Linux)

brew install min0625/tap/mint-ai

pipx

pipx install mint-ai

npm

npm install -g mint-ai

Manual download

Download the pre-built binary for your platform from GitHub Releases, move it into a directory on your PATH, then verify:

mint --version

🚀 Quick Start

1. Set your provider

# Google Gemini (free tier available — https://aistudio.google.com/apikey)
export MINT_PROVIDER=google-genai
export MINT_API_KEY=your_gemini_api_key

# OpenAI
export MINT_PROVIDER=openai
export MINT_API_KEY=sk-...

# Anthropic
export MINT_PROVIDER=anthropic
export MINT_API_KEY=sk-ant-...

# Ollama (no API key needed)
export MINT_PROVIDER=openai
export MINT_BASE_URL=http://localhost:11434
export MINT_MODEL_NAME=qwen2.5:7b  # use any model loaded in Ollama

# LM Studio (no API key needed)
export MINT_PROVIDER=openai
export MINT_BASE_URL=http://localhost:1234
export MINT_MODEL_NAME=lmstudio-community/Qwen2.5-7B-Instruct-GGUF  # use any model loaded in LM Studio

2. Translate

mint --target ja "Good morning"
mint -t zh-TW "Good morning"

echo "The quick brown fox" | mint -t fr
cat document.txt | mint -t zh-TW

Use --verbose / -v (or MINT_VERBOSE=true) to print diagnostic info and token usage to stderr:

mint -t ja -v "Good morning"
# [mint] provider: google-genai
# [mint] model: gemini-3.1-flash-lite
# [mint] single target — skipping language detection
# [mint] target language: ja
# おはようございます
# [mint] tokens: 113 in / 2 out

Typical token usage (measured on gemini-3.1-flash-lite):

Mode Input Calls Input tokens Output tokens
Single-target (-t or single MINT_TARGET_LANG) short word/sentence 1 ~110–130 ~1–15
Single-target long article (testdata/sample.txt) 1 ~465–470 ~450–560
Multi-target rotation (comma-separated MINT_TARGET_LANG) short sentence 2 ~250–260 ~2–8
Explicit source -s + rotation short sentence 1 ~105–120 ~1–2

Token counts scale with input length. Output tokens vary by target language — Japanese and Chinese tend to produce more tokens than English for equivalent content.

How far does 1M tokens go? (input + output combined, derived from the measured usage above):

Input ~Tokens per translation Translations per 1M tokens
Short word or phrase ~120 ~8,000
300-word article ~1,000 ~1,000

Counts combine input and output tokens. Providers price input and output separately and many offer free tiers — check your provider's pricing page for current rates. Google Gemini's free tier at Google AI Studio needs no credit card.

Force the source language with --source / -s to translate input that is also valid in the target language (cross-language homographs, romanized text):

mint -s fr -t en "pain"          # French → bread (without -s, treated as English "pain")
mint -s ja -t en "konnichiwa"    # romaji Japanese → hello

3. Smart language detection

Translation with auto-detection:

export MINT_TARGET_LANG=en

mint "早安"   # Detects Chinese → Good morning

Grammar & spelling correction — when input language matches the target, Mint corrects instead of translates:

export MINT_TARGET_LANG=en

mint "Good mooorning"          # Detects English → Good morning
mint "She don't know nothing"  # Detects English → She doesn't know anything
mint "i luv coding"            # Detects English → I love coding

Language rotation — translates to the next language in the list, wrapping around:

# Two languages
export MINT_TARGET_LANG=en,zh-TW
mint "Hello"   # en → zh-TW: 你好
mint "你好"    # zh-TW → en: Hello

# Three languages
export MINT_TARGET_LANG=en,zh-TW,ja
mint "Hello"       # en → zh-TW: 你好
mint "你好"        # zh-TW → ja: こんにちは
mint "こんにちは"   # ja → en: Hello

🔑 Environment Variables

Variable Description Default
MINT_PROVIDER google-genai | openai | anthropic — (required)
MINT_API_KEY API key; required when using the default endpoint; optional when MINT_BASE_URL is set (proxy handles auth)
MINT_BASE_URL Custom API base URL (domain only; each provider appends its own path); use with openai to target Ollama (http://localhost:11434), LM Studio (http://localhost:1234), or any other OpenAI-compatible endpoint Provider default
MINT_MODEL_NAME Model to use gemini-3.1-flash-lite / gpt-4o-mini / claude-haiku-4-5
MINT_TARGET_LANG Target language(s), e.g. en or en,zh-TW,ja System locale
MINT_VERBOSE Set to true to enable verbose diagnostic output (equivalent to --verbose) false

🚩 CLI Flags

Flag Short Description
--target <lang> -t Target language (BCP-47 tag, e.g. ja, zh-TW, fr). Overrides MINT_TARGET_LANG.
--source <lang> -s Source language (BCP-47 tag); skips auto-detection and forces translation from this language.
--verbose -v Print diagnostic info and token usage to stderr. Also enabled by MINT_VERBOSE=true.
--version Print version and exit.

📅 Roadmap

  • Multi-LLM provider support (Google Gemini, OpenAI, Anthropic, local via Ollama / LM Studio)
  • Smart language detection and multi-language rotation via MINT_TARGET_LANG
  • Explicit target language via --target / -t flag
  • Explicit source language via --source / -s flag
  • Streaming output
  • GoReleaser multi-platform binary release (Linux / macOS / Windows)
  • Batch translation mode
  • Glossary / custom dictionary support
  • Output format options (plain text, JSON, Markdown)
  • Caching for repeated translations

📄 License

Apache License 2.0 — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

mint_ai-0.0.7-py3-none-win_arm64.whl (2.7 MB view details)

Uploaded Python 3Windows ARM64

mint_ai-0.0.7-py3-none-win_amd64.whl (3.1 MB view details)

Uploaded Python 3Windows x86-64

mint_ai-0.0.7-py3-none-musllinux_1_2_x86_64.whl (3.0 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

mint_ai-0.0.7-py3-none-musllinux_1_2_aarch64.whl (2.7 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

mint_ai-0.0.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

mint_ai-0.0.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

mint_ai-0.0.7-py3-none-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

mint_ai-0.0.7-py3-none-macosx_10_9_x86_64.whl (3.0 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file mint_ai-0.0.7-py3-none-win_arm64.whl.

File metadata

  • Download URL: mint_ai-0.0.7-py3-none-win_arm64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mint_ai-0.0.7-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 48397a0137051697d4180a806ef72a80eb367bc2da295b7409cc594d95992970
MD5 e5201ba38bf72c85084c3463a70cc218
BLAKE2b-256 137016b3af56be6e45104c8b7c15bd610073ffdf4ce4f657bb3857ae73e6cc87

See more details on using hashes here.

Provenance

The following attestation bundles were made for mint_ai-0.0.7-py3-none-win_arm64.whl:

Publisher: publish-pypi.yml on min0625/mint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mint_ai-0.0.7-py3-none-win_amd64.whl.

File metadata

  • Download URL: mint_ai-0.0.7-py3-none-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mint_ai-0.0.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 733f56b59d8e13f94f18b9a8f9da3a448315644cb1ee913ce039ca2ed4c07922
MD5 64b09ea1965d1b5353f4ba69c758f52b
BLAKE2b-256 6b2d7bb8f2bca7b8f57fdd615294f3ae6d4ce8b8ada41a7c2aefc2cb0883a6f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for mint_ai-0.0.7-py3-none-win_amd64.whl:

Publisher: publish-pypi.yml on min0625/mint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mint_ai-0.0.7-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for mint_ai-0.0.7-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0151e4f71a53b6abca807a28a16cf7d4591f7a5a1d04afdce193afa8d05b1918
MD5 13f656d57387e00fe2dd8d6d18046a8b
BLAKE2b-256 b6687ec5b04238e61cd962ffb43bde14c23e3bf6656cc875a2c905284fef5342

See more details on using hashes here.

Provenance

The following attestation bundles were made for mint_ai-0.0.7-py3-none-musllinux_1_2_x86_64.whl:

Publisher: publish-pypi.yml on min0625/mint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mint_ai-0.0.7-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for mint_ai-0.0.7-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6e90f9160c07d6c0554736be138dc10a8da18a29b5ba49b9fc5ede0a4cef8247
MD5 6e8601363f8856b203c324894fbc6277
BLAKE2b-256 1efa9535712344d92d029a6b38d850d2d9c70b9aecf368538d00172bf997022a

See more details on using hashes here.

Provenance

The following attestation bundles were made for mint_ai-0.0.7-py3-none-musllinux_1_2_aarch64.whl:

Publisher: publish-pypi.yml on min0625/mint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mint_ai-0.0.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mint_ai-0.0.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1f36cb4092a185cc34db09088ba1f7413dc66878bf0e0484cdd2751f1309760c
MD5 ae3e6121a26c5aebed850255dc22eee0
BLAKE2b-256 4d52a2767772a7c12c8fbc773679ae4651ad9ec06e50a55b1ca8646be8f56972

See more details on using hashes here.

Provenance

The following attestation bundles were made for mint_ai-0.0.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-pypi.yml on min0625/mint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mint_ai-0.0.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mint_ai-0.0.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fe79d5b6dce5f626af9f53c3a0197f6f047127ba51c4b561e2d8ca7c72446107
MD5 fdabe2423e9446d18df63d45531f02e9
BLAKE2b-256 a80b36dca641c5349256175a4517ce2a8a924c71bf092e941e7eec7a61246772

See more details on using hashes here.

Provenance

The following attestation bundles were made for mint_ai-0.0.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish-pypi.yml on min0625/mint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mint_ai-0.0.7-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mint_ai-0.0.7-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5b01154bec318086af15b4d72826d1e11cade8c4d885e8faf58179530b988112
MD5 5d6933c869b400b68f0de747c05d493f
BLAKE2b-256 013b4266cc4860f24bb7a26f3a47548484627dca260c3c8ee30c44a3c5ea991c

See more details on using hashes here.

Provenance

The following attestation bundles were made for mint_ai-0.0.7-py3-none-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on min0625/mint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mint_ai-0.0.7-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for mint_ai-0.0.7-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cb6da5403aea7e379ba55ec7101c11843b0213de093f69f4c2bcea026e53ad4b
MD5 bbf4e456ddf9d353a5b93b345b9811bd
BLAKE2b-256 52c5665581cb338408253538dac3536f6c092aa63e0ac4441f7b926ba948b41b

See more details on using hashes here.

Provenance

The following attestation bundles were made for mint_ai-0.0.7-py3-none-macosx_10_9_x86_64.whl:

Publisher: publish-pypi.yml on min0625/mint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page