> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zocomputer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update service

> Update a managed user service on your Zo server. Only specify the fields you want to change; omitted fields keep their existing values. Always restarts the service process.

{/* Tool: update_user_service */}

A User Service is an automatically managed process on Zo Computer.

Service modes:

* "http" — public or private web service with a URL endpoint
* "tcp" — public TCP service with a host:port endpoint
* "process" — supervised background process with no public endpoint

Visibility (HTTP only):

* public: reachable at \*.zocomputer.io without auth
* private: reachable at \*.zo.computer, requires the owner to sign in. Private services are gated by a feature flag.
* TCP services are always public. Process services have no endpoint.

You can change a service's mode in place instead of deleting and recreating it.

## Parameters

<ParamField path="service_id" type="string" required={true}>
  Identifier of the service to update.
</ParamField>

<ParamField path="label" type="string" default={""}>
  Optional. Unique label for the service (lowercase and hyphens).
</ParamField>

<ParamField path="mode" type="string" default={""}>
  Optional new mode: "http", "tcp", or "process".
</ParamField>

<ParamField path="local_port" type="number" default={-1}>
  Optional. Localhost port for networked services (injected as PORT env var). Required when switching from "process" to "http" or "tcp".
</ParamField>

<ParamField path="entrypoint" type="string" default={""}>
  Optional. Command to run the service.
</ParamField>

<ParamField path="workdir" type="string" default={""}>
  Optional. Working directory for the entrypoint.
</ParamField>

<ParamField path="env_vars" type="object" default={{}}>
  Optional. Environment variables. PORT will be overridden for networked services and is not set for process-only services.
</ParamField>

<ParamField path="public" type="string" default={""}>
  Optional. Pass true to make the service public, false to make it private (HTTP only). Omit to leave unchanged. Private services are reachable at \*.zo.computer and require sign-in.
</ParamField>

<ParamField path="enabled" type="string" default={""}>
  Optional. Pass "false" to pause the service (stop it running, keep its config/URL/quota) or "true" to resume it. Omit to leave the paused/running state unchanged.
</ParamField>
