Embed AI into any web app.
In lines of code.
Command palette, voice input, selection AI, and a DOM-grounded web agent — packaged as a single SDK that drops into your SaaS without rewriting your backend.
No backend rewrite, no extension required, no headless browser. Pure in-page JS.
dddk is what happens when you combine Raycast-style command palette, a DOM-grounded autonomous web agent, voice input, and inline selection AI — all designed for B2B SaaS to embed in their existing product.
Your users still see your product, your branding, your data. dddk just adds an AI layer on top.
AI operates your web pages
DOM-grounded, no screenshot needed. The agent sees only what the user can see — that's the security boundary. Click, type, navigate, fill forms.
- Customer service, form fill, multi-step workflows
- Per-action `requireConfirmation` for destructive ops
- Layered system prompt: brand + append + override
- Sitemap-aware nav, cross-tab session continuity
Select anything, ask anything
Inline toolbar pops up next to the user's selection. Translate, summarize, explain, rewrite — short LLM calls, cheap model, instant result.
- Built-in: translate / summarize / rewrite / explain
- Host adds custom tools by registering palette items
- Works on text, images, or multi-selected DOM
Everything one shortcut away
Ctrl+K opens it. Type or use prefix routing — ask ai:, search:, /skill, @entity, #tag.
Four skill types: Script (guided tour), Prompt (LLM template), Action (TypeScript callback), A2UI (declarative form).
Zero built-in business commands. Host registers everything — your domain, your data, your agent tools.
npm install @perhapxin/dddk @perhapxin/webagent
import { DotDotDuck, OpenAIProvider } from '@perhapxin/dddk';
const dddk = new DotDotDuck({
llm: new OpenAIProvider({ apiKey: '...' }),
siteName: 'YourSaaS',
});
dddk.mount();AGPL-3.0. Bring your own LLM.
Free under AGPL. Commercial license available for closed-source products. Host your own LLM endpoint — keys never touch our servers.
Drop AI into your SaaS today.
No backend rewrite. No extension. No headless browser.