Status: implemented for the access-controlled sites.smol.ai Alpha.
Forge can publish a small, buildless application without starting the repository build sandbox. This is a trusted control-plane optimization, not a weaker deployment mode: Forge still deploys one exact commit, validates every byte, produces immutable artifacts, applies the same runtime wrapper and policy, records a deployment, and activates only an eligible branch head.
The deployment page labels the selected path, explains the decision, shows the time to live and phase timings, and reports reused assets and runtimes. A repository never needs to choose the fast path.
A deployment uses the fast path when all of these are true:
forgeBuild.ts have no build command;forgeBuild.ts is present at the exact deployment commit;app.assets.directory;.js or .mjs file;TypeScript, package imports, generated assets, larger sources, and repository build commands automatically use the existing restricted sandbox. That is a supported fallback, not a deployment failure.
Example:
import { defineForge } from '@smolai/forge/config';
export default defineForge({
version: 1,
app: {
entrypoint: 'src/server.js',
assets: {
directory: 'web',
fallback: 'index.html',
},
},
routes: [
{ pattern: '/api/*', to: 'app.http' },
{ pattern: '/*', to: 'app.assets' },
],
});flowchart LR
Push["Forge Git push<br/>exact SHA"] --> Decide{"Fast-path eligible?"}
Decide -->|yes| Read["Read verified Git objects<br/>from Forge R2"]
Decide -->|no| Sandbox["Restricted exact-SHA sandbox"]
Read --> Validate["Strict manifest, tree,<br/>source and asset validation"]
Validate --> Parallel["Publish in parallel"]
Parallel --> Assets["Reuse/upload assets<br/>by SHA-256"]
Parallel --> Runtime["Reuse/publish site runtime<br/>by provider digest"]
Sandbox --> Ingest["Trusted ingest"]
Assets --> Activate["Record deployment<br/>and activate eligible head"]
Runtime --> Activate
Ingest --> ActivateThe runner receives read-only access to Forge's Git-object bucket. It resolves only the deployment's stored repository ID and exact lowercase commit SHA. For each compressed Git object it:
The branch name is never used to select source after the deployment is created.
Assets are stored at sites/content/sha256/<digest>. A version 2 trusted asset
manifest maps each public path to exactly that validated key. Existing version
1 per-deployment manifests remain readable, so legacy static Sites are
unchanged.
Dynamic code is wrapped and published per Site under a name derived from the Site identity and provider-artifact digest. The digest includes the application bundle, trusted-wrapper version, provider compatibility settings, and the private runtime binding. A later deployment with identical provider bytes reuses the ready script even if routes or deployment IDs differ.
This slice intentionally does not delete shared artifacts. Garbage collection needs reference accounting and is a separate operation.
Each new deployment records:
execution_path: trusted_fast or sandbox;Older deployments display “Path not recorded.” The API exposes the sanitized
summary as one execution object and does not expose raw trusted manifests or
storage keys.
The controlled fixtures establish the sandbox baseline below. These verified results come from production deployment records after ordinary Forge Git pushes on July 23, 2026, not from a local microbenchmark. “Cold” includes the first content-addressed asset and runtime publication. “Reused” is a later exact-commit deployment with unchanged application content.
| Fixture | Sandbox time to live | Cold fast path | Reused fast path | Reused improvement |
|---|---|---|---|---|
| Static SPA | 12.747 s | 1.951 s | 1.632 s | 7.81× |
| Durable reservations | 15.210 s | 2.550 s | 2.118 s | 7.18× |
| Durable realtime | 14.779 s | 2.399 s | 1.867 s | 7.92× |
The reused deployments each reported two reused assets. Reservations and realtime also reported a reused runtime. The trial did not reach the aspirational 10× target consistently; the remaining latency is primarily control-plane activation and remote Git-object/database round trips, not repository build work.