Skip to main content

1. Plan the Service

Start by deciding what the service is, who owns it, and how Service Lasso should treat it. Do this before creating release artifacts or writing a detailed manifest.

Decide Ownership

Use these naming rules consistently:

DecisionRuleExample
Core-owned serviceservice ID starts with @@node, @nginx, @serviceadmin
App-owned serviceservice ID does not use @echo-service, worker-api
GitHub repouse service-lasso/lasso-<name> for shared service reposservice-lasso/lasso-nginx
Service folderfolder matches the service ID exactlyservices/@nginx/service.json

Only use @ for core-owned Service Lasso services and providers.

Choose the Service Shape

Pick one shape before writing service.json:

ShapeUse whenCommon fields
ProviderThe service supplies a runtime or tool to other services and should not run as a daemon.role: "provider", artifact, globalenv
Managed daemonThe service owns and runs its executable.artifact, platform command, ports, healthcheck
Provider-backed appThe service runs through another provider such as @node, @python, or @java.execservice, executable, args, depend_on
App-owned add-on serviceConsumers opt in and must configure it first.enabled: false, explicit env/config notes

For exact manifest fields, use the service.json Reference.

Define the Consumer Contract

Record these decisions before implementation:

  • Which apps or templates should include this service?
  • Which ports and URLs does the service expose?
  • Which env variables does it require or export?
  • Which services must start before it?
  • Which healthcheck proves it is ready?
  • Which upstream runtime/tool version is being packaged?
  • Which platforms are supported by the first release?

Exit Criteria

Move to step 2 only when:

  • service ID and ownership are settled
  • service shape is selected
  • runtime/tool version and platform support are known
  • dependencies, ports, env, and health intent are clear