documentation
What sixty measures, and how to install it
An agent in your application measures what every operation does — rows returned, queries issued, time spent, bytes sent, errors thrown — and ships summaries. The collector compares each release against the one before it and tells you which deploy changed what.
Two consequences worth knowing before anything else. There are no thresholds to configure, because the comparison is against your own previous release rather than against a number somebody guessed. And nothing can be compared until a second release has reported, so the first deploy after an install is quiet by design.
Pick your language
Every server agent measures the same core signals and writes the same wire format. What differs is what the runtime allows: only Python can separate computing from waiting, only Node instruments your functions without being asked, only PHP has to work without a background thread, and query plans need Postgres.
Node
The only agent that instruments your own functions without being asked: a build transform opens a span per exported async function, so a query has a caller to be credited to.
npm install @sixty-sh/nodePython
The only agent that can tell computing from waiting. Every other one reports that your code got slower and stops there — this one says which of the two happened, and they need opposite fixes.
pip install sixty-shGo
The install is explicit — a middleware, a driver wrap, and two lines at the top of the functions worth measuring — because Go has no build step to hook and no way to reach the caller's context without being handed it.
go get github.com/andana-to/drift/packages/goRuby & Rails
The only install with no step two. The railtie adds the middleware, subscribes to sql.active_record and wraps controller actions on boot — there is no initializer to write.
gem 'sixty'PHP
The only agent that has to work without a background thread. A PHP worker cannot run a timer and everything it learned dies with the request, so windows are pooled in shared memory and merged — losslessly, or the percentiles would be fiction.
composer require sixty-sh/sixtyIn front of the server
A server span ends when the response is written, which is well before anything is on screen. These measure the half that happens afterwards — and, on a phone or in a Supabase-only app, the half that has no server span at all.
Browser
What the server cannot see: how long the page actually took for a real person, which clicks did nothing, and which component re-rendered four hundred times.
npm install @sixty-sh/browserReact Native
An app has no server-side span to compare against, so a refused call or an empty response is only visible from the device. This is the agent that makes it visible.
npm install @sixty-sh/react-nativeSupabase
The only agent that knows what the endpoint *is* rather than what it cost — so it can tell a slow query from a policy that refused one.
npm install @sixty-sh/supabaseThe rest of it
- What each agent tracks — one table, 8 agents, every signal. The page to read if you are choosing between two of them or wondering why a finding never appears.
- Every signal — what each kind of finding means, in what unit, and what sort of code change causes it.
- How it works — deploy anchoring, quantile sketches, how a query gets attributed to the function that issued it, and what the agent costs the application.
- MCP server — how your editor reads findings, claims one, fixes it and records what it did.
Two rules every agent holds to
It cannot break your application. Every measurement path is wrapped so that a failure inside the agent cannot surface as an application error. When the collector is unreachable the agent keeps measuring into a bounded buffer and drops the oldest window rather than growing; nothing blocks, nothing retries forever, and the application does not find out.
It never learns anything about your users. No user id, no session id, no cookie, no IP address, and no value from any query — statements are normalized to their shape before anything leaves the process. That is a property of the code rather than a setting, which means it is also a question this product cannot answer for anybody, including us.