If Bemby saves you time, please consider giving it a star on GitHub. It helps others find the project and keeps development going.
A self-hosted automation tool for managing daily Telegram bot check-ins (签到) and Emby video-watch sessions. Includes a web admin portal for managing multiple accounts and jobs.
Bemby's main features are below; the Features section further down covers each in detail, and the changelog has what changed in each version.
Four job types
Check-in -- send a command to a bot at a random time each day and click a button; pick the button by text, several keywords, the pinned message or its odds, or write {aiBtn} to let the AI choose (picture captchas included)
Emby Watch -- simulate a playback session and report progress; real streaming, sequential play from where you left off, library limits, client UA presets, play-session gateways and invalid SSL certificates
Custom -- multi-step flows against any bot, group, web page or Mini App: send commands, wait for replies, click buttons, join and leave groups, enter captchas, if / else branches, loops, end early, hand the job over to another template
Auto registration -- watch a group for posted registration codes (prefix, wildcard or regex, optionally cleaned up by the AI) and claim them first
Web and Mini App automation
A built-in fingerprint-patched browser (CloakBrowser) that passes Cloudflare and Turnstile; page steps to click, fill, type, press keys, press and hold, drag a slider or puzzle piece, pick a dropdown option, go to a URL and back, scroll, read text, collect elements and run a script, pages inside iframes included
Email verification codes and links, mailbox pools, msOauth2api mailbox sign-in, two-factor secrets and their codes (TOTP), and passkeys on a virtual security key with no hardware
The AI solves hCaptcha-style picture grids and can click several positions at once; Mini App buttons on the reply keyboard open too
Watch or drive the browser live over VNC and manage its profiles; score it on BrowserScan, CreepJS, FingerprintJS and real Cloudflare pages, give it another OS, your own fonts, and the exit IP's timezone
Variables and data
Random placeholders, variables, AI-written input, and notifications sent mid-run
Data store -- records that outlive a run (accounts a signup made, invite codes), read in any field as {data.folder.key}, written or deleted from a job, imported and exported, and looped over one record at a time
Telegram accounts
Many accounts, each signed in over MTProto; manage the 2FA password, active sessions, recovery email, passkeys, profile and notes
Import session (card) accounts, check they are alive first, then take ownership of them in bulk
Bulk rename, profile, random avatars (from an avatar pool), usernames, privacy, login email, credentials and message extraction
Session backup export and import (password-protected if you like)
Messenger
A built-in Telegram client: private chats, groups, channels and comments, channel DMs, polls and quizzes, reactions, files, stickers and Mini Apps; Telegram layer 229, so a bot's rich page messages render
Templates and jobs
Templates and the template store: install, update, auto-update or roll back in a click; templates can offer options to their jobs
Create jobs from templates for many accounts at once; copy, archive, run in bulk, and override the proxy per job
One-time jobs, run every X days, job icons and filters, and marking a run successful or failed by hand
Scheduling and logs
Random times inside each job's window, automatic spacing, an adjustable simultaneous-run cap and retries; planned times survive an upgrade and runs missed today are caught up today
Live logs, Telegram-style chat bubbles, watch summaries, an AI debugging console, and log sizes with compaction
Proxies
HTTP / SOCKS proxies, random proxy pools, health checks and testing; node subscriptions (VLESS / VMess / Trojan / Shadowsocks, with the Xray core); a global proxy for censored networks such as mainland China
System
A notification bot (group topics included), cloud backup to Cloudflare R2, update check, light / dark theme, mobile layout, system log and reboot, and a way back in from a forgotten password
Activation codes in two editions: Basic (check-in and Emby Watch) and Pro (everything)
Image tags: :latest (the same as :pro) is the stable Pro build (recommended); :beta is the beta; :dev is the development build. The old liveinaus/bemby image no longer gets updates: to move from liveinaus/bemby:pro or liveinaus/bemby:latest, change the image to liveinaus/bemby-pro:latest; the data directory carries over as it is.
JWT_SECRET is required and must not be a publicly known placeholder (e.g. change-me-in-production), or the app refuses to start. Generate one with openssl rand -hex 32.
Defaults: port 3000, database at /app/data/bemby.db, timezone UTC. To set a timezone add -e TZ=Australia/Sydney.
With Docker Compose (one-click upgrade from Settings): take the repository's docker-compose.yml and env.example (saved as .env), fill in JWT_SECRET and WATCHTOWER_TOKEN in .env (both from openssl rand -hex 32), then run docker compose up -d. See One-click upgrade.