The Problem

Delivering Netlify deploys to clients adds invisible complexity

When you manage Netlify sites for multiple clients, token management, deploy tracking, rate limiting, and billing become a full-time side project.

🔑

Token Sprawl Across Clients

Every client has their own Netlify token. Storing them securely, rotating them, and revoking access without service interruption has no standard solution — until now.

📊

No Deploy Accounting

How many deploys did a client trigger this month? How many bytes were uploaded? What did that cost? Without a proxy layer, these answers require manual aggregation.

Rate Limit Collisions

Netlify enforces deploy rate limits per token. When multiple clients share infrastructure, a burst from one can throttle others — unless you have per-customer rate pacing built in.

7-Endpoint Pipeline

Every deploy follows a structured, trackable flow

KaixuPush breaks deployment into discrete API steps — each audited, rate-paced, and capped independently. No opaque magic, no silent failures.

POST
/.netlify/functions/push-init
Initialize a deploy. Send a path→SHA1 digest map for your file set. Netlify returns the list of required digests (changed files only). Enforces rate caps and deploy limits before starting.
PUT
/.netlify/functions/push-upload
Upload a single required file. Send the binary body with an X-Content-Sha1 header. Validates SHA1, enforces per-customer byte caps, and writes directly to the Netlify deploy via their API.
PUT
/.netlify/functions/push-upload-chunk
Upload a large file in binary chunks. Chunks are stored temporarily (48h retention) and assembled server-side before committing to Netlify. Supports arbitrary file sizes without client-side splitting logic.
POST
/.netlify/functions/push-upload-complete
Signal that all chunks for a large-file upload are sent. Triggers background assembly and commit to the active deploy. Returns immediately — assembly runs in a background job with auto-retry.
GET
/.netlify/functions/push-file-status
Check whether a specific file (by path or SHA1) has been received and committed to the active deploy. Use to build smart upload-only-if-missing logic on the client.
POST
/.netlify/functions/push-complete
Finalize the deploy. By default, queues async background completion (returns 202 immediately). Pass { wait: true } for synchronous completion with a 120s timeout. Records billing event on success.
GET
/.netlify/functions/push-status
Poll for final deploy state, SSL URL, and error (if any). Returns both gateway push record and live Netlify deploy state. Use to confirm the deploy is ready and retrieve the live URL.
Deploy Flow

From file set to live site in five steps

01
push-init

Send the Digest Map

Build a JSON map of { "path": "sha1hex" } for every file you want in the deploy. POST it to push-init with your Kaixu key. The gateway checks your caps, validates your project, creates a Netlify digest deploy, and returns the list of required file SHAs — only the files that actually changed.

02
push-upload / push-upload-chunk

Upload Required Files Only

For each SHA in the required list, PUT the file binary to push-upload with the matching X-Content-Sha1 header. For files over the inline upload threshold, use push-upload-chunk to stream in parts — the gateway assembles and commits them in a background job. Already-known SHAs are skipped automatically.

03
push-complete

Finalize the Deploy

Once all required files are uploaded, POST push-complete. The default path queues background finalization and returns 202 immediately — no waiting for Netlify's deploy pipeline. For synchronous finalization, pass { wait: true }; the gateway will poll Netlify for up to 120 seconds before returning the result.

04
push-status

Poll for Ready State

GET push-status with your pushId at any interval. The response includes the gateway's internal record plus a live Netlify deploy state refresh. When state is ready, the ssl_url field contains the final, SSL-provisioned deploy URL. Errors surface with the Netlify error_message for immediate diagnosis.

05
billing + audit

Billing Event Recorded Automatically

Every successful deploy writes a push_usage_event to the Kaixu Neon DB — deploy count, byte count, pricing version, and cost in cents. Monthly invoices aggregate automatically. Deploy history is queryable from the Gateway admin dashboard for any customer, any month.

Platform Features

Production-grade infrastructure for every deploy

🔒

Per-Customer Netlify Tokens

Each customer registers their own Netlify API token — stored encrypted in Neon. Deploys run under the customer's own Netlify account, within their own plan limits. No shared token risk.

🛑

Spend Caps + Rate Pacing

Set monthly deploy limits and byte caps per customer. Rate pacing enforces a maximum of 3 deploys per minute and 100 per day by default — configurable per deployment. Cap-exceeded requests return 402 immediately with remaining budget details.

♻️

Digest Deploys — Only Diff Uploads

The SHA1-based digest manifest means only files that have actually changed are uploaded to Netlify. Unchanged files are skipped automatically. A 500-file site with 10 changed files sends 10 PUT requests, not 500.

🔄

Async Completion + Auto-Retry

Background jobs handle deploy finalization. If a job fails (Netlify transient error, rate limit), the push-job-retry scheduler retries it every 5 minutes with exponential backoff — up to 10 attempts, configurable.

📦

Chunked Upload for Large Files

Files too large for a single serverless request are split and streamed in binary chunks. Each chunk is stored with 48h retention, assembled, and committed server-side. No client-side multi-part split logic required.

📋

Full Audit Trail

Every push-init, push-upload, and push-complete is logged to the gateway audit table with customer ID, key ID, project ID, byte count, and timestamp. Full deploy history queryable from the admin dashboard.

By the numbers

7
Dedicated Push Endpoints
3
Max Deploys/Min (default)
100
Max Deploys/Day (default)
10
Max Auto-Retry Attempts
48h
Chunk Temp Retention
120s
Sync Completion Timeout
Who It's For

Built for developers shipping at scale

🏢 Agency Developers
🤖 AI Site Generators
🔁 CI/CD Pipeline Builders
🛠️ Internal Dev-Ops Tools
📦 White-Label Site Platforms
🚀 Indie SaaS Builders
💼 Client Management Platforms
🌐 Multi-Tenant Web Apps
Comparison

KaixuPush vs. the alternatives

Feature KaixuPush Raw Netlify API Netlify CLI
Per-customer token isolation Manual
Spend caps + rate pacing
Digest-only uploads (diff) Manual impl. Partial
Chunked upload + auto-assembly
Async completion + job retry You build it
Metered billing + invoices
Full audit trail in Neon DB
Multi-customer deploy history You build it
SOL Ecosystem

KaixuPush inside the deployment stack

KaixuPush is the deployment layer. Pair it with the tools that generate the content and the UI that monitors the result.

skAIxU IDE Pro — Generate the Site

Use skAIxU IDE Pro to AI-generate the HTML, CSS, and JS for any site or page. When the output is ready, pipe the file map directly to a KaixuPush init call.

🚀

KaixuPush — Deploy It

Init → upload changed files → complete → poll status. Your site goes live on Netlify under the customer's own account — tracked, metered, and invoiced through the gateway.

📊

Gateway Admin — Monitor Everything

The Kaixu Gateway admin dashboard shows deploy history, chunk jobs, byte totals, and invoices per customer per month — no separate reporting tool needed.

Get Started

Ship sites to Netlify through
a pipeline you actually control

Per-customer tokens. Spend caps. Digest-only uploads. Async completion. Full billing history. KaixuPush is the deploy proxy you'd have to build yourself — already built.

Open KaixuPush → Get a Kaixu API Key

Kaixu Gateway account required. Talk to SOL →