# BugsRadar > BugsRadar sends the errors of an application to Telegram, Discord or Pushover: the first occurrence of an error arrives at once, with where it happened and its stack trace; repeats are counted in that message (in Pushover they arrive as summaries). There are packages for .NET (NuGet), Node.js (npm) and Python (PyPI), and any script can send an alert with one HTTP request. Before any code: the developer creates a project and a channel at https://app.bugsradar.com/ and gets the project's API key. An AI assistant can't do this step. Rules for the API key: - It is secret. Use it only in code that runs on servers: back ends, workers, scheduled jobs, CI/CD pipelines, scripts. - Read it from configuration or an environment variable, for example BUGSRADAR_KEY. Never write it into code or into files that get committed. - Never put it into browser apps (React, Angular, Vue), mobile apps, or desktop apps shipped to others: anyone can take it out of them. Adding BugsRadar to a project: 1. Pick the guide for the project's platform below and install the package. 2. Connect it to the logging the project already uses (ILogger, Serilog, NLog or log4net; winston or pino; the logging module or loguru) and to uncaught errors. 3. Send one test error: it arrives in the project's channel within seconds. ## Docs - [Get started](https://bugsradar.com/docs/): a project and a channel in the web app, the API key, the package for your platform, a test error - [API key](https://bugsradar.com/docs/api-key/): two keys per project, where a key may go, what to do if it leaks - [Rules](https://bugsradar.com/docs/rules/): filters on a channel of a project by level, modules and environments (Pro plan) - [What you receive](https://bugsradar.com/docs/messages/): the first occurrence in full, repeats counted in the same message, bundles when a channel can't keep up - [Channels](https://bugsradar.com/docs/channels/): your own credentials, checked and stored encrypted; one channel for several projects; what happens when a channel fails - setup: [Telegram](https://bugsradar.com/docs/channels/telegram/) (bot token and chat ID), [Discord](https://bugsradar.com/docs/channels/discord/) (webhook URL), [Pushover](https://bugsradar.com/docs/channels/pushover/) (application token and user or group key) - [.NET](https://bugsradar.com/docs/dotnet/): NuGet package BugsRadar: an ILogger provider and direct calls; BugsRadar.Serilog, BugsRadar.NLog and BugsRadar.Log4Net for those loggers, each bringing BugsRadar with it; .NET Standard 2.0, so modern .NET and .NET Framework - loggers: [ILogger](https://bugsradar.com/docs/dotnet/ilogger/), [Serilog](https://bugsradar.com/docs/dotnet/serilog/), [NLog](https://bugsradar.com/docs/dotnet/nlog/), [log4net](https://bugsradar.com/docs/dotnet/log4net/) - [Node.js](https://bugsradar.com/docs/nodejs/): npm package bugsradar: uncaught errors, Express, winston and pino; Node.js 18 and later, ESM and CommonJS, TypeScript types - integrations: [Express](https://bugsradar.com/docs/nodejs/express/), [winston](https://bugsradar.com/docs/nodejs/winston/), [pino](https://bugsradar.com/docs/nodejs/pino/) - [Python](https://bugsradar.com/docs/python/): PyPI package bugsradar: the logging module, loguru (logger.add(bugsradar.LoguruSink())), uncaught exceptions, Django, Flask and FastAPI; Python 3.9 and later, no dependencies - integrations: [logging](https://bugsradar.com/docs/python/logging/), [loguru](https://bugsradar.com/docs/python/loguru/), [Django](https://bugsradar.com/docs/python/django/), [Flask](https://bugsradar.com/docs/python/flask/), [FastAPI](https://bugsradar.com/docs/python/fastapi/) - [Scripts over HTTP](https://bugsradar.com/docs/http/): POST https://api.bugsradar.com/api/v3/notify with the key in the X-Api-Key header and the message text as the body - [CLEF and Seq clients](https://bugsradar.com/docs/clef/): a Seq client such as Serilog.Sinks.Seq with the server address https://api.bugsradar.com/api/v3/clef and the project key as its API key (X-Seq-ApiKey); only Error and Fatal events go to channels, so restrict the sink to Error ## Guides - [Guides](https://bugsradar.com/guides/): an alert when a job, a backup, a pipeline or a service fails, one guide per case - [SQL Server Agent](https://bugsradar.com/guides/sql-server-agent/): an alert when a job fails, with the failed step and its error - [Backups](https://bugsradar.com/guides/backups/): pg_dump, mysqldump, rsync or robocopy scripts that report their own failure - [CI/CD](https://bugsradar.com/guides/ci-cd/): a failed build or deploy in GitHub Actions, GitLab CI/CD, Azure Pipelines or Jenkins - [cron](https://bugsradar.com/guides/cron/): a cron job that exits with an error - [Task Scheduler](https://bugsradar.com/guides/task-scheduler/): a failed Windows scheduled task - [systemd](https://bugsradar.com/guides/systemd/): OnFailure= for services and timer jobs ## Platforms - [Platforms](https://bugsradar.com/platforms/): what reports errors and what each platform supports - [.NET](https://bugsradar.com/platforms/dotnet/), [Node.js](https://bugsradar.com/platforms/nodejs/), [Python](https://bugsradar.com/platforms/python/), [scripts, cron jobs and pipelines](https://bugsradar.com/platforms/scripts/), [Seq clients and CLEF](https://bugsradar.com/platforms/clef/): an overview per platform; the setup itself is in Docs ## Use cases - [Use cases](https://bugsradar.com/use-cases/): why alerts in a chat, who they are for, what they are not - [Silent failures: the errors nobody reads in the logs](https://bugsradar.com/use-cases/silent-failures/): An error is logged, nobody reads the log, and the first signal comes from a user. What changes when the first occurrence lands in your chat. - [Alerts in chat instead of a dashboard](https://bugsradar.com/use-cases/alerts-not-dashboard/): Two jobs that look like one: the moment something new breaks, and what happened last month. Why BugsRadar does only the first. - [Why BugsRadar stores nothing](https://bugsradar.com/use-cases/nothing-stored/): An event stays in memory only until it is delivered. What that gives you - privacy, simpler compliance, no quotas - and what you give up. - [Keeping the chat quiet: rules, bundles, live count](https://bugsradar.com/use-cases/quiet-chat/): A crash loop at 3 a.m. should be one message with a count. The five layers that keep the chat readable. - [Why Telegram and Discord, not email](https://bugsradar.com/use-cases/why-chat-not-email/): Email alerts get filtered, batched and ignored. Why BugsRadar delivers to the chat you already read and has no email channel. - [Logs, monitoring, alerts: what you actually need](https://bugsradar.com/use-cases/logs-monitoring-alerts/): Logs, uptime checks, error trackers and alerts answer different questions. Which ones a small team needs, and where BugsRadar fits. - [One developer, several projects, one chat](https://bugsradar.com/use-cases/solo-developer/): Every project reports into one chat, with the project name on each message. What Free covers and when Pro makes sense. - [A side project that runs while you sleep](https://bugsradar.com/use-cases/side-project/): Ten minutes to a Telegram message with the stack trace, free, with nothing to pay and nothing to babysit. - [Agency: a channel per client](https://bugsradar.com/use-cases/agency/): A project per client, a chat per client or per team, rules to route by module and environment, a key you can revoke when a contract ends. - [Maintenance after handover: know before the client does](https://bugsradar.com/use-cases/maintenance-contracts/): The errors of the project you delivered reach you before the client calls; deploys as messages; the key when the contract ends. - [On-call in a group chat instead of a pager](https://bugsradar.com/use-cases/small-team-on-call/): The errors land in the team chat, someone replies "on it", and only Critical reaches the phone of the person on call. - [MVP before you have an ops team](https://bugsradar.com/use-cases/startup-mvp/): Ten minutes for error alerts in the founders' chat, free, with no quotas to blow through on launch day. - [Internal tools nobody monitors](https://bugsradar.com/use-cases/internal-tools/): The admin panel, the nightly import, the report generator: one project, one chat, the first failure as a message instead of a surprise. - [Background jobs and queues that fail quietly](https://bugsradar.com/use-cases/background-jobs/): How workers, consumers and job runners report the first failure and count the retries. - [When their outage becomes your bug](https://bugsradar.com/use-cases/third-party-apis/): The payment provider times out and your users see your error page. The first failure with the service, the endpoint and the count. - [Checkout errors you never hear about](https://bugsradar.com/use-cases/checkout-errors/): The payment webhook fails, the order is never confirmed, the customer does not write. Where to report and what to put in the message. - [The first hour after a deploy](https://bugsradar.com/use-cases/first-hour-after-deploy/): A message when the deploy finishes, the version in every error, and a regression that arrives as a new message. - [Cron, backups and services on one VPS](https://bugsradar.com/use-cases/scheduled-jobs-on-a-vps/): Every failure reported by the job itself with one HTTP request, into one chat. - [Production, staging, dev: one chat or several](https://bugsradar.com/use-cases/environments/): Tell the environments apart, keep staging from waking anyone, and never let a staging error read like a production one. - [.NET Framework apps still in production](https://bugsradar.com/use-cases/legacy-dotnet-framework/): The packages target .NET Standard 2.0, need no dependency injection, and plug into the log4net or NLog you already have. - [Already on Seq: errors in Telegram without a new SDK](https://bugsradar.com/use-cases/already-on-seq/): A second address in the Serilog.Sinks.Seq you already have. No package, Seq untouched. - [Go, PHP, Ruby, Java: alerts without a package](https://bugsradar.com/use-cases/any-language/): One HTTP request sends the alert: the key in a header, the text in the body. Examples in Go and PHP. - [Set it up with Claude Code or Copilot in one prompt](https://bugsradar.com/use-cases/ai-assistant-setup/): A coding assistant installs the package, connects it to your logging and sends a test error. What you do first and what to check. ## Optional - [How it works](https://bugsradar.com/how-it-works/): what happens to an error on its way to the chat - [Channels](https://bugsradar.com/channels/): what Telegram, Discord and Pushover need, on every plan; Slack, Microsoft Teams, Google Chat and PagerDuty are coming with Business - per channel: [Telegram](https://bugsradar.com/channels/telegram/), [Discord](https://bugsradar.com/channels/discord/), [Pushover](https://bugsradar.com/channels/pushover/) - [Pricing](https://bugsradar.com/pricing/): plans differ by features, not by volume - [About](https://bugsradar.com/about/): made by Bistriy Sp. z o.o., Kraków, building software since 2014 - [Security and data](https://bugsradar.com/security/): events stay in memory until delivered, credentials encrypted, API keys only send, payments through Stripe, servers in the EU - [Changelog](https://bugsradar.com/changelog/): what changed, newest first