Skip to main content
Wildo.ai Coming soon

Environments and services

Choose where each service runs

Choose supported self-hosted or vendor-managed connections per service without putting the hosting decision into business logic.

Partially available today — the limit is described on this page.

A database shown with two hosting choices: your own stack or a managed service.

Choose where each service runs

Your database does not have to be hosted in the same way as your queue or file storage. Wildo separates a service’s role from its hosting model, so supported local and managed choices can be made per environment.

The application uses the resolved connection. You choose the provider, supply its operating authority and plan any data migration when changing services.

Example — Use a managed database with a self-hosted broker

An environment can select MongoDB Atlas for records and retain RabbitMQ inside its own stack. Each keeps its own configuration and credential path; the application does not need vendor-specific hosting decisions scattered through its business operations.

For engineers

Keep hosting and brand separate

This is a configuration fragment using the current schema, adapted from the production environment. Add it to the selected environment’s backingServices; account details and secrets remain outside this excerpt.

backingServices: {
  mongodb: {
    source: BackingServiceSource.MANAGED,
    provider: 'atlas',
    database: 'application-records',
  },
  rabbitmq: {
    source: BackingServiceSource.SELF,
    vhost: 'application-work',
  },
}

source selects the hosting model. provider selects a brand recognized by the provider resolver. The declaration does not create a vendor account or migrate data. Provider provisioning uses the operator authority available to the selected environment, and runtime delivery uses the generated application credentials.

Check the actual provider resolution

KindCurrent managed resolution
PostgreSQLNamed RDS, Cloud SQL, Azure, Supabase, Neon or Render entries; generic managed fallback
MongoDBatlas
S3Recognized minio and aws brands resolve first, independent of source; otherwise source selects AWS for managed and MinIO for self-hosted
Redis, RabbitMQ, ClamAV, immudbNo managed provider in this resolver

PostgreSQL’s unrecognized brand falls back to its generic managed entry. S3 dispatches recognized brands first and otherwise falls back by source. MongoDB has no generic managed fallback. Resolving a name is not the same as being served: see the next section.

Check what can actually execute

A resolved provider name describes a selection; it does not prove that a provisioning implementation exists. So a declaration is accepted only when it resolves to a provider AND a provider module can serve it. wildo config validate, wildo config sync and wildo lock check refuse anything else with one shared check, naming the environment, the kind, what was declared and what that kind can be declared as instead. Today the servable managed choice is MongoDB Atlas; every other kind is declared self-hosted.

LayerWhat to verify
Accepted declarationThe service fields and hosting/provider combination pass their schema
Resolved providerThe resolver selects the intended provider enum
Executable moduleA registered module implements the operations needed, such as planning, provisioning or credential minting
Operator-supplied connectionThe selected runtime receives a compatible address and credentials when infrastructure is supplied externally
Runtime authorityThe application’s delivered credential has the required scope and the service is reachable

The built-in provider catalog currently has a self-hosted PostgreSQL module, but no modules for its managed PostgreSQL enum entries, and its AWS S3 module cannot yet deliver a credential. Those declarations are refused rather than recorded: those names are not a claim that Wildo provisions RDS, Cloud SQL, Neon, AWS S3 or the other listed offerings.

Separate provider resolution from workload selection

The local workload policy is shared by Compose and Kubernetes. An explicit managed cache, broker or S3 choice would suppress those local workloads; while no module serves them, such a choice is refused before any stack is generated. Omission retains their baseline local workloads. This distinction matters: removing a container does not prove a replacement was provisioned.

Before changing a hosting choice, check the provider connection, runtime credential, generated deployment and existing data separately. The common application contract reduces hosting-specific code; it does not remove service compatibility or migration work.

Building a B2B product or an internal tool?

Wildo is not self-service yet. Tell us what you have in mind and we will say plainly whether it fits, and what happens next.