Skip to content

wsj-br/transrewrt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

155 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Transrewrt Banner

Version License: Apache 2.0 Platform React 19 Electron 41

AI-powered text tool: translate between languages, rewrite in different styles, and transform with custom prompts - using multiple AI providers (OpenRouter, OpenAI, Anthropic, Google Gemini, DeepSeek, Groq, Mistral, xAI, and local Ollama). Runs as a desktop app (Electron) or a self-hosted web app (Docker).

  • Translate - between dozens of languages, with automatic source detection
  • Rewrite - fix grammar, improve clarity, formal/informal, shorten, expand, technical
  • Transform - custom AI prompts; create and manage prompts, optional target language per prompt
  • History - full execution history with input/output text, filtering, and export
  • Models & cost - choose models from any configured provider; cost and usage dashboards with log, summaries by model/operation/day
  • UI - multilingual interface (30+ languages, RTL support), fonts, ...
  • Web mode - multi-user support with admin roles
  • Desktop - Electron app for Windows and Linux
  • Self-hosted - Docker image for amd64 & arm64 (Raspberry Pi-ready)

Once installed, see the User Guide for a full walkthrough of all features.

Read in other languages: English · Português (BR) · العربية · বাংলা · Català · 中文 (中国大陆) · 中文 (台灣) · Hrvatski · Čeština · Nederlands · English · Tagalog · Français · Deutsch · Ελληνικά · हिन्दी · Magyar · Italiano · 日本語 · jv · 한국어 · Bahasa Melayu · فارسی · Polski · Português · ਪੰਜਾਬੀ · Română · Русский · Slovenčina · Español · Kiswahili · Svenska · తెలుగు · ไทย · Türkçe · Українська · Tiếng Việt

Note on UI and documentation translations: All interface languages except the original English (UK) were translated using AI models; the wording may be imprecise or contain errors.


Table of Contents



Screenshots

Language selector

Language selector

Translate

Translate

Transform - prompt editor

Transform - prompt editor

Dashboard

Dashboard summary - usage

History

History

Settings - model selection

Settings - model selection



Quick start

Docker (recommended for self-hosting)


docker pull ghcr.io/wsj-br/transrewrt:latest

OPENROUTER_API_KEY=sk-or-your-key docker run -d \
  -p 5000:5000 \
  -v transrewrt-data:/app/data \
  -e OPENROUTER_API_KEY \
  --name transrewrt-web \
  ghcr.io/wsj-br/transrewrt:latest

Replace sk-or-your-key with your OpenRouter API key (or set other provider keys; see Configuration). Open http://localhost:5000 and change the default admin password before exposing the service.

Set at least one provider key via environment (for example OPENROUTER_API_KEY for OpenRouter). Pass variables with -e or docker compose / .env so secrets are not baked into the image. Provider keys are not entered in the web UI; the server reads them from the environment.


ℹ️ NOTE
In Docker, LLM credentials are set with environment variables such as OPENROUTER_API_KEY, OPENAI_API_KEY, CEREBRAS_API_KEY, … (not in the web UI). On desktop (Electron) you configure keys in Settings → API.


Or use Docker Compose:

# download the compose file
wget https://github.com/wsj-br/transrewrt/raw/refs/heads/master/production.yml -O transrewrt.yml
# Edit the file to add your API keys (API_KEYs), or uncomment and adjust the `.env` file. Set the timezone (TZ) if necessary.
vi transrewrt.yml
# start the container
docker compose -f transrewrt.yml up -d

See Configuration for all environment variables, such as PORT, CONFIG_PATH, TZ, and LLM keys (OPENROUTER_API_KEY, OPENAI_API_KEY, …).


Server timezone (Docker)


The application user interface date and time follow the browser’s locale and timezone. For server-side behaviour (logging and similar), the container uses the TZ environment variable. The default is TZ=Europe/London.

To use another timezone, set TZ in your Compose file, for example:

environment:
  - TZ=America/Sao_Paulo

Or pass it when running the container (Docker):

--env TZ=America/Sao_Paulo

On many Linux hosts you can copy the system timezone name with:

echo TZ=\"$(</etc/timezone)\"

A list of valid timezone names is maintained in the tz database (Wikipedia).


Windows


  • Download the latest Transrewrt Setup x.y.z.exe from Releases.
  • Run the .exe and follow the installer.
  • First run: start the app from the Start menu or desktop shortcut.
  • Enter your API keys in Settings → API. You need to configure at least one provider; OpenRouter is common for free models.

ℹ️ NOTE
Windows may show one of these security warnings (normal for unsigned/indie apps):

  • User Account Control (UAC): "Do you want to allow this app from an unknown publisher to make changes to your device?" → Click Yes.
  • Microsoft Defender SmartScreen: "Windows protected your PC" → Click More infoRun anyway.

This happens because the app isn't signed by Microsoft or a major publisher-it's safe if downloaded from our official GitHub releases (verify checksums on the Releases page alongside each asset).



Linux


Download the .AppImage for your CPU from Releases (x64 for typical PCs, arm64 for many ARM devices, including Raspberry Pi 4+), then:

chmod +x Transrewrt-x.y.z-x64.AppImage && ./Transrewrt-x.y.z-x64.AppImage

On x86_64/amd64 use the x64 filename; on ARM64 use the ...-arm64.AppImage name.

Enter your API keys in Settings → API. You need to configure at least one provider; OpenRouter is common for free models.

Console messages: Packaged Linux builds (x64 and arm64 AppImages) suppress Node deprecation warnings in the terminal (for example the built-in punycode module). If Chromium prints GPU / EGL errors such as “GLES3 is unsupported” but the app works, you can silence them by disabling hardware acceleration:

TRANSREWRT_DISABLE_GPU=1 ./Transrewrt-x.y.z-arm64.AppImage

That applies on amd64 as well; change the filename to match your download.

On Debian/Ubuntu, you may need additional runtime libraries required by Chromium (these are often already present on full desktop installations). Run the commands below if needed:

sudo apt update
sudo apt install -y libfuse2 libgtk-3-0 libnotify4 libnss3 libnspr4 libxss1 libxtst6 xdg-utils \
     xauth libatspi2.0-0 libdrm2 libgbm1 libxcb-dri3-0 libcups2 libasound2t64

replace libasound2t64 with libasound2 for arm64. Minimal or custom installs may still fail with a missing .so file. Install the package named in the error message (common extras: libatk1.0-0, libatk-bridge2.0-0, libgbm1, libdrm2). In some environments, you may need to run the app using APPIMAGE_EXTRACT_AND_RUN=1 ./Transrewrt-….AppImage.


ℹ️ NOTE
macOS is not currently supported. Transrewrt is available for Windows, Linux, and Docker.


Once the app is running, see the User Guide to learn how to translate, rewrite, and transform text, manage prompts, and configure models.



Getting an OpenRouter API key

Transrewrt supports multiple AI providers. OpenRouter is a popular choice because it aggregates many models under one key and offers free models.

  1. Sign up or log in at openrouter.ai.
  2. Open the Keys page and create a new key (name it, and optionally set a credit limit). You can use free models without adding credit.
  3. Desktop (Electron): paste keys in Settings → API. Docker: set env vars such as OPENROUTER_API_KEY (see Quick start).

Do not use OpenRouter’s Body Builder model (openrouter/bodybuilder) for translate, rewrite, or transform: it returns JSON request payloads, not the completed text for those tasks. See Settings → Models in the User Guide.

You can also use other providers (OpenAI, Anthropic, Google Gemini, DeepSeek, Groq, Mistral, xAI, Cerebras) or run models locally with Ollama. See Configuration for the full list of supported providers and environment variables.


⚠️ WARNING
If you are using Ollama from another device, container, or service, remember to configure Ollama to allow external connections (not localhost-only).



Configuration and environment


Config file locations

Deployment Config location
Electron (Windows) %APPDATA%\transrewrt\
Electron (Linux) ~/.config/transrewrt/
Web / Docker /app/data/config.json (use a volume to persist)

Environment variables (web/Docker only; Electron uses the local config file)

Variable Description
PORT Server listening port (defaults to 5000)
CONFIG_PATH Path to the config file (defaults to `/app/data/config.json)
TZ timezone for server-side time (logging, etc.) (defaults to Europe/London)
OPENROUTER_API_KEY OpenRouter API key
OPENAI_API_KEY OpenAI API key
CEREBRAS_API_KEY Cerebras API key
ANTHROPIC_API_KEY Anthropic API key
GOOGLE_API_KEY Google Gemini API key
DEEPSEEK_API_KEY DeepSeek API key
GROQ_API_KEY Groq API key
MISTRAL_API_KEY Mistral API key
OLLAMA_URL Ollama base URL (e.g. http://host.docker.internal:11434)
XAI_API_KEY xAI API key

Configure only the providers you use. Model IDs are namespaced (openrouter/…, openai/…, cerebras/…, ollama/…, etc.).

Cost display: OpenRouter returns exact billed cost when applicable. Other providers use estimated cost from OpenRouter’s public model pricing when an OpenRouter key is available; without it, non-OpenRouter cost may show as 0. Estimates are not invoices.


Data and persistence: For Docker, mount a volume at /app/data so config.json and the SQLite database persist across container restarts. Without a volume, all data is lost when the container stops.


Web authentication:

  • Default admin: admin / transrewrt26.
  • Manage users in Settings → Users.
  • Reset a password: docker exec <container> reset-web-password '<username>' '<new-password>'

⚠️ WARNING
Change the default admin password immediately on any network-accessible host.


Key settings (font, models, languages, etc.) are available in the application Settings.



Development and architecture

  • Development: Setup, build, test, and deploy (Electron, Web, Docker) - see dev/DEVELOPMENT.md.
  • Architecture and system overview: Folder structure, tech stack, design decisions - see dev/SYSTEM-OVERVIEW.md.



Reporting issues

Open an issue on GitHub. Include your platform (Windows / Linux / Docker) and app version (shown in the About dialog or on the Releases page).



Disclaimer

Product names and icons belong to their respective owners and are used for identification purposes only. This software is not affiliated with or endorsed by any of the mentioned brands.



License

Copyright © 2026 Waldemar Scudeller Jr.

Apache License 2.0

About

AI-powered text tool: translate between languages, rewrite in different styles, and transform with custom prompts. Supports OpenRouter, OpenAI, Anthropic, Gemini, DeepSeek, Groq, Mistral, xAI, Ollama, and more. Runs as an Electron app (Windows/Linux) or a self-hosted Docker web app (amd64/arm64).

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors