Reverse-CAPTCHA for the age of AI agents. Verifies that visitors are bots, not humans. Drop into any framework in one line.
Traditional CAPTCHAs block bots. imrobot flips the script — only programmatic agents can solve these challenges.
A random seed and a chain of string operations (reverse, base64, rot13, hex...) are generated. The structured challenge is embedded in the DOM as JSON.
AI agents read the data-imrobot-challenge attribute, parse the pipeline, and execute each operation in sequence — instantly.
The agent submits the computed result. The component verifies it against the challenge hash and emits a signed token. No server needed.
Drop it in with a single import. Works everywhere.
import { ImRobot } from 'imrobot/react'
function App() {
return (
<ImRobot
difficulty="medium"
theme="light"
onVerified={(token) => {
console.log('Robot verified!', token)
}}
/>
)
}<script setup>
import { ImRobot } from 'imrobot/vue'
function handleVerified(token) {
console.log('Robot verified!', token)
}
</script>
<template>
<ImRobot
difficulty="medium"
theme="light"
@verified="handleVerified"
/>
</template><script>
import ImRobot from 'imrobot/svelte'
</script>
<ImRobot
difficulty="medium"
theme="light"
onVerified={(token) =>
console.log('Robot verified!', token)
}
/><script type="module">
import { register } from 'imrobot/web-component'
register() // registers <imrobot-widget>
</script>
<imrobot-widget
difficulty="medium"
theme="light">
</imrobot-widget>
<script>
document.querySelector('imrobot-widget')
.addEventListener('imrobot-verified', (e) => {
console.log('Token:', e.detail)
})
</script>import {
generateChallenge,
solveChallenge,
verifyAnswer,
} from 'imrobot/core'
// Generate
const challenge = generateChallenge({ difficulty: 'medium' })
// Solve (what an AI agent does)
const answer = solveChallenge(challenge)
// Verify
const isValid = verifyAnswer(challenge, answer)
console.log(isValid) // truePurpose-built for the agent-first web.
React, Vue, Svelte, Angular, or vanilla JS. One package covers everything via native Web Components.
Challenge generation and verification are fully client-side. No sessions, no cookies, no API calls.
Deterministic string pipelines are trivially solvable by any programmatic agent in milliseconds.
Multi-step transforms (base64, rot13, hex, reverse...) are practically impossible to compute manually.
Built-in light and dark themes. CSS-in-JS styles with full customization support.
~6 KB core, zero runtime dependencies. Tree-shakeable ESM and CJS builds with full TypeScript types.