Mandu Character

ஒரு Agent-நேட்டிவ்
ஃபுல்-ஸ்டாக் ஃபிரேம்வொர்க்

AI எவ்வளவு கோடு கொட்டினாலும், மண்டு வெடிக்காது. 🥟

Engineering decisions, handed to the framework. 100+ MCP tools · battle-tested Skills workflows · runtime Guard.

⚠️Warning

10,000 lines a day from coding agents,

who fixes it?

கட்டமைப்பு பாதுகாப்பு வேலிகள் இல்லாமல், AI-உருவாக்கிய குறியீடு விரைவாக தொழில்நுட்ப கடன் குழப்பமாக மாறுகிறது.

1
🔥

அம்ச பரவல்

AI முகவர்கள் நகல் பயன்பாடுகளை உருவாக்கி, இருக்கும் வடிவங்களை புறக்கணிக்கின்றன, உங்கள் குறியீட்டு தளத்தை வீங்கச் செய்கின்றன.

→ negotiate + Skills keep structure consistent

2
💀

அமைதியான தோல்விகள்

உருவாக்கப்பட்ட செயல்பாடுகளில் ஆழமாக புதைந்த தர்க்க பிழைகள் அடிப்படை சோதனைகளில் தேர்ச்சி பெறும் ஆனால் உற்பத்தியில் தோல்வியடையும்.

→ ATE writes tests and heals failures

3
🌀

கட்டமைப்பு நகர்வு

AI எல்லைகளைப் புரிந்துகொள்ளாமல் குறியீட்டை ஒட்டும்போது உங்கள் சுத்தமான கட்டமைப்பு சிதைவடைகிறது.

→ Guard enforces boundaries at runtime

Mandu solves this
முக்கிய கருத்துக்கள்

பாதுகாப்பானது. அளவிடக்கூடியது. கட்டமைக்கப்பட்டது.

📋

Already giving your agent the same instruction for the third time?

One contract file brings types, API, tests, and runtime validation with it. When the agent drifts, Guard stops it at runtime.

🛡️

Clean architecture, fell apart in a week?

Guard enforces layer boundaries, naming, and dependency rules at runtime. Six presets ready — FSD, Clean, Hexagonal, Atomic, CQRS, Mandu.

// layer violation detected

Agent "claude" blocked.

Reason: layer-violation: shared → features

Architecture preserved. ✅

🧩

Slot-அடிப்படை கட்டமைப்பு

தனிமைப்படுத்தப்பட்ட செயல்பாட்டு சூழல்கள். முழுமையையும் உடைக்காமல் உங்கள் அமைப்பின் பகுதிகளை மாற்றுங்கள்.

🤖

Agent-நேட்டிவ் (MCP)

Model Context Protocol க்காக உருவாக்கப்பட்டது. முகவர்கள் உங்கள் குறியீட்டு தளக் கட்டமைப்பை இயல்பாகப் புரிந்துகொள்கின்றன.

🧪

Still writing tests yourself?

ATE auto-generates Playwright specs from your routes. Pick an oracle level (L0–L3, smoke to contract). When a test fails, the LLM suggests a repair diff.

One click to undo an agent's mistake.

Snapshot with `mandu change begin` before the agent edits. Rollback if it's wrong, commit if it's right. File-level atomic recovery — no branches.

How is this different from Next · Remix · Hono?

Mandu vs
See for yourself

6-line handler, 8-line contract.

A 30-line file becomes two files, 14 lines total. Same /api/signup.

app/api/signup/route.ts
30 lines
import { z } from "zod";
import { NextRequest, NextResponse } from "next/server";
import { db, hash, isRateLimited } from "@/lib";

const SignupSchema = z.object({
  email: z.string().email(),
  password: z.string().min(8),
});

export async function POST(req: NextRequest) {
  const csrf = req.headers.get("x-csrf-token");
  if (csrf !== req.cookies.get("__csrf")?.value)
    return NextResponse.json({ error: "csrf" }, { status: 403 });
  if (await isRateLimited(req.ip))
    return NextResponse.json({ error: "rate" }, { status: 429 });

  const raw = await req.json().catch(() => null);
  const parsed = SignupSchema.safeParse(raw);
  if (!parsed.success)
    return NextResponse.json({ error: parsed.error.flatten() }, { status: 400 });

  try {
    const user = await db.user.create({
      data: {
        email: parsed.data.email,
        password: await hash(parsed.data.password),
      },
    });
    return NextResponse.json({ id: user.id }, { status: 201 });
  } catch (err) {
    if ((err as any).code === "P2002")
      return NextResponse.json({ error: "duplicate" }, { status: 409 });
    return NextResponse.json({ error: "internal" }, { status: 500 });
  }
}
Next.js · hand-wiredCSRF · rate limit · auth · error mapping — all manual
app/api/signup/route.ts
6 lines
import { Mandu } from "@mandujs/core";
import { SignupContract } from "@/spec/contracts/signup.contract";

export default Mandu.filling(SignupContract, async (ctx) =>
  ctx.ok(await ctx.db.user.create({ ...ctx.body }))
).guard("auth").rateLimit({ rpm: 10 });
Mandu · Filling handlerCSRF · rate · auth composed via middleware chain
spec/contracts/signup.contract.ts
8 lines
import { defineContract } from "@mandujs/core/contract";
import { z } from "zod";

export const SignupContract = defineContract({
  method: "POST",
  request: z.object({ email: z.string().email(), password: z.string().min(8) }),
  response: z.object({ id: z.string() }),
});
Mandu · ContractTypes · OpenAPI · tests derived automatically
Deploy

One command, 7 destinations.

Mandu generates platform configs for you. wrangler.toml · vercel.json · Dockerfile · …

$mandu deploy --to=<target>
Cloudflare logoCloudflareEdge runtime
Vercel logoVercelEdge runtime
Netlify logoNetlifyEdge runtime
Deno Deploy logoDeno DeployEdge runtime
Fly.io logoFly.ioContainer
Railway logoRailwayContainer
Render logoRenderContainer
Docker logoDockerContainer

இணக்கமானது

Bun logoBun
TypeScript logoTypeScript
React logoReact
Postgres logoPostgres
SQLite logoSQLite
OpenAI logoOpenAI
Anthropic logoAnthropic
Mandu Character

சமையலறையில் சேருங்கள்

Mandu திறந்த மூலம் மற்றும் சமூகம் இயக்குகிறது. AI மேம்பாட்டைப் பாதுகாப்பாக்கும் Guard களை உருவாக்க எங்களுக்கு உதவுங்கள்.