Skip to main content
Wildo.ai Coming soon

Shared services and application authority

Share the services around your applications

Applications can share the services that register them, coordinate scheduled work and distribute reusable modules. Each application keeps its own identity and configuration while using the same operational foundation.

Registration, configuration and scheduling services serve two distinct applications.

Share the services around your applications

Applications can share the services that register them, coordinate scheduled work and distribute reusable modules. Each application keeps its own identity and configuration while using the same operational foundation.

Wildo packages these services for the supported deployment workflows, with initialization and health checks built into their startup.

Example — Operate a task product and a CRM together

Both applications use the application manager and scheduler. Each registers its own configuration and jobs; shared module infrastructure supports reuse. Operating these common services does not merge the applications’ customer accounts or grant universal access to their records.

For engineers
ServiceOwnsDoes not replace
Application managerApplication registration, managed configuration and credential provisioningApplication deployment and business logic
Crontabs and batches managerSchedule records and signed dispatchThe application’s job execution and outcome
Module registryShared module publication and retrieval infrastructureApplication-specific composition and behavior
Initialization jobOne-time platform setup for the environmentA continuously running application service

The deployment templates use a shared platform image with a runtime service discriminator. Compose and Kubernetes describe the platform services and their initialization dependencies. In framework development, services can run from source. These are execution choices around the same named responsibilities.

Platform services use the engine’s repositories and runtime mechanisms, with service-specific startup sequences. The application manager and module registry extend the common startup; the schedule manager uses its own two-phase sequence. A common engine does not mean their readiness dependencies or initialization order can be ignored.

Match the caller to the door

Sharing a service does not mean sharing one credential or one permission model for all its endpoints.

DoorCallerPurpose
Scheduler administrationApplication-manager service identityInspect or manage scheduler state
Application job synchronizationAuthenticated applicationSynchronize that application’s jobs
Runtime’s own scheduleAuthorized runtime principalRead its own schedule and history

This selected middleware from crontabs-scheduler.crontab.controller.ts protects the administrative scheduler routes. Comments and later route registration are omitted; the excerpt stops inside setupRoutes.

protected setupRoutes(): void {
  this.router.use((req, res, next) => {
    const middleware = this.authMiddleware.create({
      allowPlatformServices: true,
      allowApplications: false,
      expectedAudience:
        PlatformApplicationType.PLATFORM_CRONTABS_BATCHES_MANAGER,
    });
    return middleware(req, res, next);
  });

  this.router.use((req, res, next) =>
    this.authzMiddleware.requireAppsManager()(req, res, next),
  );

The first layer authenticates an appropriate service token and audience. The second requires the application manager’s identity. The application synchronization and runtime self-read endpoints deliberately use other contracts; do not apply this administrative example to all scheduler traffic.

Separate operational control from customer authority

A platform environment hosts registered applications. Each application can then have its own application-wide administrators and customer organizations. Those application roles govern its resource operations; they are not the credentials the application manager uses to operate the shared platform.

Provision the shared services and their access before bootstrapping applications. Inspect each readiness endpoint and the specific authenticated exchange needed by the caller. A generated service definition establishes the intended deployment, not a running multi-region service or a guarantee of uninterrupted operation.

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.