Brainiall NLP
Sentiment, toxicity, entity extraction, PII, translation, summary, QA, fraud scoring, safety audit.
Crawler Summary
OpenClaw agent: inngest-hitl Inngest Human-in-the-Loop Research System A Next.js application that implements an AI-powered research workflow with human approval steps using Inngest for orchestration, A2A Protocol for agent communication, and OpenAI for content generation. Features - π€ **AI-Powered Research**: Uses OpenAI GPT-4 to generate research plans and execute research - π₯ **Human-in-the-Loop**: Requires human approval at key decision poi Published capability contract available. No trust telemetry is available yet. 1 GitHub stars reported by the source. Last updated 2/24/2026.
Freshness
Last checked 2/22/2026
Best For
Contract is available with explicit auth and schema references.
Not Ideal For
inngest-hitl is not ideal for teams that need stronger public trust telemetry, lower setup complexity, or more explicit contract coverage before production rollout.
Evidence Sources Checked
editorial-content, capability-contract, runtime-metrics, public facts pack
OpenClaw agent: inngest-hitl Inngest Human-in-the-Loop Research System A Next.js application that implements an AI-powered research workflow with human approval steps using Inngest for orchestration, A2A Protocol for agent communication, and OpenAI for content generation. Features - π€ **AI-Powered Research**: Uses OpenAI GPT-4 to generate research plans and execute research - π₯ **Human-in-the-Loop**: Requires human approval at key decision poi
Public facts
7
Change events
1
Artifacts
0
Freshness
Feb 22, 2026
Published capability contract available. No trust telemetry is available yet. 1 GitHub stars reported by the source. Last updated 2/24/2026.
Trust score
Unknown
Compatibility
MCP
Freshness
Feb 22, 2026
Vendor
Nyuta01
Artifacts
0
Benchmarks
0
Last release
0.1.0
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Published capability contract available. No trust telemetry is available yet. 1 GitHub stars reported by the source. Last updated 2/24/2026.
Setup snapshot
git clone https://github.com/nyuta01/inngest-hitl.gitSetup complexity is MEDIUM. Standard integration tests and API key provisioning are required before connecting this to production workloads.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Nyuta01
Protocol compatibility
MCP
Auth modes
mcp, api_key
Machine-readable schemas
OpenAPI or schema references published
Adoption signal
1 GitHub stars
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
bash
git clone https://github.com/nyuta01/inngest-hitl.git cd inngest-hitl
bash
pnpm install
bash
cp .env.example .env.local
text
OPENAI_API_KEY=your-openai-api-key INNGEST_DEV=1 INNGEST_BASE_URL=http://localhost:8288
bash
docker compose up
bash
pnpm run dev
Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB MCP
Editorial quality
ready
OpenClaw agent: inngest-hitl Inngest Human-in-the-Loop Research System A Next.js application that implements an AI-powered research workflow with human approval steps using Inngest for orchestration, A2A Protocol for agent communication, and OpenAI for content generation. Features - π€ **AI-Powered Research**: Uses OpenAI GPT-4 to generate research plans and execute research - π₯ **Human-in-the-Loop**: Requires human approval at key decision poi
A Next.js application that implements an AI-powered research workflow with human approval steps using Inngest for orchestration, A2A Protocol for agent communication, and OpenAI for content generation.

lib/a2aClone the repository
git clone https://github.com/nyuta01/inngest-hitl.git
cd inngest-hitl
Install dependencies
pnpm install
Set up environment variables
cp .env.example .env.local
Edit .env.local and add your OpenAI API key:
OPENAI_API_KEY=your-openai-api-key
INNGEST_DEV=1
INNGEST_BASE_URL=http://localhost:8288
Start Inngest Dev Server
docker compose up
Start the development server
pnpm run dev
Open the application
βββββββββββββββ ββββββββββββββββ βββββββββββββββ
β Next.js ββββββΆβ A2A ββββββΆβ Inngest ββββββΆβ OpenAI β
β Frontend βββββββ Protocol βββββββ Workflow βββββββ GPT-4 β
βββββββββββββββ ββββββββββββββββ βββββββββββββββ βββββββββββββββ
β β β
β β β
βΌ βΌ βΌ
βββββββββββββββ ββββββββββββββββ βββββββββββββββββββ
β SSE β β Database β β HTTP Client β
β Events β β (Drizzle) β β Integration β
βββββββββββββββ ββββββββββββββββ βββββββββββββββββββ
This application showcases a complete integration between the A2A Protocol and Inngest workflows:
defineExecutorcreateA2AHttpClientsrc/
βββ app/ # Next.js app directory
β βββ api/a2a/ # A2A API route handlers
βββ components/ # React components
βββ db/ # Database schema and configuration
βββ executors/ # A2A executor implementations
β βββ a2a.ts # Shared A2A instance with SSE support
β βββ research-a2a/ # Research workflow executors
βββ hooks/ # Custom React hooks
βββ inngest/ # Inngest workflow functions
βββ lib/ # Utility functions
β βββ a2a/ # Complete A2A Protocol implementation
β βββ core.ts # Core A2A functionality
β βββ client.ts # HTTP client for remote A2A
β βββ executor.ts # Executor definition helper
β βββ schemas/ # Zod schemas for A2A types
β βββ storage/ # Storage adapters (Memory/Drizzle)
β βββ integrations/ # Framework integrations (Next.js/Redis)
βββ types/ # TypeScript type definitions
This project demonstrates a complete integration between the A2A Protocol and Inngest workflows for Human-in-the-Loop AI systems.
Basic A2A: http://localhost:3000/a2a
Research Workflow V1: http://localhost:3000/research-a2a
Research Workflow V2: http://localhost:3000/research-a2a-v2
// 1. A2A Executor starts Inngest workflow
const researchStartExecutor = defineExecutor({
extension: 'https://inngest-hitl.com/research/v2/start',
input: z.object({
theme: z.string(),
depth: z.enum(['basic', 'detailed']).optional()
}),
output: z.object({
status: z.enum(['processing', 'input-required']),
requestId: z.string().optional()
}),
execute: async (input, context) => {
// Start Inngest workflow with task context
await inngest.send({
name: 'research.a2a.v2.start',
data: {
taskId: context.taskId, // Key: Pass task ID
contextId: context.contextId,
theme: input.theme,
depth: input.depth || 'basic'
}
})
// Update status
await context.updateStatus(context.taskId!, context.contextId!, {
state: 'input-required',
timestamp: new Date().toISOString()
})
return { status: 'input-required' as const }
}
})
// 2. Inngest workflow uses HTTP client for A2A communication
const researchWorkflow = inngest.createFunction(
{ id: 'research-with-a2a-v2' },
{ event: 'research.a2a.v2.start' },
async ({ event, step }) => {
const { taskId, contextId, theme } = event.data
// Create A2A HTTP client
const httpClient = createA2AHttpClient({
baseUrl: process.env.A2A_BASE_URL || 'http://localhost:3000/api/a2a'
})
// Use A2A context for status updates
await httpClient.updateStatus(taskId, contextId, {
state: 'working',
timestamp: new Date().toISOString()
})
// Generate research plan
const plan = await step.run('generate-plan', async () => {
return await generatePlan(theme)
})
// Save plan as artifact
await httpClient.updateArtifact(taskId, contextId, {
artifactId: crypto.randomUUID(),
name: 'Research Plan',
description: `Research plan for: ${theme}`,
parts: [{
kind: 'data' as const,
data: plan
}]
})
// Wait for human approval
const approval = await step.waitForEvent('wait-for-approval', {
event: 'research.a2a.v2.plan-feedback',
timeout: '30m',
if: `async.data.taskId == "${taskId}"`
})
// Continue workflow...
}
)
// 3. Feedback executor sends events to Inngest
const planApprovalExecutor = defineExecutor({
extension: 'https://inngest-hitl.com/research/v2/plan-approval',
input: z.object({
requestId: z.string(),
decision: z.enum(['approve', 'reject']),
feedback: z.string().optional()
}),
execute: async (input, context) => {
// Send feedback to Inngest
await inngest.send({
name: 'research.a2a.v2.plan-feedback',
data: {
taskId: context.taskId, // Same task ID
decision: input.decision,
feedback: input.feedback
}
})
// Update task status
if (input.decision === 'approve') {
await context.updateStatus(context.taskId!, context.contextId!, {
state: 'working',
timestamp: new Date().toISOString()
})
} else {
await context.updateStatus(context.taskId!, context.contextId!, {
state: 'completed',
timestamp: new Date().toISOString()
})
}
}
})
The lib/a2a directory contains a complete, reusable implementation of the A2A Protocol:
import { createA2A, defineExecutor, drizzleAdapter } from '@/lib/a2a'
import { z } from 'zod'
// 1. Define an executor with type-safe input/output
const myExecutor = defineExecutor({
extension: 'https://example.com/my-executor/v1',
input: z.object({
prompt: z.string()
}),
output: z.object({
result: z.string(),
confidence: z.number()
}),
execute: async (input, context) => {
// Update status
await context.updateStatus(context.taskId!, context.contextId!, {
state: 'working',
timestamp: new Date().toISOString()
})
// Process and return typed result
return {
result: `Processed: ${input.prompt}`,
confidence: 0.95
}
}
})
// 2. Create A2A instance with storage
const a2a = createA2A({
storage: drizzleAdapter(db, { provider: 'sqlite' })
})
// 3. Register executors
a2a.register(myExecutor)
The library supports multiple storage backends:
// Drizzle adapter (recommended for all environments)
import { drizzleAdapter } from '@/lib/a2a'
const a2a = createA2A({
storage: drizzleAdapter(db, {
provider: 'sqlite', // or 'postgresql'
schema: {
tasks: schema.tasks,
messages: schema.messages,
artifacts: schema.artifacts
}
})
})
// Note: Memory adapter is available for internal use only
// For development/testing, use SQLite with Drizzle adapter
Real-time updates are built-in with optional Redis support:
// Basic SSE (in-memory)
export const { POST, GET } = nextjsIntegration(a2a)
// Redis SSE (for scale)
import Redis from 'ioredis'
const redis = new Redis(process.env.REDIS_URL)
export const { POST, GET } = nextjsIntegration(a2a, {
sse: {
mode: 'redis',
redis: redis
}
})
pnpm run dev # Start development server
pnpm run build # Build for production
pnpm run start # Start production server
pnpm run lint # Run ESLint
src/inngest/functions/research.tstailwind.config.jsBuild the application:
pnpm run build
Set production environment variables
Deploy to your preferred hosting platform (Vercel, AWS, etc.)
Configure Inngest for production use
View detailed logs in:
MIT License - see LICENSE file for details
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
ready
Auth
mcp, api_key
Streaming
No
Data region
global
Protocol support
Requires: mcp, lang:typescript
Forbidden: none
Guardrails
Operational confidence: medium
curl -s "https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/contract"
curl -s "https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Sentiment, toxicity, entity extraction, PII, translation, summary, QA, fraud scoring, safety audit.
Agent-callable B2B SaaS directory: capability-structured, continuously verified listings.
Loan & mortgage calculator, compound interest, ROI, crypto prices, FX conversion for AI agents.
Structured website and review evidence for AI-assisted local-business shortlisting.
Contract JSON
{
"contractStatus": "ready",
"authModes": [
"mcp",
"api_key"
],
"requires": [
"mcp",
"lang:typescript"
],
"forbidden": [],
"supportsMcp": true,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": "https://github.com/nyuta01/inngest-hitl#input",
"outputSchemaRef": "https://github.com/nyuta01/inngest-hitl#output",
"dataRegion": "global",
"contractUpdatedAt": "2026-02-24T19:44:53.627Z",
"sourceUpdatedAt": "2026-02-24T19:44:53.627Z",
"freshnessSeconds": 19632615
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/snapshot",
"contractUrl": "https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/contract",
"trustUrl": "https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/trust"
},
"curlExamples": [
"curl -s \"https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/snapshot\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/contract\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"MCP"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_MCP",
"generatedAt": "2026-10-10T01:15:09.420Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "MCP",
"type": "protocol",
"support": "supported",
"confidenceSource": "contract",
"notes": "Confirmed by capability contract"
}
],
"flattenedTokens": "protocol:MCP|supported|contract"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "MCP",
"href": "https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:44:53.627Z",
"isPublic": true
},
{
"factKey": "auth_modes",
"category": "compatibility",
"label": "Auth modes",
"value": "mcp, api_key",
"href": "https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:44:53.627Z",
"isPublic": true
},
{
"factKey": "schema_refs",
"category": "artifact",
"label": "Machine-readable schemas",
"value": "OpenAPI or schema references published",
"href": "https://github.com/nyuta01/inngest-hitl#input",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:44:53.627Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Nyuta01",
"href": "https://github.com/nyuta01/inngest-hitl",
"sourceUrl": "https://github.com/nyuta01/inngest-hitl",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-24T19:43:14.176Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1 GitHub stars",
"href": "https://github.com/nyuta01/inngest-hitl",
"sourceUrl": "https://github.com/nyuta01/inngest-hitl",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-24T19:43:14.176Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/mcp-nyuta01-inngest-hitl/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub Β· GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to inngest-hitl and adjacent AI workflows.