Article summary — original
VoidZero and Cloudflare Open-Source Void for Full-Stack Vite Deployments
VoidZero has open-sourced Void, a unified suite consisting of an SDK, CLI, and Platform packaged as a single Vite plugin and npm package. The tooling turns Vite applications into full-stack Cloudflare Workers apps with end-to-end typing, automatic resource provisioning, and centralized team guardrails.
Void introduces an open-source SDK, CLI, and deployment Platform distributed under the single npm package 'void'.
The SDK automatically detects dependencies, provides end-to-end type safety from database to UI, and automatically provisions Cloudflare resources such as D1 and AI Gateway.
Void Platform runs on Cloudflare Workers for Platforms, allowing administrators to enforce resource limits, secure internal deployment access, and support vibe-coded internal apps.
The Void CLI integrates with Cloudflare's cf CLI and supports agentic workflows for deployment, log analysis, and debugging.
Unified Full-Stack Architecture
Void bridges the gap between frontend tooling and full-stack development by packaging an SDK, CLI, and deployment Platform into a single npm package. Operating as a Vite plugin, it transforms Vite projects into full-stack Cloudflare Workers applications with file-based routing, caching, and end-to-end type safety spanning from the database to UI components. It provides optional adapters for frameworks like React and Vue, while integrating with external frameworks such as Nuxt, SvelteKit, and Astro.
Automated Cloud Resource Provisioning
By importing modules such as void/db or void/ai, Void furnishes local development resources and automatically infers bindings during deployment to provision production resources like Cloudflare D1 databases and AI Gateway configurations. Developers can bypass complex infrastructure setups while retaining access to modern async routing, suspense-driven page updates, and third-party authentication and data libraries.
Self-Hosted Platform and Agent-Ready CLI
Void Platform enables organizations to self-host a shared deployment environment built on Cloudflare Workers for Platforms. This architecture allows companies to support internal vibe coding safely by letting administrators establish access controls and resource guardrails without granting raw cloud access to every user. The accompanying Void CLI, based on Cloudflare's cf CLI, supports project deployment, platform administration, and automated agent workflows for reading logs and debugging errors.
Saved original article
VoidZero's tools such as Vite, Vitest, Oxc, and Rolldown — bundled in one toolchain as [Vite+](https://viteplus.dev/) — have made frontend development faster, but building full-stack applications requires more than just a tooling stack. These applications need server routes, databases, local development environments, and a fast and easy way to deploy ideas to production.
We’re excited to open-source three new products that bring server routing, typed data access, and Cloudflare deployment into a unified Vite workflow.
The CLI deploys apps built with the SDK to the Platform. All three products are open-sourced as a single JavaScript package and Vite plugin that you can install via `npm install void`. With [Void](http://void.cloud/), you can build your server and client together, carry types from your database to the UI, and let Void automatically provision the Cloudflare resources that your app uses.
We originally set out to build a single, private platform for all users to deploy apps to. After [VoidZero joined Cloudflare](https://blog.cloudflare.com/voidzero-joins-cloudflare/), we adjusted our direction to open-source the platform and allow anyone to install because we saw a growing need: **companies want to encourage vibe-coded internal apps, but are concerned about security and do not want to give cloud access to every employee**. Void addresses this problem.
The Void Platform is fully open source and you can fork it and adapt it to your needs by integrating your company's systems, customize deployment workflows, build features for your customers, or make it work on other deployment platforms. Use the platform as it is, contribute improvements upstream, or fork it and build only the features you need. The open source code can be used out of the box or as a starting point.
As an admin of a Void Platform, you control access, set resource limits, inspect deployments and usage through the Void CLI or admin dashboard, and provide guardrails so everyone else can ship serious and vibe coded apps to the same shared platform.
By installing a Void Platform, your team or customers have a shared deployment environment in your Cloudflare account on top of [Workers for Platforms](https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/). Void Platform enables:
To self-host a Void platform, you need:
Then install Void as a cloud platform by running a single command:
Once your platform is set up, approved users can connect to it via the Void CLI for deployment.
`void connect https://api.orange-company.dev`
A user builds their app using the Void SDK, which is what powers Void Platform benefits like authentication, framework detection, resource provisioning, and more. In other words, Void Platform only works because of the accompanying SDK and CLI.
[Void](https://void.cloud) turns a Vite app into a full-stack Cloudflare Workers app. You or your agents can write code and Void will automatically infer resource bindings and provision resources such as databases, queues, or AI bindings during deployment.
To get started, add Void as a Vite plugin:
```
import { defineConfig } from "vite";
import { voidPlugin } from "void";
import { voidReact } from "@void/react/plugin";
export default defineConfig({
plugins: [voidPlugin(), voidReact()],
});
```
The Void SDK ships with adapters for popular JavaScript UI frameworks such as React and Vue, provides file-based API routing, pre-rendering, caching, islands, and end-to-end type safety from the database to your UI.
All of Void’s features are optional and composable. Void integrates with existing application frameworks such as Vinext, React Router, SvelteKit, Nuxt, TanStack Start, and Astro. You can use those frameworks for routing and rendering, while Void handles resource APIs using Hono, migrations, deployment, and authentication with Better Auth.
Let's take a look at building a server-rendered page, with types inferred from the database query through to the client:
```
// pages/blog.server.ts
import { defineHandler, type InferProps } from 'void';
import { db } from 'void/db';
import { posts } from '@schema';
export const loader = defineHandler(async () => ({
posts: await db.select().from(posts),
}));
export type Props = InferProps<typeof loader>;
```
```
// pages/blog.tsx
export default function Blog({ posts }: Props) {
return (
<ul>
{posts.map((post) => <li key={post.id}>{post.title}</li>)}
</ul>
);
}
```
By importing `void/db`, Void provides a local database to your app during development and makes `void deploy` provision D1 automatically for you in production. This also works for using AI through Cloudflare’s AI Gateway: just by importing `void/ai`, everything is set up automatically for you.
```
// routes/api/decide.ts
import { defineHandler } from 'void';
import { ai } from 'void/ai';
export const POST = defineHandler(async (c) => {
const { question } = await c.req.json();
const result = await ai.run('@cf/cloudflare/clef', {
model: 'clef',
state: {},
questions: {
decision: { type: 'noul', instructions: question },
},
});
const probability = result.answers.decision.noul;
return c.json({
answer: probability >= 0.5 ? 'yes' : 'no',
probability,
});
});
```
Void's React router is built for [Async React](https://react.dev/reference/react/useTransition#building-a-suspense-enabled-router), using transitions and Suspense to enable responsive navigation across screens. When you pair this router with a modern data framework such as [fate](https://fate.technology) and UI libraries such as [Astryx](https://astryx.atmeta.com/), you can coordinate navigation, data fetching and mutations through React's transitions, as well as actions and optimistic updates across your entire application. Together, these pieces let you build apps that feel synchronous on fast networks, gracefully fall back on slower ones, and keep interactions responsive during expensive rendering updates.
If a user does not need Void Platform’s team management features, they can use their own Cloudflare account. Void SDK also [deploys to Cloudflare directly](http://void.cloud/guide/deployment#deploy-to-cloudflare).
The Void CLI is the main interface for Void. The CLI manages the platform and deploys the app. It's built on top of the new [cf CLI](https://github.com/cloudflare/cf) and works well with agents.
With the Void CLI, you can ask your agent to debug failing requests, read deployment logs, analyze how your app is performing, or have them take care of the full lifecycle by deploying a finished app for you.
Once your app is ready to deploy to Cloudflare, you can run:
The first time you run `void deploy`, the CLI will prompt you to log into your Cloudflare account. Void builds your app using Vite, applies migrations, automatically provisions resources, and deploys to Cloudflare or a Void Platform. It can be used to handle the full lifecycle of your project such as building, deploying, and managing your resources and projects, for example:
Similar to how the CLI, and an agent by extension, can manage the entire lifecycle of a Void app, you can also use the CLI to manage a Void Platform:
VoidZero’s mission is to make JavaScript developers more productive than ever before. We brought Vite, Rolldown, Oxlint, Oxfmt, and Vitest together in [Vite+](https://viteplus.dev/) for development, bundling, code quality, and testing. Void extends that stack to full-stack application development, letting you and your agents build, test, and deploy entire applications.
We’ve been using the Void SDK, CLI, and Platform in production at VoidZero for the past several months and we are excited to see what you'll build with Void. Please share your feedback with us: