Application monitoring

See what your code is doing, free.

Errors with their stack traces, response times, CPU and memory, and your own metrics and events, in one dashboard. Two lines of code in Python or JavaScript, for an app hosted here or anywhere else.

Application monitoring

What every account gets

Projects

2

Per account, each with up to 5 keys. Projects belong to your account, not to a server. Accounts with a paid server get 3.

Error reports a day

5,000

Stored in full, with the stack trace, tags and context. Past that, every error is still counted on its issue.

Metric series

40

Counters, gauges and timings of your own, on top of the runtime metrics the SDK records for you.

Events a day

10,000

Deploys, signups, commands run: anything worth seeing on a timeline next to your charts.

Of hourly history

90 days

Minute detail for the last 2 days, hourly for 90 days and daily for 400 days.

To get started

£0

No card and no trial. The same free account you would use for hosting.

Included

What comes with it

Error tracking

Every uncaught exception, grouped into issues by where it was raised, with the stack trace, your code highlighted, and a count by the hour. Resolve an issue and you hear about it if it comes back.

Performance

Request and command times for each route or command, at the median, 95th and 99th percentile, with the error rate and the slowest calls of the day.

Resource use

CPU, memory, event loop lag and garbage collection from the SDK, and for a server hosted here, its container CPU, memory and network with crashes marked on the chart.

Custom metrics and events

Count what matters to your project, time any block of code, and record events that show up on the timeline and as markers on your charts.

Hosted anywhere

The SDKs send over HTTPS, so your app can run here, on your own machine or on any other host. OpenTelemetry exporters work too.

Seamless here

Link a server you host with us to a project and its key is put in the environment for you. Call init() with no arguments and it is set up.

How it works

From signup to your first error in three steps.

  1. 1

    Create a project

    Open Monitoring in your panel and name a project. You do not need a server with us to have one.

  2. 2

    Make a key

    A server key for your backend, or a browser key for a website. It is shown once, with the code to paste.

  3. 3

    Call init()

    Install the SDK, call init() once when your app starts, and data shows in the dashboard within a minute.

pip install sillydev

from sillydev import monitoring

monitoring.init()  # reads SILLYDEV_MONITORING_KEY
monitoring.increment("orders.created", tags={"plan": "free"})

Nothing is collected until you ask

Monitoring is opt-in, in every sense. Installing the SDK does nothing: no thread starts, no hook is installed and nothing is sent until your code calls init() with a key. Without a key, init() quietly does nothing, so the same code runs fine on a machine that has none.

What is sent is what your code produces: metric values, error reports, events you record and timings. The SDKs never send request bodies, and they blank out any tag or context value whose name looks like a password, token or cookie. Keys can only send data, never read it, so a key that leaks cannot be used to see your dashboard.

How long it is kept

Charts keep minute-by-minute detail for 2 days, hourly points for 90 days and daily points for 400 days. Full error reports are kept for 30 days and events for 14 days. An issue's hourly counts outlive its reports, so you can still see when a problem started.

Deleting a project deletes everything it collected.

Fair use

Each project can have 40 metric series and store 5,000 full error reports and 10,000 events a day. Data past a limit is dropped and counted, and the project's settings show what was dropped and why, so nothing goes missing silently.

Accounts that own a paid server get higher limits on every project, and 3 projects instead of 2. That switches on and off by itself with the subscription.

Need somewhere to run it, or a database for it? Both come with the same account.

FAQ

Questions

Do I need a server here to use monitoring?

No. Projects belong to your account and the SDKs send over HTTPS from anywhere. A server hosted here can be linked to a project so you do not have to handle the key, and its CPU, memory and crashes show in the project too.

Is it actually free?

Yes. Every account gets 2 projects, with no card, no trial and no expiry. A paid server raises the limits, but there is no paid monitoring plan.

Which languages are supported?

Python and JavaScript (Node.js and Bun) on the server, with ready-made integrations for FastAPI, Starlette, Flask, Django, aiohttp, discord.py, Express, Fastify, Hono and discord.js, and a small script for websites. Anything that speaks OpenTelemetry, or can send JSON over HTTP, works too.

Will it slow my app down?

Barely. The SDKs add numbers up in memory and send them every ten seconds from the background, in one compressed request. If our side cannot be reached, they keep a small buffer and drop the oldest data first rather than growing.

Can I get alerts?

Yes, by email: for a new issue, an issue that comes back after being resolved, a spike in errors, and an app that stops sending. Discord alerts are coming.

How do I stop it?

Remove the init() call, set SILLYDEV_MONITORING_DISABLED=1, revoke the key or delete the project. Deleting the project deletes its data.