Skip to main content

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.

ServiceSlugProviderCategorySubcategoryRepositoryPath
AWS DocumentDB Clusterdocumentdb-clusterAWSDatabaseDocument Databaseservices-document-dbdocumentdb-cluster
AWS DocumentDB Databasedocumentdb-databaseAWSDatabaseDocument Databaseservices-document-dbdocumentdb-database
AWS DynamoDBaws-dynamodbAWSDatabaseNoSQL Databaseservices-dynamo-dbdynamodb
Aurora PostgreSQL DBaurora-postgres-dbAWSDatabaseRelational Databaseservices-postgresql-auroraaurora-postgres-db
Aurora PostgreSQL Serveraurora-postgres-serverAWSDatabaseRelational Databaseservices-postgresql-auroraaurora-postgres-server
Azure Cosmos DBazure-cosmos-dbAzureDatabaseNoSQL Databaseservices-azure-cosmos-dbazure-cosmos-db
Azure PostgreSQL Flexible Serverazure-postgresql-flexible-serverAzureDatabaseRelational Databaseservices-postgresql-flexible-serverpostgresql-flexible-server
Postgres DBpostgres-dbKubernetesDatabaseRelational Databaseservices-postgresql-k-8-spostgres-db
RDS PostgreSQLrds-postgresAWSDatabaseRelational Databaseservices-postgresql-rdsrds-postgres-server
RDS PostgreSQL DBrds-postgres-dbAWSDatabaseRelational Databaseservices-postgresql-rdsrds-postgres-db
RDS SQL Serverrds-sqlserverAWSDatabaseRelational Databaseservices-sqlserver-rdsrds-sqlserver-server
RDS SQL Server DBrds-sqlserver-dbAWSDatabaseRelational Databaseservices-sqlserver-rdsrds-sqlserver-db
Serverless Valkeyserverless-valkeyAWSDatabaseIn-memory Cacheservices-valkeyvalkey
AWS SNSaws-snsAWSMessagingPub/Subservices-aws-snssns
AWS SQSaws-sqsAWSMessagingQueueservices-aws-sqssqs
Path Routerpath-routerIstioNetworkingPath Routingservices-path-router.
HTTP Route Access Controlhttp-route-access-controlIstioSecurityAccess Controlservices-endpoint-exposer.
AWS S3 Bucketaws-s3-bucketAWSStorageObject Storageservices-s-3aws-s3-bucket
Azure Blob Storageazure-blob-storageAzureStorageObject Storageservices-blob-storageazure-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. 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​