How Aggrelis works

One engine for every live number your product needs.

Send events as things happen. Aggrelis keeps running totals about anything you track, from users and accounts to devices, orders and meters, answers questions about them while your request waits, and tells you when something crosses a line.

Events
  • Sign-in
  • API call
  • Reading
  • Order
Running totalslive
  • Sign-ins per userlast 15 min3
  • API calls per keythis minute640
  • Warm readings per containerlast 30 min1
  • Orders per customerthis week4
Your app asks
Is this API key over its quota?Within quotacallsThisMinute: 640reasons: []
Crosses a line
3 warm readings in 30 minWebhook to your systems12 sent
The building blocks

Eight ideas cover the whole model

Everything in Aggrelis is one of these. You describe them as configuration, in the console or through the API, and they go live without a release.

  • Anything you track

    The things you count for: a user, account, device, order, meter, or a combination such as user and device.

    user · account · device · meter
  • Events

    What happened, and which things it is about. One order can update the customer, the card and the device at once.

    order_placed · api_call · reading
  • Running totals

    What to keep for each thing: counts, sums, highs and lows, distinct values. Updated as each event arrives.

    sum of order value per customer
  • Metrics

    One number read from a running total over a window, defined once and shared by name across teams.

    orders this week, in their time zone
  • Questions

    A named question about one thing: its metrics, values derived from them, and the conditions that hold.

    Is this account near its plan limit?
  • Conditions

    Your rules, true or false. When a value is missing, the condition stays undecided instead of quietly false.

    seats_this_month > plan.seats
  • Triggers

    When this happens, check that. Also when something stops happening, like a device that went quiet.

    on every reading, check the container
  • Decisions

    A fixed answer such as approve, review or decline, from your rules first and an AI model where they stop.

    approve · review · decline
Aggregate anything

Count anything, per anything, over any window

Pick what to keep and for whom. Aggrelis updates the number as each event arrives, so it is already current when you read it.

  • Counts, sums, highs and lows, distinct values, first and last, percentiles, or whether something happened at all
  • Per user, account, device, order or meter, or per combination
  • Rolling, calendar and lifetime windows, in each customer's own time zone
  • Exact decimals and money: a USD payment never inflates a EUR total
Explore aggregations
Illustrative
Keep
Over
€431.13Order value per customer, today
Across relationships

One event counts for everyone it belongs to

Tell Aggrelis how things relate: a user to a team and a company, a sensor to a site and a region. An event then updates every level at once, and a question about one thing can read the totals of the things around it.

  • Roll-ups along up to three relations
  • Links come from your own data or straight from events, and keep their history
  • No link means the value is reported missing, never counted as zero
How relationships work
Illustrative
+1 Failed sign-in
  1. Aliceuser2
  2. Paymentsteam9
  3. Acme Inc.company41

failed sign-ins · last hour

A question about Alice can also read Acme's total.

Ask, or be told

Answers inside the request, or pushed when it matters

Your app asks a question when it has to decide, and gets the values and the conditions that hold straight back. Or let events trigger the question, and have the answer pushed to your systems.

  • Ask on demand, from sign-in, checkout or any API call
  • Get the answer in the same call that sends the event
  • Push results to a stream or to signed webhooks, also when something stops happening
  • Every answer lists what it could not compute, and why
See answers and triggers
Illustrative
  • Ask on demandYour appAnswer
  • Answer with the eventEventCounted and answered
  • Pushed to youTriggerStream or webhook
POST …/entities/account/acc_42/profiles/plan_usage:evaluate
{
  "values": {
    "seatsThisMonth": 18,
    "callsToday": 48210
  },
  "reasons": ["near_seat_limit"],
  "skipped": [],
  "profileVersion": "plan_usage@v3"
}
Decide

Rules for the clear cases, AI where rules stop

When a number is not enough, let Aggrelis answer a fixed question such as approve, review or decline. Your rules settle the clear cases. A model sees only the values you list, guard rules check its answer, and there is always a safe fallback.

  • Every answer recorded with its full trace, kept for 400 days
  • Try a new version in shadow before it decides anything
  • Rules-only decisions when you want no AI at all
  • A monthly AI budget, checked before every call
How decisions work
Illustrative
Refund request€240, third refund this month
  1. Read the numbers3 refunds this month
  2. Your rulesNo rule decides
  3. AI modelReview · confident 0.82
  4. Guard rulesNothing to override
AnswerReviewfrom model
Configured, not coded

Change safely, live in seconds

Running totals, questions and rules are configuration, so changing them needs no release. Every change is a new version that you test on real data, compare and can take back.

  1. Draft

    Edit freely. Nothing changes until you activate.

  2. Test

    Checked against everything else, then tried on recent events without writing anything.

  3. Fill with history

    A new running total starts from your event log, not from zero.

  4. Shadow

    Runs next to the live version, so you compare before you switch.

  5. Live

    Goes live on every server within seconds. No deploy, no restart.

Versions
  • v3live
  • v2
  • v1
Roll back

Bring back any earlier version. Counts come back with history.

  • No overwrites

    Two people can't overwrite each other's changes.

  • On the record

    Every change, with who made it, on an audit log that is never edited.

  • Exact switch-over

    Filling with history never counts an event twice or misses one.

The workspace

Built for the people who own the numbers

The console is where your team defines what to count, explores what Aggrelis computed and tries changes on real data. Guided forms and plain words for everyone, JSON one click away for engineers.

  • Guided editors with live checks and one-click fixes
  • The whole configuration on one map, with live numbers
  • Look up any user, account or device and see each answer explained
  • See what a change would touch before it goes live
Tour the workspace
Illustrative
Built to run

Made for production from the first event

The parts you only notice when something goes wrong.

  • One source of truth

    Definitions and data are kept in a database of record. The fast in-memory totals can be rebuilt from it.

    PostgreSQL, Redis rebuildable
  • Overload is refused, never dropped

    When traffic outruns the system, Aggrelis says so and your client retries. Nothing disappears silently.

    503 and 429, not data loss
  • Each event counts once

    Retries are recognized and answered as duplicates, so a flaky network never inflates a total.

    event ids remembered for 24 hours
  • Scale each part on its own

    Sending events, asking questions and changing configuration run as separate services you size apart.

    ingest · query · admin
  • Metrics, traces and alerts

    Dashboards and alert rules come with it, and every alert has a runbook.

    Prometheus · OpenTelemetry · Grafana
  • Isolated and private

    A database per workspace, identifiers hashed, hosted in the EU or run in your own cloud.

    Helm chart · Docker Compose
Security and privacy
Early access

Start with one live number

Tell us what you want to track. We'll help you set up your first running totals and questions.