Privacy Policy
Effective October 18, 2026
BotLegger is provided by Wyvern Systems LLC ("we", "us", or "our"). For privacy questions or requests, contact support@botlegger.com.
This policy explains how the BotLegger application handles information on desktop and mobile devices and through its terminal and its Discord, Telegram, Slack, WhatsApp, and email interfaces (features differ by platform), and information you send us when requesting support. Third-party stores, AI providers, connected services, and websites have their own privacy policies.
How BotLegger works
BotLegger stores conversations, bot settings, memories, tasks, and workspace files on your device, and connects to the AI providers and services you choose. Local storage does not mean all processing stays on your device: when a bot uses a cloud AI provider, relevant conversation content and tool results are sent to that provider to respond or perform your task.
When a tool result is too long to show a model in full, the whole result is
saved on your device in the bot's workspace (the hidden .tool-output
folder) so the bot can read it in parts. These files are deleted after a day
and are not included in backups or transfers.
The first time it starts, the app offers to sign in to a free BotLegger account; you can skip that step on every platform. The account holds only your email address, whether you asked for release emails, and the devices you signed in on (see Your BotLegger account). Normal chat operation does not send your conversations to a server operated by us.
Information the app handles
- Conversations and bot context: messages, responses, names you enter, instructions, memories, task histories, and tool inputs and results.
- Files and images: files you attach or let tools access, photos you select or take, pasted content, and bot-generated files. Attachments may be copied into the bot's local workspace; removing an attachment from a draft may not remove that copy.
- Connected accounts: account identifiers, email addresses, granted permissions, and authentication tokens. Depending on what you enable, bots can access email, file content and metadata, calendars and calendar events, tasks, contacts, forms and their responses, photos and videos you upload or pick, GitHub repository, issue, and pull-request content, GitLab project, issue, merge-request, file, and pipeline content, bank account names, balances and transactions through Plaid, Discord, Telegram, and Slack messages, mail and calendar events on the IMAP and CalDAV servers you link, posts, replies, comments, direct messages, and videos on the social media platforms you link, text messages sent through your Twilio account, DNS records in your Cloudflare zones, your DigitalOcean droplets and billing balance, and whatever a connected MCP app exposes, which may contain other people's personal information. Notes in the Obsidian vaults and Logseq graphs you link, and your Apple Reminders, Calendar events, and Contacts on macOS and iOS, are read on your device only when a bot uses those tools; BotLegger keeps no copy, but anything a bot reads is sent to your AI provider like other tool results.
- Credentials: AI provider API keys and connected-service tokens.
- Location: coordinates you choose to attach to a message, and, while
the time zone is Auto, the device's approximate location: turned into
a time zone on the device, with the resulting zone and town name saved in
your library's settings (on a connected server, there). Separately,
the clock tool's location option asks
ipwho.isto estimate location from your public IP address, without GPS or necessarily a device-location permission prompt. - Operational information: local settings, model usage, errors, and audit records of certain tool actions (stored on this device in the local database with secrets masked, kept 90 days by default or as configured, and never included in transfers, backups, or sync); logs and tool output may contain paths, commands, or task content. The app also keeps a count of how many times each bot has used each tool, on your device only, to choose which tools to offer first. A local request log keeps the timings and token counts of the last 500 model requests, with no message content; deleting a bot removes its entries.
When you contact us, we receive your contact details, message, and any diagnostics or attachments you provide. Please remove credentials and unrelated personal information from support materials first.
Why information is used
The app uses this information to generate AI responses, keep conversation context, run enabled tools and tasks, connect accounts, save your work, and provide the features you select. We use support information to respond to requests, diagnose problems, and maintain the app.
BotLegger includes no advertising and no developer-operated behavioral analytics. It sends crash and error reports only if you turn on Send error reports (see Error reports). We do not sell personal information or use it for targeted advertising. Operating systems and app stores may separately process diagnostics and usage information under their own settings and policies.
AI providers, tools, and other recipients
Your selected AI provider receives what a model request includes: earlier messages, bot memories and instructions, images, file excerpts, and results retrieved from connected accounts. An enabled tool can retrieve information for later AI requests without confirming each one. Scheduled tasks can use enabled connections while the app is running.
Information may also be sent to:
- Your bot's AI provider again, when you have written action rules in Settings → Rules & skills: before a bot sends, changes, or deletes something, a small extra request carries your rules and the pending action's destination, summary, and content (truncated) so the model can check them. It counts toward that provider's daily token limit.
- Google, Microsoft, Discord, Telegram, GitHub, GitLab (GitLab.com or the GitLab server you enter), Plaid, or OpenRouter when you connect an account or use their features, and recipients of messages, invitations, or files you direct bots to send or share.
- GitHub, if you paste a personal access token: bots you enable call GitHub's API directly from your device with that token.
- JFrog Artifactory (and its Xray), if you link an instance: bots you enable read and change artifacts directly between your device and the address you entered, using the token you pasted; nothing goes through BotLegger.
- Slack, if you link a workspace: bots you enable read and post messages directly between your device and Slack, using the token you pasted (and, if you turn on Answer messages, an app-level token that opens a connection from your device to Slack to receive the messages you list).
- Bluesky, Mastodon, Threads, Instagram, Facebook, LinkedIn, X, Reddit,
TikTok, or WhatsApp, if you link an account: bots you enable read, post, and send
messages directly between your device and that platform (on Mastodon, your
own server), using the app password, token, or developer app credentials
you created, and what a bot posts is public or reaches the recipients on
that platform. Nothing passes through a BotLegger server, and X charges
each call to your own developer account. WhatsApp sends each
message from your business number to the recipient's phone number
through Meta's WhatsApp Cloud API, which may bill your Meta business
account for template messages; if you turn on Answer messages on a
bot servehost, Meta also delivers the messages people send to that number straight to your server (nothing passes through a BotLegger server), and the bot's reply goes back through the same API. YouTube works through your linked Google account (see Google user data). Each platform's own privacy policy applies. Videos a bot uploads to YouTube or TikTok are read from its workspace and sent to the platform. - Twilio, if you link an account: each text message a bot sends goes from your device to Twilio with the recipient's phone number, the message text, and your Account SID and Auth Token, and Twilio delivers it and bills your Twilio account. Twilio's own privacy policy applies.
- Cloudflare, if you link an API token for DNS: your token and the zone and record ids and record contents a bot reads or writes go directly between your device and Cloudflare's API, under Cloudflare's privacy policy.
- The mail (IMAP and SMTP) and calendar (CalDAV) servers you link under Email and calendar, such as iCloud, Fastmail, Yahoo, or Nextcloud: bots you enable read, send, move, and delete mail and manage events directly between your device and your server, using the app password you created. Nothing passes through a BotLegger server, and your provider's own privacy policy applies.
- The MCP server you connect (a catalog app such as Notion, Linear, Zapier, or Stripe, which reaches your own Stripe account, or a URL you enter) and its sign-in service: BotLegger registers with and signs in to them from your device, and what a bot sends or reads goes directly between your device and that server, under its own privacy policy.
- Composio, if you connect it for the Google plugins: it signs in to your Google account with its own app and holds that sign-in, and the Gmail, Google Drive, and other Google data a bot reads or sends through it passes through Composio's servers, under Composio's privacy policy.
- Your own servers, if you add them under SSH: commands you approve and their output go directly between your device and that server over SSH, signed in with a key kept in your device's credential store. Nothing passes through a BotLegger server; the output a bot reads goes to your AI provider like any tool result.
- Plaid, if you connect a bank: your own Plaid API keys authenticate each request and Plaid returns the account data the bank shared; Plaid's own privacy policy applies.
- DigitalOcean, if you create a cloud computer: your access token (from a
pasted API token or from signing in to DigitalOcean), the
chosen region and size, and a start-up script containing only
cryptographic hashes, never your token or any BotLegger data. We do not
operate that machine and receive nothing from it. The machine looks up
the names of the sites and services it contacts through Cloudflare's
family-safe DNS, under Cloudflare's privacy policy. If a bot uses the
digitaloceantool, the same token goes to DigitalOcean's API with the droplet ids and actions (reboot, power, resize) it asks for, and DigitalOcean returns your account's email, team, droplets, and month-to-date usage and balance, which reach your AI provider like other tool results. - Websites, search services, hosted tools, and MCP servers contacted by enabled tools; custom tools and shell commands can contact other services and access information within their permitted scope.
- The npm registry and the Python Package Index (PyPI), when a local program server (Playwright, MarkItDown, DuckDuckGo, or one you add) first starts on a computer: its package is downloaded to your computer, as with any install, so these registries see your IP address and the package name, but BotLegger sends no account, bot, or chat information with the request. Turn off Settings → General → Add-ons → Download and start at launch to download only when a bot needs a server or you press Install.
- OpenAI, Google (Gemini), or xAI, when a bot makes an image
(
generate_image), and OpenAI or Google (Gemini), when it reads text aloud (speak): the description or text, and any workspace images it edits, go from your device to that provider with your own API key for it, under its privacy policy. - OpenAI or Google (Gemini), when a bot reads the text in a picture with
scan_imageand its own model cannot see images (or it names a provider): the picture goes from your device to that provider with your own API key for it, under its privacy policy. QR codes and barcodes are read on your device and sent nowhere. - MET Norway and OpenStreetMap's Nominatim, when a bot looks up the
weather (
weather): the place name you asked about goes to Nominatim, and the place's coordinates (to four decimals) to MET Norway. - OpenStreetMap's Nominatim, while the time zone is Auto: the device's coordinates rounded to two decimals (about 1 km) and the app language, to name the town shown beside the zone, when the app opens, comes back into focus, and every 30 minutes while open.
- When a bot runs a network check (
network): the host, address, or URL it checks is contacted directly from your device; DNS questions go to your device's DNS server, the one the bot names, or Cloudflare (1.1.1.1) where the device's servers aren't readable;whoisasks IANA (data.iana.org) which registry holds the name or address, then that registry;my_ipasks Cloudflare (1.1.1.1/cdn-cgi/trace) for your public address. - OpenStreetMap services, when a bot uses
maps: place names go to Nominatim, route endpoints (coordinates) to FOSSGIS's routers atrouting.openstreetmap.de, and a nearby search's center, radius, and category to the Overpass API (overpass-api.de, or theoverpass.private.coffeemirror when it is busy). - The European Central Bank (
ecb.europa.eu), when a bot converts currencies (exchange_rates): only a request for its public daily rates file; amounts stay on your device. - OpenAI or Google (Gemini), when a bot transcribes a recording
(
transcribe): the audio file goes from your device to that provider with your own API key, under its privacy policy. - Websites a task watches (
websitetrigger): checked directly from the device running the task every three minutes. ipwho.isfor IP-based location.- Your chosen support channel when you contact us.
Network services receive connection information such as your IP address and request metadata; embedded websites and browsers may store cookies and session information. Third-party retention, processing locations, and AI training practices depend on the provider, service, and account settings, and may differ from ours; review those terms before sending sensitive information.
We do not use your conversations or connected-account content to train our own AI models. Google user data has the additional restrictions below.
Google user data
When you connect Google, BotLegger uses the permissions you grant to provide the Google features you enable, such as reading or sending Gmail, working with Drive files, managing calendars, their sharing, and events, managing your YouTube channel, videos, and comments, managing Google Tasks and Google Contacts, creating and editing Google Forms and reading their responses, and uploading to Google Photos or reading the photos you choose. Each Google plugin asks for its own permissions when you connect it, and Google Photos access is limited to media BotLegger uploaded and media you pick. Retrieved content can be included in AI requests to provide those features.
Our use and transfer of information received from Google APIs will comply with the Google API Services User Data Policy, including its Limited Use requirements, and the applicable Google Workspace API user data policy. Google user data is not used for advertising, sold, or used to develop, improve, or train generalized or non-personalized AI or machine-learning models. Transfers are limited to permitted purposes necessary to provide or improve the appropriate user-facing features, security purposes, legal obligations, or other transfers permitted by those policies.
We do not routinely review Google account content. Any human access must fall within the exceptions allowed by Google's Limited Use requirements, such as your affirmative agreement to examine specific content for support, security investigations, or legal obligations.
Device permissions and dictation
Permissions are used for their features: Reminders, Calendar, and Contacts access (macOS and iOS) for the Apple tools, microphone for dictation and live voice, camera for taking attachments and scanning a connection code (the image is not saved), location for attaching your coordinates and for the Auto time zone, and file or photo access for selected content. Desktop screen control may require screen-recording or accessibility permission; captured screen content may be sent to the selected AI provider in tool results. Notifications may display task information on your device. On Android, scanning a connection code runs on-device with Google ML Kit barcode scanning and no image leaves the phone.
The desktop app downloads its page-reading browser (Chromium, about 180 MB)
once, in the background, the first time you launch it, and again when an app
update needs a newer one. The download goes from Playwright's servers
(cdn.playwright.dev or its mirrors) to your computer; your IP address is
visible to them as in any download, and BotLegger sends no account,
bot, or chat information with it. Turn it off in Settings → General →
Add-ons (Download and start at launch); the browser is then
downloaded only if you press Download, and bots still read page text
without it.
Built-in dictation transcribes audio on-device with a bundled speech model and neither uploads nor saves the recording; the text reaches an AI provider when you send the message. This does not apply to audio files you share through other tools.
Talking live with a bot is different: while the conversation runs, your voice streams to the bot's model provider (OpenAI, Gemini, or xAI) under your API key and that provider's terms, and its spoken reply streams back. The provider transcribes both sides; the transcript is saved to the bot's chat like typed messages, and the audio is not saved by BotLegger. The conversation authenticates with a short-lived token minted for it; your API key stays where the bot runs.
Manage permissions in your device settings; denying one may make its feature unavailable. Optional app lock uses your operating system's authentication; BotLegger does not receive your biometric template or device passcode.
Storage and security
Credentials entered in app settings, including Slack tokens, GitHub
personal access tokens, Artifactory access tokens, social media
app passwords and tokens, Twilio and Cloudflare tokens, email and calendar app passwords, SSH private keys, and the sign-in tokens of connected MCP apps, use the platform credential store:
Apple Keychain, Windows Credential Manager, Linux Secret Service, or
Android Keystore-backed encryption. Environment files you configure
manually can also contain credentials; you must protect them. A headless
server run with bot --secrets-file <PATH> keeps credentials in that
plain-text file instead, guarded by its file permissions, on your own
machine.
If you run bot serve --listen, or connect the app to such a server,
paired devices connect straight to it over an encrypted link. Chats and
settings travel only between your devices and your server; no BotLegger
service is involved or sees the connection. A cloud computer
created from the desktop app works the same way: the app talks to
DigitalOcean to create the machine, then directly to the machine. It is
your machine, in your DigitalOcean account; website sessions a bot signs
in to there stay on that machine.
Copy local agents to the cloud computer sends this device's bots, their chats, memory, and workspaces to the server over that connection. Also copy API keys also sends your AI provider keys, which the server stores in plain text in its secrets file, readable by root there.
Conversation and workspace files are ordinary local app data that BotLegger does not encrypt; device encryption, operating-system access controls, and your backup configuration determine their protection. App lock protects access through the interface; it does not encrypt workspace files or stop running bots. Official cloud integrations use HTTPS; custom endpoints and tools depend on your configuration.
Unsent drafts are kept per chat in on-device preferences, unencrypted,
until you delete that chat's bot or
reset the app. The data folder's tui_history.txt holds lines you type in
the terminal, including chat messages, but never credential settings.
A paired server's device secret is kept in the OS credential store. On the
server, link-devices.json holds only hashes of paired devices' tokens and
secrets, and cloud.json (a device's record of a cloud computer it
created) holds no secrets.
Backup or folder-sync services may copy local app data; Android app credentials are excluded from Android backup and device transfer. We cannot guarantee the security of every device, third-party service, or custom tool.
Retention and deletion
Local conversations, files, memories, and task records generally remain until you delete them; not all app data expires automatically.
- Delete a bot to remove its local data, including its workspace and task history; shared files and copies outside that bot may remain.
- Settings → General → Reset and data → Reset entire app resets settings and removes bots, their memories, tasks, and workspaces. Check the data directory for remaining shared files, exports, or custom files.
- Remove a linked account in Settings to remove its local connection and stored token. For Google, tick Remove account on all devices in the same dialog to also have Google revoke BotLegger's access on every device and for Gemini sign-in; for other providers, revoke access in the provider's account settings. Disconnecting does not erase content already in conversations or files.
- Remove unwanted backups, synced copies, exports, and externally created
files separately; uninstalling alone may leave desktop data or credentials.
The Windows uninstaller asks whether to delete your data directory, the
app's folders under AppData, and its Credential Manager entries; on macOS
and Linux, delete the data directory and the app's application-data
folder yourself (on macOS
~/Library/Application Support/BotLegger, plus thecom.botlegger.applink beside it that earlier versions' folder became). - Delete your BotLegger account in Settings → Account to remove what the account service holds; see Your BotLegger account.
Deleting local data does not delete messages or files held by a connected service or information already processed by an AI provider; use that provider's controls or contact it to request deletion. We cannot remotely erase data stored only on your device.
We retain support information only as long as needed to resolve requests, maintain relevant support history, and meet legal obligations. You can request deletion using the contact above; information retained for legal reasons is restricted to that purpose.
Your BotLegger account
You sign in with an email and password, or with Apple, Google, or Microsoft, which give the service your email address and a signed identity token, and Google and Microsoft also your name and, for Google, a link to your profile photo, which the service's sign-in system keeps with your account. The app downloads your Google or Microsoft profile photo when you sign in (for Microsoft, using the sign-in's permission to read your basic profile) to show it in the sidebar; the photo is kept only on your device and deleted when you sign out. When you sign in to a BotLegger account, our account service (hosted on Supabase) stores:
- your email address, whether you confirmed it, and your sign-in sessions;
- whether you asked to be emailed about new releases and products, and when you last changed that choice. It is off unless you tick the box, and Settings → Account turns it off again at any time;
- the app's display language (for example
de), so the account's emails are written in it; the app sends it with sign-up and each check-in; - the devices signed in to the account: the name shown in Settings → Account (on a computer, the computer's host name as the operating system reports it, for example "Ron's MacBook Pro"; on a phone, a platform name such as "iOS device"; it is shown only in the account's own device list, and you can sign a device out from Settings → Account), the platform, the app version, when each device first and last checked in, and the sign-in session it uses;
- if you buy Pro: its status, your Paddle customer and subscription identifiers, and the OpenRouter key issued for your subscription, kept encrypted, with its identifier.
Account emails (the sign-up code, password reset codes, and the deletion notice) are delivered by Resend, which handles your email address and the message to send it. They are written in the app's language.
Each time the app starts it checks in with the account service, which updates the device's name, platform, app version, and last-seen time, and the account's language. We count active installs from these check-ins in aggregate; we do not learn what you do in the app.
While you are signed in, the app also asks the account service for its
client configuration (client-config) at sign-in, at each check-in, and
about once a week. The request carries only your session token and an empty
body. The answer holds only the identifiers of the sign-in applications
(Google, Microsoft, GitHub, DigitalOcean) the app should use, none of which
is confidential, and the app keeps it on your device.
On a computer, the app also fetches https://botlegger.com/latest.json
about once a day to learn whether a newer version exists. That request
carries no account information; like any web request, the site's host
sees your IP address.
It never stores your bots, conversations, files, memories, or your own provider keys, except a bot you choose to share (below).
Error reports
Settings → Account → Send error reports is off unless you turn it on, and while it is off the app records and sends nothing about errors. When it is on and you are signed in, the app sends the account service a report each time it crashes or hits an unexpected error: the error message, where in the app it happened and the stack trace, when it happened, the app version, the platform, and the operating system's version. Before a report leaves your device, the app removes the paths of its own and your home folders, other user names in folder paths, email addresses, web address queries, and anything that looks like a key or token; a message can still name a file or a bot. Reports never include your conversations or files.
The service keeps each report with the account that sent it, keeps at most 20 reports of the same error, and takes at most 50 a day from one account, 200 from one internet address, and 5,000 from everyone together; past a limit it drops the rest and the app waits before sending more. To count reports by address it keeps a salted one-way hash of the address, never the address itself and not linked to your account, and deletes it once it is two days old (when the next report arrives). It deletes reports 90 days after an error was last seen. Only BotLegger's reviewers (the account service's admins) can read them, without your email address or which account sent them, to find and fix bugs. Turning the switch off deletes the reports still waiting on your device; deleting your account deletes the reports it sent.
When you publish a bot to the gallery, the
account service stores a copy of what the share screen shows: the bot's
name, description, look, instructions, the skills and scheduled tasks you
picked, the names of the plugins it works with, and the author name you
type. It also stores which account published it, when, that you agreed to share
it under the MIT License and when, how many accounts
added it, and any reports, with their reason, from people who flagged it.
Before anyone else can open it, the bot's text (not your email) is
checked automatically: simple rules, then an AI model from Anthropic or,
if we switch, a model reached through OpenRouter, which reads it to spot
attempts to steal data or trick people. The result is stored with the
bot, and a BotLegger reviewer may read the bot, the check's result, and
any reports, then approve or remove it; each decision is
recorded with the reviewer and the reason. Nobody but you can see or open the bot until a reviewer approves it;
then everyone signed in to BotLegger can see and copy it. Under the MIT
License anyone may use, copy, change, and share it, and that cannot be
taken back.
To confirm a publish, the account service emails a six-digit code to your
account's address. It keeps only a hash of the code, with when it expires
and how many wrong tries it has had, and clears the hash once the code is
used, runs out, or is guessed wrong too often.
The author name is shown with it; your email address never is. The copy
does not change when you edit your bot later. Settings → Browse Bots →
Shared by you → Unpublish clears its contents at once and keeps only that a bot
with that name was shared (and any review record of it) until you delete
your account, which deletes all of them; people who already added the bot
keep their copies. Opening a
shared bot or the gallery sends your request to the account service, and
adding one records that your account added it, so it is counted once. Paddle is the merchant of record for Pro and keeps
customer, payment, and tax records under its own privacy policy and
retention. Records of the Paddle notifications we processed (an event
identifier, type, and time) are kept for 90 days. If a purchase is
refunded or charged back, or a reviewer blocks you from sharing bots, we
keep a salted hash of your email address (capitals, a +tag, and for
Gmail the dots are ignored first, so one mailbox hashes the same under
every spelling) and, for a refund, the Paddle customer identifier after
you delete your account, so the same person
cannot buy Pro again after a refund or share bots again after a block; the
hash cannot be turned back into your address, and a reviewer can remove a
block.
Signing a device out from Settings → Account ends its sign-in and, on a Pro account, replaces the Pro key so a copy left on that device stops working. Deleting the account (you sign in again, then enter a code we email to the account) cancels a live Pro subscription, revokes the Pro key, and removes the account, its device list, its sign-in sessions, and the bots it shared, then emails the account's address to confirm the deletion. Records Paddle must keep for tax and accounting are not deleted by it. The account service's own authentication audit log keeps the email address for a limited time after deletion, and Paddle keeps its customer record for anyone who bought Pro, as its terms require.
Purchases
If you buy BotLegger through an app store, the store processes payment and purchase information under its own privacy policy; we do not receive your full payment-card details. The store may provide us sales, refund, transaction, or diagnostic information through its developer services, which we use to administer distribution, handle purchase support, and meet accounting obligations.
Your privacy rights
Depending on where you live, you may have rights to access, correct, delete, or copy personal information, restrict or object to processing, and withdraw consent. Contact us to exercise rights over information we hold; we may need proportionate information to verify your request. You may also complain to your local data-protection authority.
Where applicable, we process support information to provide requested services, pursue legitimate interests in maintaining and securing the app, or meet legal obligations. Where processing depends on consent, you can withdraw it without affecting prior lawful processing. Manage device-only data through the app and your filesystem, and third-party account data through the relevant provider.
AI providers, connected services, app stores, and support services may process information in other countries; their terms describe processing locations and transfer safeguards.
Children
BotLegger is not directed to children under 13. We do not knowingly collect personal information from children under 13, whether through account sign-ups (which collect an email address) or through support. If you believe a child has given us personal information, contact us so we can address it and delete it where appropriate.
Changes and contact
We will update this policy and its effective date when relevant practices change. Where required, we will communicate material changes in the app or through another appropriate notice and obtain consent before processing that requires it.
Privacy contact: support@botlegger.com
Publisher: Wyvern Systems LLC