Uncensored AI.
Ask anything.
107 models. Three tiers - you pick. Switch per conversation. Get the actual answer, not the approved version.
You ask.
It ships.
Every tool Thea builds appears on your dashboard instantly - fully usable UI, CLI command, AI tool, cron job. SSH, email, browser automation. Your machine. Your data.
Write once.
Ship everywhere.
One TypeScript definition becomes a custom web UI, CLI command, AI tool, MCP server, mobile screen, cron job - automatically. Same contract. Zero rewrites. Fork it, own it.
Publish. Refer.
Earn.
Build skills. Earn 15% when someone signs up through yours. Refer anyone - 10% of every payment, forever. Their network pays you too.
Your AI builds new tools for itself.
Add an endpoint and it immediately becomes a custom interactive UI, CLI command, AI-callable tool, MCP server tool, and scheduled job. The stack is recursive - Claude Code builds next-vibe using next-vibe.
One definition. 13 platforms. Zero drift.
Write one endpoint definition. Get an interactive web UI, CLI command, AI tool, MCP server, cron job, WebSocket, mobile screen, desktop app, admin panel, agent skill, and more - automatically. Type-safe end-to-end. Role-controlled access. Zero boilerplate.
const { POST } = createEndpoint({
method: Methods.POST,
path: ["greet"],
allowedRoles: [UserRole.PUBLIC, UserRole.CUSTOMER, UserRole.ADMIN],
title: "Greet user",
description: "Returns a personalised greeting",
icon: "hand-wave",
tags: ["greetings"],
fields: objectField({
type: WidgetType.CONTAINER,
title: "Greeting form",
usage: { request: "data", response: true },
children: {
name: requestField({
schema: z.string().min(1).max(100),
type: WidgetType.FORM_FIELD,
fieldType: FieldDataType.TEXT,
label: "Your name",
placeholder: "e.g. Alice",
}),
message: responseField({
schema: z.string(),
type: WidgetType.ALERT,
}),
submitButton: widgetField({
type: WidgetType.SUBMIT_BUTTON,
text: "Say hello",
}),
},
}),
examples: {
requests: { simpleGreeting: { name: "Alice" } },
responses: { simpleGreeting: { message: "Hello, Alice!" } },
},
});Add a path. The REST endpoint exists.
No routing config. No controllers. The moment you define a path and schema, the endpoint is live at /api/[locale]/[path]. Role checks, validation, and error shapes happen before your code runs.
const res = await fetch("/api/en-PL/greet", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ name: "Alice" }),
});
const { message } = await res.json();
// message → "Hello, Alice!"🌍REST API
Standard HTTP, always available
Your AI builds new tools for itself
Add an endpoint → it immediately becomes an AI-callable tool, CLI command, live web UI, and scheduled job. The stack is recursive. Claude Code builds next-vibe using next-vibe.
One definition. Every platform.
Web UI, CLI, AI tool, MCP server, mobile screen, cron job — automatically. Fork it. Own it.