Self-hosted

The whole product, running in your cloud.

Links, analytics, engagement, revenue and data all run inside your perimeter, on infrastructure you operate. Events land in your own databases. grovs staff have no access to them.

grovs · production

AWS · eu-central-1 · your account

Healthy
Links3 instances
Analytics3 instances
Engagement2 instances
Revenue2 instances
Postgres
ClickHouse
Redis
Images from Amazon ECR · v2026.10.2
  • 10M+

    end users in production

  • 100K+ req/s

    designed to scale out

  • MIT

    open-source core you can read

  • 0

    grovs staff with access to your data

One deployment, inside your perimeter.

Your apps and website talk to grovs on your servers. grovs writes to your databases. The only outbound calls are the ones on the right, and you configure each one.

  1. 1Apps, emails and QR codes call grovs on your own domain.
  2. 2grovs writes every event to your Postgres and ClickHouse.
  3. 3Outbound calls go only to the services you configure.

Same images, any cloud.

grovs ships as versioned Docker images and three standard data stores. Nothing in it depends on one provider, so it runs wherever your other services run.

AWS · eu-central-1

Your account

grovs app services

Containers or VMs in your VPC

LinksAnalyticsEngagementRevenueData

Postgres

Amazon RDS or your own

ClickHouse

Self-managed or a managed ClickHouse

Redis

ElastiCache or your own

App services
Containers or VMs in your VPC
Postgres
Amazon RDS or your own
ClickHouse
Self-managed or a managed ClickHouse
Redis
ElastiCache or your own
Images
Amazon ECR
Sign-in
Your IdP over OIDC

Same images on every cloud. Use the managed services you already run, or your own.

Deploy it your way.

Your platform team picks the tool. Each one deploys the same versioned images against your Postgres, ClickHouse and Redis.

Terraform

Modules that provision a production setup in your account: networking, services, data stores and load balancing. Works with OpenTofu.

main.tf
module "grovs" {
  source  = "grovs/selfhosted/aws"
  version = "2026.10.2"
  region  = "eu-central-1"
  domain  = "go.yourbrand.com"
}

Same images, same data stores, same upgrade steps.

Built to scale out.

The app services hold no state, so you add capacity by adding instances behind your load balancer. Events go to ClickHouse, which is built for billions of rows.

Built for peaks

100,000+

requests / second, scaled out

Add instances, get more capacity.

Start

One instance of each service

Grow

Several app instances behind a load balancer

Large

App instances across zones, dedicated ClickHouse

Stateless app servicesScale out

Links, SDK and API traffic. Add instances to handle more requests; any instance can serve any request.

Redis

Hot link lookups and rate limits, so a link open never waits on the main database.

Postgres

Links, campaigns and settings. Small, and easy to back up.

ClickHouse

Every event, stored by column. Built for very large tables and fast queries over them.

Start

Pilots, staging and smaller apps

Grow

Production apps with steady traffic

Large

National-scale apps and campaign peaks

How deployment works.

  1. 1

    Pull the images

    Copy the versioned Docker images into your own registry.

  2. 2

    Provision

    Use Terraform, Helm, Docker Compose or Ansible, in any cloud or your data centre.

  3. 3

    Connect your stack

    Point grovs at your Postgres, ClickHouse and Redis, and sign in with your SSO over OIDC.

  4. 4

    Upgrade on your schedule

    Each release ships with upgrade steps. Backup and restore are covered in the runbooks.

What ships with it
Infrastructure as code
Terraform, Helm, Docker Compose and Ansible
Runbooks
Backup, restore and day-to-day operations, documented
Releases
Versioned releases with documented upgrade steps
Data stores
Your Postgres, ClickHouse and Redis
Identity
Your SSO over OIDC, user provisioning over SCIM
Capacity
Stateless app services that scale out to 100,000+ req/s

Run it like your other services.

Upgrades, backups, monitoring and sign-in follow your rules, not ours.

Upgrades you schedule

Each release is a versioned image with written upgrade steps. Nothing updates itself.

Backups you own

Postgres and ClickHouse are yours, so they follow your backup policy. Restore steps are in the runbooks.

Your monitoring

Health checks and logs go to the tools you already use.

Your sign-in

SSO over OIDC with Entra, Okta, Ping or Google, and user provisioning over SCIM.

Planning a self-hosted rollout?

Sizing, a security review or a pilot? Talk to our team.

Where each product keeps its data, and what leaves.

Everything below lives in your cloud. The right column lists every flow of product data out of your perimeter. You configure each one.

Links

Data lives in
Your Postgres + ClickHouse
Leaves your perimeter
DNS records for your custom link domain

Analytics

Data lives in
Your ClickHouse
Leaves your perimeter
No product data

Engagement

Data lives in
Your Postgres + ClickHouse
Leaves your perimeter
Push payloads to APNs / FCM for delivery

Revenue

Data lives in
Your Postgres + ClickHouse
Leaves your perimeter
Receipt checks with the App Store / Google Play

Data

Data lives in
Your ClickHouse, streamed to destinations you choose
Leaves your perimeter
Only to destinations you configure

Updates arrive as images you pull from your registry; nothing is pushed into your deployment. This table covers product data. Operational monitoring settings are covered in the security pack.

Community or Enterprise.

Start with the open-source core. Move to Enterprise when you need engagement, revenue, SSO and an SLA.

Community

Free

Open source (MIT)

Enterprise

Annual licence

Per deployment, flat price

Products

Deep linking and custom domains

Included
Included

Analytics and CSV export

Included
Included

Engagement

Included

Revenue

Included

Event stream

Included

Security and support

SSO and SCIM

Included

Audit log

Included

Patch and support SLA

Included

Security pack, BAA and DPA

Included
Security & compliance

Identity, audit, open source, vendor continuity and compliance notes. Architecture supports HIPAA · BAA available.

Read our Trust page

Questions, answered.

Something else? Talk to an engineer.

Can grovs staff see our data?

No. Events land in your own databases, on infrastructure you operate. grovs staff have no access to them.

What product data leaves our network?

Push payloads to APNs / FCM, receipt checks with the App Store and Google Play, DNS records for your link domain, and the event-stream destinations you configure.

How do updates work?

Versioned releases with documented upgrade steps. You pull the images into your registry when you are ready; nothing is pushed into your deployment.

Which databases do we need?

Postgres, ClickHouse and Redis, run by you.

Is there a free, open-source edition?

Yes. Community is MIT-licensed and covers deep linking, custom domains, analytics and CSV export.

How much traffic can it take?

The app services are stateless, so capacity grows with the instances you add. The design scales out past 100,000 requests per second, and we size the deployment for your peak with you.

Do we have to use AWS?

No. grovs is a set of Docker images plus Postgres, ClickHouse and Redis. It runs on AWS, Azure, Google Cloud or in your own data centre.

Your first link, live this afternoon.

Install the SDK, connect your domain and send a link that opens the right screen. Start free on grovs Cloud, or run the same stack in your own.

Compare plans
grovs Cloud

$0up to 10K monthly users

  • Sign up and add the SDK
  • Your first link live the same day
  • Flat yearly price as you grow
Self-hosted

Flat licencea year, in your cloud, no metering

  • AWS, Azure, GCP or your data center
  • Deployment help from our engineers
  • Your SSO, your database, your rules