Skip to main content

WhatsApp-first LLM bot

Project description

faltoobot

tests coverage

faltoobot is a personal assistant that lives on its own WhatsApp account.

How it works

  • Get a separate SIM / WhatsApp account for Faltoobot.
  • Sign in to that account on a spare phone.
  • Install faltoobot on a computer that will stay online.
  • Run faltoobot configure to set up OpenAI and WhatsApp.
  • Run faltoobot whatsapp to keep the bot running.
  • Message that WhatsApp number from your own number.

Install

uv tool install faltoobot

Then you can run faltoobot and faltoochat from any folder.

If uv asks you to add its tool bin directory to your PATH, run:

uv tool update-shell

For faster project and code search inside faltoochat, install ripgrep (rg) too:

# macOS
brew install ripgrep

# Ubuntu / Debian
sudo apt-get update && sudo apt-get install -y ripgrep

# Fedora
sudo dnf install ripgrep

# Arch Linux
sudo pacman -S ripgrep

faltoochat falls back without rg, but search is faster and more reliable when it is installed.

Quick start

1. Configure

faltoobot configure

The configure flow shows a simple menu:

  • Wizard
  • WhatsApp
  • Codex / OpenAI

The wizard is the default. It helps you:

  • sign in with Codex / ChatGPT OAuth, or set an OpenAI API key
  • choose model / thinking / transcription settings
  • pair the WhatsApp account

Example ~/.faltoobot/config.toml:

[openai]
api_key = "your_key_here"
oauth = ""
model = "gpt-5.5"
thinking = "high"
fast = false

[bot]
allow_group_chats = ["120363000000000000@g.us"]
allowed_chats = ["15551234567"]
system_prompt = "You are Faltoobot, a concise and helpful AI assistant replying inside WhatsApp. Keep replies practical and readable on mobile."

If oauth is set, Faltoobot prefers that OAuth auth file over api_key. If oauth is blank, Faltoobot falls back to OPENAI_API_KEY from the environment.

Set allowed_chats to the WhatsApp phone numbers or JIDs that should be allowed to talk to the bot in direct chats. Faltoobot normalizes phone numbers into WhatsApp JIDs when saving the config. If you enable groups, set allow_group_chats to the group JIDs that the bot should keep history for and reply in. If it is empty, the bot will ignore groups. In groups with more than two people, the bot replies only when mentioned or when someone replies to the bot.

2. Start WhatsApp service

faltoobot whatsapp

This is the main command for running Faltoobot. It:

  • upgrades the installed tool with uv
  • ensures config exists
  • runs migrations
  • stops any old Faltoobot service
  • installs the service
  • starts the service
  • follows logs in the current terminal

Press Ctrl+C any time. The service keeps running in the background.

3. Watch logs later

faltoobot logs

Commands

faltoobot update

faltoobot update

Upgrades the installed tool with uv, ensures config exists, and runs migrations.

If uv installs a newer version, Faltoobot asks you to rerun the command so the rest of the flow continues with the newer installed version.

faltoobot whatsapp

faltoobot whatsapp

Best command for normal use. It runs update, refreshes the background service, and follows logs.

faltoobot logs

faltoobot logs

Shows log output in follow mode.

faltoobot configure

faltoobot configure

Opens the setup menu and restarts the service if it is already installed.

Terminal chat

You can also use Faltoobot locally in the terminal.

Interactive mode

Run faltoochat with no prompt to open the terminal UI:

faltoochat
faltoochat --workspace=./repo
faltoochat --new-session

One-shot mode

Run faltoochat with a prompt to execute a headless one-shot task in that workspace and print the final output to stdout:

faltoochat "draft a release note"
faltoochat "review unstaged files" --workspace=./repo --new-session

Notify another chat

A one-shot faltoochat run can send its final output back to another chat key. This is useful for sub-agents, cron jobs, and detached background tasks:

faltoochat "List new emails for the user" --workspace=./emails --notify-chat-key=code@main

Commands inside chat

On WhatsApp:

/help
/reset
/status

In terminal chat:

/reset
/status
/tree

faltoochat supports image input, queued prompts while answering, and Shift+Enter for multiline input. Paste an image file path or use Ctrl+V to attach the current macOS clipboard image. WhatsApp chats now also support incoming image messages, including captioned images, image-only prompts, and multi-image albums.

Development

Run the Astro docs site locally:

cd website
npm install
npm run dev

Build the static site locally:

cd website
npm run build

Tests

Run the full test suite with coverage:

uv run pytest -n auto --cov=faltoobot --cov-report=term-missing:skip-covered

Coverage is published in the badge above, and pre-commit enforces a minimum of 78% line coverage.

Need more details? See docs/cli.md and the Astro docs site in website/.

Project details


Download files

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

Source Distribution

faltoobot-5.2.0.tar.gz (171.2 kB view details)

Uploaded Source

Built Distribution

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

faltoobot-5.2.0-py3-none-any.whl (131.4 kB view details)

Uploaded Python 3

File details

Details for the file faltoobot-5.2.0.tar.gz.

File metadata

  • Download URL: faltoobot-5.2.0.tar.gz
  • Upload date:
  • Size: 171.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for faltoobot-5.2.0.tar.gz
Algorithm Hash digest
SHA256 959c0f4caaa3338927c2bfb2fd5ee3bd3b62c6d3cce1b97a43f88e5601d3e2e4
MD5 7964567038f87eb1b588214bb05cd044
BLAKE2b-256 01eb312047d0b1c499e6fd8ce3e9d9b6d74dcfb1adce7f007ede72c9b68cd871

See more details on using hashes here.

File details

Details for the file faltoobot-5.2.0-py3-none-any.whl.

File metadata

  • Download URL: faltoobot-5.2.0-py3-none-any.whl
  • Upload date:
  • Size: 131.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for faltoobot-5.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bc5b0e4bac4845c73db74178c71abd98a7ddacce5add136067efc0602616ceeb
MD5 3d42c2ddd60c46e32f841a742032e0fc
BLAKE2b-256 30ce7545f8f4b38e8886c5f17fa72dd15eaf46c676c13c96fb34e1a688507fa8

See more details on using hashes here.

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