Sharing services
Publish a service from one project and consume it from another — even in another organization — over the private overlay, without ever putting it on the public internet.
Publish a service
A producer marks a component as shared in its config — a share name and which of its ports to offer — and deploys. From then on the service is publishable to other projects. Nothing is exposed yet: publishing makes a service offerable, not reachable.
Consume it
The consuming project adds a reference to that share, with a local alias. High injects the service's overlay address as an environment variable named after the alias — uppercased, with dashes turned into underscores, plus _URL. Your code reads the env var; it never hardcodes a host or a port.
# in the producer component's config
publish:
- { name: billing, ports: [http] }# in the consumer component's config
references:
- { shareName: acme/billing, as: billing }# High injects the address for you
BILLING_URL = http://billing.acme.mesh:80
fetch(process.env.BILLING_URL + "/invoices")A bare share name (billing) references a service in your own org; a namespaced one (acme/billing) references another org's.
Access is granted, never assumed
Every edge is default-deny. A reference doesn't connect until the producer grants it — even within the same organization. The producer grants a specific consumer org (and optionally a single project); revoke it and the edge closes.
{
"tool": "grant_service",
"arguments": {
"serviceId": "svc-billing",
"consumerOrg": "globex"
}
}{
"tool": "revoke_service_grant",
"arguments": { "grantId": "g-9f3c1a" }
}A shared service is never on the public internet. Cross-org traffic rides the overlay through a private gateway; a grant is the only thing that opens the door.