blob: f247fe5dc9b44c4f27b24f98d2a2cb71a2363a58 [file] [log] [blame] [view]
# Cobalt: Telemetry with built-in privacy
[TOC]
## Overview
Cobalt is a pipeline for collecting metrics data from user-owned devices in the
field and producing aggregated reports.
Cobalt includes a suite of features for preserving user privacy and anonymity
while giving product owners the data they need to improve their products.
- **Local Differential Privacy.** If you enable it, Cobalt can add random
noise on the client during metrics collection.
- **Shuffling.** Our pipeline shuffles the collected records to break
linkability. This also amplifies the level of differential privacy.
- **No IDs.** Cobalt does not use device IDs or user IDs; not even pseudonymous
IDs.
- **No exact timestamps.** Cobalt uses day indices only.
- **Only standard metric types.** Not arbitrary protocol buffers.
- **No ad-hoc, post-facto querying.** Whereas on other telemetry systems
standard practice is to *"collect now; ask questions later"*, with Cobalt the
analyst must think in advance about what aggregations they wish to report and
predeclare reports.
- **Only aggregated data is released.** It is not possible to query the raw
collected data.
## Cobalt Core
The code in the Git repo at
[https://fuchsia.googlesource.com/cobalt](https://fuchsia.googlesource.com/cobalt)
is known as **Cobalt Core**. Cobalt Core contains the main client-side
logic for Cobalt. Cobalt Core gets pulled into a Fuchsia checkout
at `//third_party/cobalt`.
## Cobalt on Fuchsia
This directory contains an embedding of Cobalt into the Fuchsia OS. The
primary components are:
- A Cobalt FIDL service in [bin/app](/src/cobalt/bin/app)
- A test application at [bin/testapp](/src/cobalt/bin/testapp)
- The System Metrics Daemon at [bin/system-metrics](/src/cobalt/bin/system-metrics)