Build contract
A build is an immutable attempt to turn one repository commit and one set of server settings into one deployable artifact. After the build starts, changing a branch, editing an environment variable, or updating server settings does not change that build. Those changes apply to the next build that uses them.Debug build problems from the build record, not from the current branch tip.
The current branch may have moved since the failed build started.
Build states
What starts a build
Default branch push
A push to the configured default branch can create a production build.
Pull request
A pull request can create a preview build with preview-scoped environment
variables.
Manual build
A user with server edit access can start a build from the dashboard.
Configuration change
Changes to build-relevant settings, such as the entrypoint or dependency
file, take effect on the next build.
What does not start a build
Not every server change produces a new artifact. Some changes affect gateway or dashboard state without rebuilding Python code.Build inputs
Source resolution
Horizon records the repository, branch context, and exact commit for every hosted build. Branch names are useful for starting builds, previews, and promotion workflows, but the artifact is tied to the commit that was resolved at build start. This matters when a pull request receives several pushes quickly. Preview builds run concurrently, so an older build may finish after a newer one. Use the deployment page to confirm which artifact is selected before assuming the latest completed build is live.Build output
A successful build produces:- A deployable artifact.
- A discovered MCP manifest for tools, resources, prompts, and templates.
- Build logs for audit and debugging.
- Metadata that Horizon uses for deployment, routing, and observability.
Concurrency and ordering
Default-branch deploys to the same server run one at a time. When you push several commits in quick succession, their builds run in parallel but deploy serially, so the newest commit is the last one applied and owns live traffic. Preview builds still run concurrently across branches.Manifest inspection
Build inspection loads the server entrypoint and records the MCP capabilities Horizon can see. The dashboard, ChatMCP, remix composition, and capability policies depend on that manifest. Playground lists live capabilities from the selected target instead. If a capability is missing after a successful build, check whether the server registers the tool, resource, prompt, or template during import or startup. Conditional registration can make local behavior differ from build inspection, especially when it depends on environment variables.Troubleshooting
Dependency installation fails
Dependency installation fails
Check the dependency file path, Python version requirements, private package
credentials, and any build-time environment variables.
The entrypoint cannot be loaded
The entrypoint cannot be loaded
Confirm the configured file exists in the repository revision and can be
imported without running interactive code.
The manifest is empty or incomplete
The manifest is empty or incomplete
Make sure tools, resources, and prompts are registered before the server is
inspected. Build logs usually show whether inspection succeeded.
A new environment variable is missing
A new environment variable is missing
Start a new build after saving the variable. Existing artifacts keep the
environment available when they were built.
A successful build did not change production traffic
A successful build did not change production traffic
Confirm whether the build was for a preview deployment, whether automatic
promotion is enabled, and which artifact the live deployment currently
selects.
A tool disappeared after a build
A tool disappeared after a build
Compare the manifest on the previous successful build with the new build.
Then check registration code and environment-dependent imports.
Related docs
Hosted servers
Start with the hosted-server contract across source, deployments, access,
runtime, and observability.
Deployments
Serve successful builds as live or preview deployments.
Environment variables
Manage production and preview environment variables.
Compute model
Understand how artifacts run after deployment.