Open Source · Self-Hosted · Private

Voice to Teksto,
Instantly with AI

An open-source WhatsApp bot that transcribes voice messages to text using local AI. Fully self-hosted, private, and blazing fast with GPU acceleration.

Everything You Need

TekstoBot brings powerful speech-to-text capabilities to WhatsApp, running entirely on your own infrastructure.

🎙️

Audio Transcription

Receive voice messages and instantly get accurate text transcriptions powered by Whisper AI — all processed locally.

📊

Admin Dashboard

Manage authorized numbers, view transcription history, and monitor connection status through an intuitive web interface.

🔒

Privacy First

All processing happens on your own server. No data leaves your infrastructure — your voice messages stay yours.

GPU Accelerated

Automatic NVIDIA GPU detection and acceleration through CDI mapping. Falls back gracefully to CPU when no GPU is available.

🛡️

Whitelist Access

Only pre-authorized phone numbers in your database can interact with the bot, giving you full control over access.

🚀

Async Processing

Built with Go's goroutines and worker pools, ensuring the bot stays responsive even under heavy load.

Simple Three-Step Flow

From voice message to readable text in seconds.

1

User Sends Voice

An authorized user sends a voice message via WhatsApp to the bot number.

2

AI Transcribes

Whisper AI processes the audio locally and converts speech to text with high accuracy.

3

Text Delivered

The transcribed text is sent back to the user as a WhatsApp message, instantly.

Built with Modern Tech

A carefully chosen stack for performance, reliability, and developer experience.

Installation

Choose the installation method that best fits your environment.

Step 1 — Add the Repository
# Install the TekstoBot RPM repository
sudo dnf localinstall -y https://rpm.rda.run/repo.rpm
Step 2 — Install TekstoBot
# Install TekstoBot from the repository
sudo dnf install -y tekstobot
Step 3 — Configure Environment
# Copy and edit the environment file
sudo cp /etc/tekstobot.env.example /etc/tekstobot.env
sudo vi /etc/tekstobot.env
Step 4 — Start Services
# Enable and start TekstoBot (Whisper starts automatically)
sudo systemctl enable --now tekstobot

# Follow the logs
sudo journalctl -u tekstobot -f
💡 The RPM post-install script automatically detects NVIDIA GPU support. With a GPU, Whisper uses CUDA acceleration; without one, it falls back to CPU mode seamlessly.
Step 1 — Clone & Configure
# Clone the repository
git clone https://github.com/rda-run/tekstobot.git
cd tekstobot

# Configure environment variables
cp .env.example .env
# Edit .env with your database credentials

# Install Go dependencies
go mod tidy
Step 2 — Database & Whisper
# Run database migrations
make migrate-up

# Start the Whisper AI container
make whisper
Step 3 — Run TekstoBot
# Start the bot
make run

# Access the dashboard at http://localhost:8080
📋 Prerequisites: Go 1.21+, PostgreSQL, and Podman (or Docker) must be installed on your system.
NVIDIA Container Toolkit (AlmaLinux / RHEL)
# Add the official NVIDIA repository
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
  sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo

# Install the toolkit
sudo dnf install -y nvidia-container-toolkit

# Generate CDI hardware descriptors
sudo mkdir -p /etc/cdi
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
🎮 GPU acceleration allows Whisper to transcribe voice messages significantly faster. CDI mapping enables Podman to natively access your GPU without privileged containers.

Automatic GPU Detection

TekstoBot's RPM package automatically detects whether your system has NVIDIA GPU support. When a GPU is present, Whisper leverages CUDA for blazing-fast transcriptions. Without a GPU, it seamlessly falls back to CPU mode — no manual configuration required.