---
sidebar_label: Base services
toc_max_heading_level: 3
doc_id: 09fcb187-75ac-4e87-9357-29f9899c42d8
description: >-
  Catalog of the base services nullplatform maintains, such as databases,
  queues, and storage, and how to adopt one in your organization.
keywords:
  - base services
  - service catalog
  - available services
  - adopt a service
  - service repositories
title: Base services
canonical: 'https://docs.nullplatform.com/docs/services/base-services'
---
# Base services

Base services are ready-made services that nullplatform maintains in public repositories. Each one ships its service
specification, workflows, and the OpenTofu code your agent runs to provision it, so you can adopt it as is or use it as
the starting point for your own.

## Available base services

Each row is one service, as defined in the latest release of its repository. **Slug** is the service specification's
slug, which stays the same even if the service's display name changes. **Path** is the directory in the repository that
holds the service's `specs/` folder, and `.` means the repository root. Some repositories hold two related services, such
as a server and the databases that run on it.

| Service | Slug | Provider | Category | Subcategory | Repository | Path |
| --- | --- | --- | --- | --- | --- | --- |
| AWS DocumentDB Cluster | `documentdb-cluster` | AWS | Database | Document Database | [services-document-db](https://github.com/nullplatform/services-document-db) | `documentdb-cluster` |
| AWS DocumentDB Database | `documentdb-database` | AWS | Database | Document Database | [services-document-db](https://github.com/nullplatform/services-document-db) | `documentdb-database` |
| AWS DynamoDB | `aws-dynamodb` | AWS | Database | NoSQL Database | [services-dynamo-db](https://github.com/nullplatform/services-dynamo-db) | `dynamodb` |
| Aurora PostgreSQL DB | `aurora-postgres-db` | AWS | Database | Relational Database | [services-postgresql-aurora](https://github.com/nullplatform/services-postgresql-aurora) | `aurora-postgres-db` |
| Aurora PostgreSQL Server | `aurora-postgres-server` | AWS | Database | Relational Database | [services-postgresql-aurora](https://github.com/nullplatform/services-postgresql-aurora) | `aurora-postgres-server` |
| Azure Cosmos DB | `azure-cosmos-db` | Azure | Database | NoSQL Database | [services-azure-cosmos-db](https://github.com/nullplatform/services-azure-cosmos-db) | `azure-cosmos-db` |
| Azure PostgreSQL Flexible Server | `azure-postgresql-flexible-server` | Azure | Database | Relational Database | [services-postgresql-flexible-server](https://github.com/nullplatform/services-postgresql-flexible-server) | `postgresql-flexible-server` |
| Postgres DB | `postgres-db` | Kubernetes | Database | Relational Database | [services-postgresql-k-8-s](https://github.com/nullplatform/services-postgresql-k-8-s) | `postgres-db` |
| RDS PostgreSQL | `rds-postgres` | AWS | Database | Relational Database | [services-postgresql-rds](https://github.com/nullplatform/services-postgresql-rds) | `rds-postgres-server` |
| RDS PostgreSQL DB | `rds-postgres-db` | AWS | Database | Relational Database | [services-postgresql-rds](https://github.com/nullplatform/services-postgresql-rds) | `rds-postgres-db` |
| RDS SQL Server | `rds-sqlserver` | AWS | Database | Relational Database | [services-sqlserver-rds](https://github.com/nullplatform/services-sqlserver-rds) | `rds-sqlserver-server` |
| RDS SQL Server DB | `rds-sqlserver-db` | AWS | Database | Relational Database | [services-sqlserver-rds](https://github.com/nullplatform/services-sqlserver-rds) | `rds-sqlserver-db` |
| Serverless Valkey | `serverless-valkey` | AWS | Database | In-memory Cache | [services-valkey](https://github.com/nullplatform/services-valkey) | `valkey` |
| AWS SNS | `aws-sns` | AWS | Messaging | Pub/Sub | [services-aws-sns](https://github.com/nullplatform/services-aws-sns) | `sns` |
| AWS SQS | `aws-sqs` | AWS | Messaging | Queue | [services-aws-sqs](https://github.com/nullplatform/services-aws-sqs) | `sqs` |
| Path Router | `path-router` | Istio | Networking | Path Routing | [services-path-router](https://github.com/nullplatform/services-path-router) | `.` |
| HTTP Route Access Control | `http-route-access-control` | Istio | Security | Access Control | [services-endpoint-exposer](https://github.com/nullplatform/services-endpoint-exposer) | `.` |
| AWS S3 Bucket | `aws-s3-bucket` | AWS | Storage | Object Storage | [services-s-3](https://github.com/nullplatform/services-s-3) | `aws-s3-bucket` |
| Azure Blob Storage | `azure-blob-storage` | Azure | Storage | Object Storage | [services-blob-storage](https://github.com/nullplatform/services-blob-storage) | `azure-blob-storage` |

Each repository has its own releases and changelog. A service that's no longer maintained stays listed, with
**Deprecated** at the start of its name.

## How adopting a base service works

The repository's README has the exact steps and values for each service. The flow is the same for all of them:

1. **Grant the agent its cloud permissions.** Apply the requirements module in `<path>/specs/requirements/<cloud>`
   in your cloud account. It sets up the permissions your agent needs to provision the service.
2. **Register the service in nullplatform.** Use the `service_definition` and `service_definition_agent_association`
   modules from [tofu-modules](https://github.com/nullplatform/tofu-modules). The first one registers the service
   specification from the repository, and the second one routes the service's actions to your agents. Some
   repositories include a ready-to-apply module for this in `<path>/specs/install/<cloud>`.
3. **Complete the service's own prerequisites.** Some services need more before their first run, such as a state
   bucket, agent environment variables, or DNS records.

Once it's registered, developers create the service from the nullplatform UI and link it to their applications, like
any other service.

:::note
You need a running agent with a notification channel for your services before you adopt one. If you don't have it yet,
set it up first.
:::

## Extend a base service or build your own

Base services are built from the same pieces you use to craft a service: service and link specifications, action
specifications, and the workflows your agent runs. To change how one behaves, copy its repository and adjust those
pieces. If none of them covers your case, craft a service from scratch.

## Next steps

- [Craft a service](/docs/services/craft-a-service/overview): build your own service or adapt a base one
- [Set up runners](/docs/services/set-up-runners): get an agent ready to provision services
- [Provisioning overview](/docs/services/provisioning): how nullplatform relays service actions to your agent
- [Manage and provision services](/docs/services/manage-services): create services and link them to applications
