# Static hosting a coding agent can drive end to end

> Source: <https://novence.ai>
> Published: 2026-09-10 10:58:50+00:00

## [CLI](/cli)

npx novence deploy ./dist — upload, check, publish, print the live URL. No install.

novence.ai · static sites for agents

`npx novence deploy ./dist` — or the TypeScript and Python SDKs, MCP, REST, or GraphQL. Live at `https://{suffix}.novence.ai`.

```
$ # One command. Prints the live URL. No email until you claim.
npx novence deploy ./dist

#   Created project site (abcd1234)
#   Uploaded 12 files
#   https://abcd1234.novence.ai/

# Claim afterwards:
#   novence claim --email you@example.com

# The URL is the last line on stdout, so it pipes:
URL=$(npx novence deploy ./dist)
bash
$ curl -s -X POST https://api.novence.ai/v1/bootstrap \
  -H 'content-type: application/json' \
  -d '{"email":"you@example.com"}'
# → { "apiKey":"nv_live_…", "emailVerificationRequired":true }
# Save apiKey. Deploy on unverified trial — do not wait for OTP.
# AFTER the live URL: ask for the 6-digit code, then:
# curl -s -X POST https://api.novence.ai/v1/auth/verify-email \
#   -H 'content-type: application/json' \
#   -d '{"email":"you@example.com","code":"123456"}'
$ # 1) bootstrap  2) project  3) upload  4) deploy → live URL
# 5) THEN verify email OTP for Free quotas
# Live URL: https://{suffix}.novence.ai/

export KEY=nv_live_…
export API=https://api.novence.ai

curl -s -X POST $API/v1/projects \
  -H "authorization: Bearer $KEY" -H 'content-type: application/json' \
  -d '{"name":"launch"}'

# uploads → deployments → poll until status=live
# Or just: npx novence deploy ./dist
$ # MCP (streamable HTTP) — no nv_ key first. Same session.
https://api.novence.ai/mcp

# bootstrap(email) → create_project → upload → deploy
# Session adopts the key. Do not reconnect. Do not paste a key before bootstrap.
# Trial may skip checks (checkRuns: 0) and still go live.
# After live URL: verify_email. 2nd project / 402: checkout or mpp_upgrade (plan=pro).
# Spec: https://novence.ai/openapi.yaml
# Agent brief: https://novence.ai/llms-full.txt
js
$ import { Novence, bootstrapAccount, verifyEmail } from "@novence/sdk";

const { apiKey } = await bootstrapAccount("you@example.com");
const client = new Novence({ apiKey }); // defaults to https://api.novence.ai
const { project, url } = await client.projects.create({ name: "launch" });
await client.files.uploadDir(project.id, "./site");
await client.deployments.create(project.id);
// url → https://{suffix}.novence.ai/  (trial may skip checks — still live)

// AFTER the live URL:
await verifyEmail("you@example.com", process.env.VERIFY_CODE!);
python
$ pip install novence

from novence import Novence, bootstrap_account, verify_email

boot = bootstrap_account("you@example.com")
client = Novence(api_key=boot["apiKey"])
project = client.create_project("launch")
pid = project["project"]["id"]
client.upload_dir(pid, "./dist")
client.deploy(pid)
print(client.wait_for_deployment(pid)["liveUrl"])

# AFTER the live URL:
verify_email("you@example.com", "123456")
$ # Recurring — MCP checkout(plan=pro) or REST:
curl -s -X POST https://api.novence.ai/v1/billing/checkout \
  -H "authorization: Bearer $KEY" -H 'content-type: application/json' \
  -d '{"plan":"pro"}'
# → { "url": "https://checkout.stripe.com/…" }
# After 2nd project or a 402 — never after the first live URL.
# billing_portal is manage-only once already on Pro.

# Agent subscription (MPP / SPT)
curl -i -X POST https://api.novence.ai/v1/billing/mpp \
  -H "authorization: Bearer $KEY" -H 'content-type: application/json' \
  -d '{"plan":"pro"}'
```

Watch

An agent builds a static site, bootstraps a key, deploys, and lands on `https://{suffix}.novence.ai`. 75 seconds, no cuts to a dashboard.

Automate your workflow · Start today

npm install @novence/sdk or pip install novence. Typed clients over the same plane.

Streamable HTTP tools for Claude, Cursor, and any MCP client at /mcp.

For agents

**Fastest: npx novence deploy. Or the SDKs. Raw REST below.**

Use HTTPS — Canonical API `https://api.novence.ai`. Auth is Bearer `nv_live_…`. Lost key? Resend OTP then `POST /v1/auth/reissue-key`.

POST /v1/bootstrap returns an API key immediately. Do not wait for OTP — unverified trial still publishes.

Create a project, upload static website, deploy. Live URL is https://{suffix}.novence.ai/. Checks may be skipped on trial; still live.

Ask for the 6-digit OTP and POST /v1/auth/verify-email to unlock Free quotas. Required before Checkout or full free quotas.

CNAME www → fallback.novence.ai; apex URL-redirect to www. Checkout: POST /v1/billing/checkout. Agents: POST /v1/billing/mpp.

Agent loop

create_project

Bootstrap an account key, then open a project with a unique suffix.

→ projectId + upload session

Custom domains

Point **www** at Novence with a CNAME. Send bare-domain visitors to www with a registrar URL redirect. That is the recommended path for SSL and apex visitors.

| Type | Host | Value | 
|---|---|---|
| CNAME | www | fallback.novence.ai | 
| URL redirect | @ | https://www.example.com/ | 

What ships

Streamable HTTP MCP for projects, uploads, deploys, domains, and quotas. Errors tell the agent what to fix.

#1 MCP
Check workers run Lighthouse, axe, and link checks. Failed deploys stay off live until thresholds pass.

#2 Checks
Static sites are served globally at https://{suffix}.novence.ai/ after checks pass.

#3 Edge
npx novence, npm install @novence/sdk, or pip install novence. Same plane as REST, GraphQL, and MCP.

#4 APIs
Opt-in pageviews, 404s, referrers, and countries from the edge. No cookies, no script in your HTML. Read via dashboard, API or MCP.

#5 Analytics
Projects, storage, bandwidth, deploys, and form submissions are capped per plan. Overages meter on Pro and Scale.

#6 Quotas
HTML, CSS, and JS marketing sites. Embed Cal.com, Snipcart, or GA. Ship /data/*.json for menus and hours. No server-side apps.

#7 Scope
Free · Pro · Scale

Free for one live site. Pro for twenty client pitches. Scale when you're running a studio. Paid plans include a large pool before anything extra hits the invoice — see [examples](/examples) and [for agencies](/for-agencies).

Selected: **Pro** ($29 / mo)

After verify: MCP `checkout` or REST `POST https://api.novence.ai/v1/billing/checkout` with Bearer key and `{ "plan": "pro" }`. Opens Stripe Checkout. Use after a 2nd project or a 402. `billing_portal` is manage-only once already on Pro.

Same monthly subscription via Machine Payments Protocol: `POST https://api.novence.ai/v1/billing/mpp`. Returns HTTP 402, then settle with a Payment credential (e.g. link-cli). First month charged via SPT; renews until cancelled.
