Highdocs
Network/Sharing services

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" }
}
Private the whole way

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.