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.
- Sign-in
- API call
- Reading
- Order
- Sign-ins per userlast 15 min3
- API calls per keythis minute640
- Warm readings per containerlast 30 min1
- Orders per customerthis week4
callsThisMinute: 640reasons: []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
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
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
- Aliceuser2
- Paymentsteam9
- Acme Inc.company41
failed sign-ins · last hour
A question about Alice can also read Acme's total.
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
- Ask on demandYour appAnswer
- Answer with the eventEventCounted and answered
- Pushed to youTriggerStream or webhook
{
"values": {
"seatsThisMonth": 18,
"callsToday": 48210
},
"reasons": ["near_seat_limit"],
"skipped": [],
"profileVersion": "plan_usage@v3"
}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
- Read the numbers3 refunds this month
- Your rulesNo rule decides
- AI modelReview · confident 0.82
- Guard rulesNothing to override
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.
- Draft
Edit freely. Nothing changes until you activate.
- Test
Checked against everything else, then tried on recent events without writing anything.
- Fill with history
A new running total starts from your event log, not from zero.
- Shadow
Runs next to the live version, so you compare before you switch.
- Live
Goes live on every server within seconds. No deploy, no restart.
v3livev2v1
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.
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
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
Start with one live number
Tell us what you want to track. We'll help you set up your first running totals and questions.