Build on Tanat AI Infrastructure.
Whether you are embedding a no-code website widget, integrating via Cursor / Lovable / Bolt / v0, or building custom multi-agent workflows over REST and Model Context Protocol (MCP), everything runs on the same tenant-isolated infrastructure.
How Tanat is structured
Tanat cleanly separates your business organization from the AI agents and channels you deploy:
- Tenant (Workspace): Your isolated business environment holding shared knowledge, team members, API keys, and governance policies.
- Agents: Specialized AI personas (Support, Sales, Booking, HR, Operations, Finance, Custom) with versioned instructions and tool permissions.
- Installations & Channels: A deployment binding an Agent to a surface (Website Widget, WhatsApp, Telegram, Slack, Shopify, or Custom API).
- Knowledge & Memory: Approved business sources (FAQs, policies, URLs, documents) plus persistent per-customer memories recalled across sessions.
Embed on any website with one script tag
The Tanat widget renders inside an isolated Shadow DOM container so your website’s CSS never collides with the chat interface. It authenticates using an origin-locked publishable key (pk_...) that can only open sessions and send messages from your allowed domains.
<script src="https://api.tanat.space/embed/tanat-widget.js" data-key="pk_live_your_publishable_key" data-agent="inst_your_installation_id" data-api="https://api.tanat.space" data-theme="light" data-accent="#0C0D0B" data-position="bottom-right" data-welcome="Hi! How can I help you today?" defer ></script>
Programmatic Control: Once loaded, you can call window.TanatWidget.open(), window.TanatWidget.close(), or window.TanatWidget.toggle() from any button on your page.
Integrate into React, Next.js, Remix, or Vite
Drop the script component into your root layout or page. No build plugins or heavy client bundles required.
import Script from 'next/script';
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
{children}
<Script
src="https://api.tanat.space/embed/tanat-widget.js"
data-key={process.env.NEXT_PUBLIC_TANAT_PUBLISHABLE_KEY}
data-agent={process.env.NEXT_PUBLIC_TANAT_INSTALLATION_ID}
data-api="https://api.tanat.space"
data-theme="light"
strategy="afterInteractive"
/>
</body>
</html>
);
}Let the agent know which logged-in customer it is helping
For account-specific workflows (like order lookups, persistent memory recall, or refund requests), your backend can sign the customer’s ID with HMAC-SHA256 so it cannot be spoofed in the browser.
// Server-side (Node.js / Next.js Route Handler)
const res = await fetch('https://api.tanat.space/api/v1/platform/verify-user-token', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.TANAT_SECRET_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
installation_id: 'inst_your_installation_id',
user_id: currentUser.id,
}),
});
const { data } = await res.json();
// Pass data.user_id and data.user_signature to the widget or public session APIAI-Native Integration via /llms.txt and /api/mcp
Tanat is built for teams shipping with AI coding assistants:
GET /llms.txt— Machine-readable guide containing exact widget attributes, public session endpoints, and authenticated REST schemas.GET /api/mcp— Model Context Protocol discovery manifest exposingtanat_open_session,tanat_send_message,tanat_add_knowledge, andtanat_create_payment_intent.- In your Workspace Dashboard under Developers & MCP, click Copy Vibecoder Prompt to get a ready-to-paste prompt pre-filled with your real
pk_...andinst_...IDs.
Full programmatic control over agents, knowledge, and actions
Authenticate server-to-server requests with Authorization: Bearer tnt_....
// 1. Open a conversation session
const sessionRes = await fetch('https://api.tanat.space/api/v1/sessions', {
method: 'POST',
headers: {
Authorization: 'Bearer tnt_your_secret_key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
installation_id: 'inst_your_installation_id',
user_id: 'customer_4821',
}),
});
const { data: session } = await sessionRes.json();
// 2. Send a message (grounded in workspace knowledge + customer memory)
const msgRes = await fetch(`https://api.tanat.space/api/v1/sessions/${session.id}/messages`, {
method: 'POST',
headers: {
Authorization: 'Bearer tnt_your_secret_key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
content: 'What is your SLA credit policy for delayed shipments?',
}),
});
const { data: reply } = await msgRes.json();
console.log(reply.content, reply.sources_used, reply.proposed_action);Security & Isolation Guarantees
- Hardware-Attested TEE Inference: AI inference runs on NEAR AI Cloud inside Trusted Execution Environments.
- Publishable vs. Secret Keys: Publishable keys (
pk_...) are strictly scoped to opening sessions and sending messages from allowlisted origins. They can never approve actions, read other sessions, or modify workspace settings. - Human-in-the-Loop Approvals: High-impact and financial actions remain in
pendingstate until an authorized operator approves them.