Skip to content

Security & architecture

Your archive stays in your account. We hold no key to it.

The archive is written by your own agent, into your own bucket, with credentials you issue. Our control plane has no path to that storage — not a restricted one, not an audited one. None. What we do receive is masked templates and counts, plus the triggering line of an anomalous pattern; the exact boundary is below, and we would rather you read it now than discover it in a security review.

Never leaves your account

  • The full raw stream, in your bucket, as Parquet
  • Your object storage credentials
  • Every line of every pattern that was summarised
  • Everything forwarded to your SIEM — it goes there directly, not via us

Sent to the control plane

  • Log templates — the shape of a line, with values masked
  • Counts, rates and timing per pattern
  • Node, namespace and workload names
  • For an anomalous pattern only: a sample of the triggering line and some of its extracted values

Templates are the shape of a line with the values masked out — enough to count and compare patterns, not enough to reconstruct the line. Forwarded events go to your SIEM, not to us. The last item is the exception, and it is what makes an alert say which request broke rather than only that something did. It applies to anomalous patterns alone, never to the steady state, and it is a licensed capability: if you would rather nothing but templates left your cluster, we issue a licence without it and it is not active in your deployment at all.

One way out

Nodes do not talk to the internet. They talk to a single in-cluster service, and that service is the only component with an outbound route. When the control plane needs archived data — because you asked for a backfill — it asks that service, which reads from your bucket inside your account and returns only the rows matching your request. One component to allow-list, one place to audit, and no credential ever handed across the boundary.

Privileges

It is a privileged DaemonSet. Here is the full list of why.

Reading other containers' log files requires host access. Rather than describe that vaguely, here is each permission and the specific thing it is for.

Read and write the node's pod log directory

To read the raw log stream, and to write the filtered stream back to the path your log shipper already watches.

Read host process information

To tell which log files are genuinely in use, so that Auditty only ever acts on live files.

Watch pods in the API server

To resolve a log path to a namespace and workload, and to read interception annotations.

Write to one object storage prefix

The vault. Scoped to a prefix you choose, with credentials you issue and can revoke without involving us.

What it does not do: it does not exec into containers, does not read application memory, does not modify workloads, and does not touch logs for pods outside the rules you wrote. Recovery of a damaged or deleted log file is scoped to pods that match an interception rule — a log Auditty was not asked to handle is left strictly alone, even when it is visibly broken.

Failure modes

What happens when it goes wrong.

The useful question about an agent on every node is not whether it fails, but what it does when it does.

Auditty cannot keep up with the volume

It slows down and applies back-pressure. There is no drop path to fall back on, so it cannot quietly shed data instead.

Auditty is asked to shut down

Your log pipeline is restored first, ahead of any of its own cleanup, so logging is operational again before the process has finished exiting.

The node reboots, or Auditty is killed outright

Logging is restored automatically on restart, within milliseconds, with nothing to repair by hand. Anything ambiguous is left untouched rather than guessed at.

Auditty hits an internal error on one log stream

It is contained to that stream and recorded. A single malformed line cannot take down log processing for the node.

Object storage is unreachable

Suppression stops automatically, so events are forwarded rather than summarised into an archive that is not accepting writes. You get a bigger bill, not a gap.

The control plane is unreachable

Nodes keep running the last rule set they successfully validated. An empty rule set is never synthesised from a failure, and the fleet view shows which nodes are stale.

Memory pressure on the node

The agent cannot exceed 256 MiB and 1 vCPU, whatever the log volume. It cannot grow into the space your workloads need, and it does not degrade into unbounded growth when its buffers fill.

Auditty is removed entirely

Your logging returns to exactly what it was before installation. Nothing needs to be unwound, and no log file is left in an intermediate state.

Supply chain

What you are actually installing.

Publication cannot precede validation

A release gate checks that the exact tagged commit has passing build, lint and integration runs before any artefact is published. It fails closed: no green checks, no release.

Tags are immutable

Each release records the commit it was published from and refuses to move a tag to a different one. A version you audited stays the version you audited.

Licences are signed

Entitlements are Ed25519-signed tokens verified on the node. There is no phone-home check that turns your log pipeline off when our service has a bad day.

Someone else's review

A platform team that did not take our word for it.

AppsFlyer's platform team evaluated Auditty under conditions they set: assessment in a segregated cloud account, no vendor access to production systems, and no expansion until security prerequisites were met. They published what they found, including the parts that were their own doing.

How We Cut Log Volume Without Blindfolding Production

Daniel Rogatchevsky · AppsFlyer Engineering · November 2025

  • Nothing leaves your perimeter

    “All processing occurs locally in our clusters or controlled accounts, ensuring that no data leaves our premises.”

  • It fails open

    “If the agent fails, it fails open, ensuring logs flow normally.”

  • Identifiers survive suppression

    “The agent distinguishes log segments of business significance like UUIDs and does not suppress them.”

  • Service owners stay in control

    “The Configuration as Code approach enabled service owners to trust the system, providing them with the flexibility to opt in or create exception rules…”

Questions

What a security review usually asks.

Does Auditty see my log data?

Only for anomalous patterns, and never in the steady state. Ordinarily what leaves your cluster is log templates — the shape of a line with all values masked to placeholders — plus counts, rates, timing and node, namespace and workload names; a template records that a line of a given shape occurred, not what was in it, and cannot reconstruct the original. When a pattern trips anomaly detection, Auditty also sends a sample of the line that triggered it and some of its extracted values.

That exception is what allows an alert to tell you which request broke rather than only that something did. It is scoped to the pattern that tripped detection and never applies to the repetitive bulk of your logs.

If you would rather nothing but templates ever left your cluster, anomaly signals are a licensed capability and we will issue a licence without them, in which case the capability is not active in your deployment at all. Everything forwarded to your own SIEM or log vendor goes there directly and never passes through Auditty either way.

Does Auditty need access to my cloud storage credentials?

No. Auditty's control plane holds no credentials for your object storage and has no network path to it. The archive is written by your own agent, running inside your own account, using credentials you issue and can revoke without involving Auditty.

When the control plane needs archived data because you requested a retrieval, it asks a service running inside your cluster, which reads from your bucket locally and returns only the rows matching your request. There is no cross-account role to grant and no vendor access to review.

Why does Auditty need a privileged DaemonSet?

Reading other containers' log files requires host-level access. The agent needs read and write access to the node's pod log directory, so that it can read the raw stream and write the filtered one back to the path your log shipper already watches, and read-only access to process information on the host, so that it acts on log files that are genuinely in use.

Auditty does not exec into containers, read application memory, modify workloads, or touch logs for pods outside the rules you wrote. Recovery of a damaged or deleted log file is scoped to pods matching an interception rule, so a log Auditty was not asked to handle is left alone even when it is visibly broken.

Where is my log data stored, and for how long?

Your log data is stored in your own Amazon S3, Google Cloud Storage or Azure Blob Storage bucket, under a prefix you choose, as compressed Parquet partitioned by time. Auditty never holds a copy.

Retention is whatever your own bucket lifecycle policy says, because it is your storage and your billing relationship. Auditty applies no retention limit and takes no storage margin.

What happens to my logs if Auditty crashes or is removed?

Your logs keep flowing. Restoring your log pipeline is the very first thing Auditty does on the way out, ahead of any of its own cleanup, so the file your log shipper watches is working again within milliseconds — before the process has finished exiting. After an abrupt kill or a node reboot there is nothing to repair by hand either: the same restoration happens automatically, in milliseconds, and removing Auditty entirely leaves your logging exactly as it was before you installed it.

If the connection to the control plane fails, nodes continue running the last rule set they successfully validated; an empty rule set is never synthesised from a failure. If your object storage becomes unreachable, suppression stops automatically, so events are forwarded rather than summarised into an archive that is not accepting writes — you get a larger bill rather than a gap in your data.

Does Auditty stop working if it cannot reach your servers?

No. Auditty entitlements are cryptographically signed tokens verified locally on the node, so there is no phone-home licence check that can disable your log pipeline when Auditty's service has an outage.

Nodes that lose contact with the control plane continue processing with their last validated rule set and keep writing to your object storage. Loss of the control plane costs you visibility and rule changes, not log processing.

Bring your hardest question.

We would rather answer it on a call now than in a procurement questionnaire in six weeks.