Crawler Summary

ai-docs-assistant answer-first brief

Local FastAPI + RAG service for API documentation generation and semantic search using Ollama, Qdrant, CrewAI, and LangChain. ai-docs-assistant $1 Local FastAPI service for generating, storing, and semantically searching API documentation. The current implementation lives in backend/ and uses a layered architecture with separate API, indexer, and background generation worker entrypoints. What the service does - Accepts documentation generation requests via POST /generate - Stores generation jobs in Redis and returns a job id immediately - P Capability contract not published. No trust telemetry is available yet. Last updated 5/31/2026.

Freshness

Last checked 5/31/2026

Best For

ai-docs-assistant is best for crewai, multi-agent workflows where OpenClaw compatibility matters.

Not Ideal For

Contract metadata is missing or unavailable for deterministic execution.

Evidence Sources Checked

editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack

Claim this agent
Agent DossierGitHubSafety: 66/100

ai-docs-assistant

Local FastAPI + RAG service for API documentation generation and semantic search using Ollama, Qdrant, CrewAI, and LangChain. ai-docs-assistant $1 Local FastAPI service for generating, storing, and semantically searching API documentation. The current implementation lives in backend/ and uses a layered architecture with separate API, indexer, and background generation worker entrypoints. What the service does - Accepts documentation generation requests via POST /generate - Stores generation jobs in Redis and returns a job id immediately - P

OpenClawself-declared

Public facts

3

Change events

0

Artifacts

0

Freshness

May 31, 2026

Verifiededitorial-contentNo verified compatibility signals

Capability contract not published. No trust telemetry is available yet. Last updated 5/31/2026.

Trust evidence available

Trust score

Unknown

Compatibility

OpenClaw

Freshness

May 31, 2026

Vendor

Mrkazzila

Artifacts

0

Benchmarks

0

Last release

Unpublished

Executive Summary

Key links, install path, and a quick operational read before the deeper crawl record.

Verifiededitorial-content

Summary

Capability contract not published. No trust telemetry is available yet. Last updated 5/31/2026.

Setup snapshot

git clone https://github.com/mrKazzila/ai-docs-assistant.git
  1. 1

    Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.

  2. 2

    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.

Evidence Ledger

Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.

Verifiededitorial-content
Vendor (1)

Vendor

Mrkazzila

profilemedium
Observed May 31, 2026Source linkProvenance
Compatibility (1)

Protocol compatibility

OpenClaw

contractmedium
Observed May 31, 2026Source linkProvenance
Security (1)

Handshake status

UNKNOWN

trustmedium
Observed unknownSource linkProvenance

Release & Crawl Timeline

Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.

Self-declaredagent-index

Artifacts Archive

Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.

Self-declaredGITHUB OPENCLEW

Extracted files

0

Examples

6

Snippets

0

Languages

python

Executable Examples

text

.
├── README.md
├── README.ru.md
└── backend/
    ├── docker-compose.yml
    ├── Dockerfile
    ├── docs/
    ├── env/
    ├── just/
    ├── logs/
    ├── lora-adapter/
    ├── pyproject.toml
    ├── qdrant_storage/
    ├── redis_data/
    ├── src/
    └── uv.lock

bash

cd backend

bash

uv sync

bash

ollama pull mxbai-embed-large

env

OLLAMA_MODEL=ollama/my_api_docs

bash

just run-all

Docs & README

Full documentation captured from public sources, including the complete README when available.

Self-declaredGITHUB OPENCLEW

Docs source

GITHUB OPENCLEW

Editorial quality

ready

Local FastAPI + RAG service for API documentation generation and semantic search using Ollama, Qdrant, CrewAI, and LangChain. ai-docs-assistant $1 Local FastAPI service for generating, storing, and semantically searching API documentation. The current implementation lives in backend/ and uses a layered architecture with separate API, indexer, and background generation worker entrypoints. What the service does - Accepts documentation generation requests via POST /generate - Stores generation jobs in Redis and returns a job id immediately - P

Full README

ai-docs-assistant

Read this README in Russian

Local FastAPI service for generating, storing, and semantically searching API documentation. The current implementation lives in backend/ and uses a layered architecture with separate API, indexer, and background generation worker entrypoints.

What the service does

  • Accepts documentation generation requests via POST /generate
  • Stores generation jobs in Redis and returns a job id immediately
  • Processes queued generation jobs in a separate background worker
  • Exposes generation job status and result via GET /generate/{job_id}
  • Stores Markdown documents in backend/docs/
  • Indexes documents in Qdrant for semantic search
  • Finds the most relevant documentation via POST /search using multi-candidate selection and relevance filtering
  • Checks service dependencies and RAG readiness via GET /health

Architecture

The backend is split into explicit layers:

  • presentation exposes the FastAPI REST API and request/response schemas
  • application contains DTOs, ports, use cases, and application services
  • domain contains document policies, job entities, and enums
  • infrastructure implements storage, vector search, Redis-backed queues and repositories, health probing, and CrewAI-based generation
  • entrypoints contains runtime entrypoints for the API and workers
  • config contains settings, modular dependency factories, and logging setup

The service uses these runtime components:

  • FastAPI for the HTTP API
  • Redis for generation-job queueing and job state storage
  • generation-worker for background processing of queued generation jobs
  • CrewAI to run generator and validator agents inside CrewAIDocumentGenerator
  • Ollama for the LLM and embedding model
  • Qdrant for vector storage and semantic search
  • local filesystem storage in backend/docs/ for the Markdown knowledge base
  • SearchResultSelector to choose the best candidate from multiple search hits
  • SearchRelevancePolicy to reject semantically inconsistent search results

Important runtime behavior:

  • The API entrypoint is python -m ai_docs_assistant.entrypoints.application
  • The knowledge-base indexing worker is python -m ai_docs_assistant.entrypoints.workers.indexer
  • The background generation worker is python -m ai_docs_assistant.entrypoints.workers.generation
  • Seed documents are indexed by the separate indexer worker, not implicitly during API startup
  • Generation flow is asynchronous: API creates a job, Redis stores the queue entry and job state, the worker processes the job, and the API exposes the result by job id
  • Search flow is multi-step: fetch several Qdrant candidates, choose the best match, then validate relevance before returning content

Stack

  • Python 3.13
  • FastAPI
  • Uvicorn
  • Redis
  • CrewAI
  • Ollama
  • Qdrant
  • LangChain (langchain-ollama, langchain-qdrant)
  • Structlog
  • uv
  • just
  • Docker Compose

Project structure

.
├── README.md
├── README.ru.md
└── backend/
    ├── docker-compose.yml
    ├── Dockerfile
    ├── docs/
    ├── env/
    ├── just/
    ├── logs/
    ├── lora-adapter/
    ├── pyproject.toml
    ├── qdrant_storage/
    ├── redis_data/
    ├── src/
    └── uv.lock

Key directories:

  • backend/src/ai_docs_assistant/presentation/ - REST API layer
  • backend/src/ai_docs_assistant/application/ - use cases, DTOs, interfaces, and search-related application services
  • backend/src/ai_docs_assistant/domain/ - domain policies, entities, and enums
  • backend/src/ai_docs_assistant/infrastructure/ - Qdrant, filesystem storage, Redis queue/repository, CrewAI generator, and health checks
  • backend/src/ai_docs_assistant/entrypoints/ - API, indexer, and generation-worker entrypoints
  • backend/src/ai_docs_assistant/config/ - settings, modular dependency factories (config.dependencies.api/common/generation/indexer/facade), and logging
  • backend/docs/ - seed and generated Markdown documents
  • backend/env/.env - environment configuration loaded by the application and Docker services
  • backend/just/ - grouped just command definitions
  • backend/logs/ - application log files
  • backend/lora-adapter/ - optional Ollama LoRA adapter assets and setup notes
  • backend/qdrant_storage/ - local Qdrant data directory mounted by Docker Compose
  • backend/redis_data/ - local Redis persistence directory mounted by Docker Compose

Quick start

Requirements

  • Python >=3.13,<3.14
  • uv
  • just
  • Docker Compose
  • installed and running Ollama on the host machine

Recommended Docker-first workflow

  1. Move into the backend directory:
cd backend
  1. Install Python dependencies:
uv sync
  1. Pull the embedding model:
ollama pull mxbai-embed-large
  1. Prepare the generation model.

By default, backend/env/.env expects:

OLLAMA_MODEL=ollama/my_api_docs

If that model does not exist locally, use the optional instructions in backend/lora-adapter/README.md.

  1. Start the full stack:
just run-all

This flow starts:

  • qdrant
  • redis
  • the separate one-off indexer job that loads backend/docs/ into Qdrant
  • the long-lived generation-worker container for background job processing
  • the api container on http://127.0.0.1:8000

If generation-worker is not running, generation jobs remain in pending and no document will be produced.

The indexer runs like a migration: it starts, finishes indexing, and is removed automatically, so just ps shows only the long-lived qdrant, redis, generation-worker, and api services afterward. If you previously started indexer with docker compose up, run just down-all once to clear the old service container before relying on the one-off workflow.

Useful stack commands:

  • just run-qdrant
  • just run-redis
  • just run-indexer
  • just run-api
  • just run-all
  • just down-all
  • just ps
  • just stack-restart
  • just rebuild-indexer-api
  • just rebuild-all

Useful quality commands:

  • just lint
  • just format-check
  • just typecheck
  • just quality

Equivalent manual Docker Compose flow

From backend/:

  1. Start Qdrant:
docker compose up -d qdrant
  1. Start Redis:
docker compose up -d redis
  1. Run the indexer:
docker compose build indexer
docker compose run --rm --no-deps indexer
  1. Start the generation worker:
docker compose build generation-worker
docker compose up -d generation-worker
  1. Start the API:
docker compose build api
docker compose up -d api

The API, Redis, and generation worker are all required for asynchronous generation. In the Docker-based setup, the default backend/env/.env uses:

OLLAMA_HOST=host.docker.internal
REDIS_HOST=redis

This manual flow matches the current just recipes: qdrant and redis stay running in detached mode, indexer runs as a one-off container, and generation-worker plus api start separately afterward.

Configuration

Application settings are loaded from backend/env/.env.

| Variable | Purpose | | --- | --- | | QDRANT_HOST | Qdrant host | | QDRANT_PORT | Qdrant port | | QDRANT_COLLECTION_NAME | Qdrant collection name | | EMBEDDING_MODEL_NAME | Ollama embedding model used for indexing and search | | VECTOR_SIZE | vector size for the Qdrant collection | | API_KEY | API key passed into the Ollama-backed CrewAI LLM client | | OLLAMA_HOST | Ollama host | | OLLAMA_PORT | Ollama port | | OLLAMA_MODEL | model name used for documentation generation | | REDIS_HOST | Redis host | | REDIS_PORT | Redis port | | REDIS_DB | Redis database index for generation jobs | | REDIS_GENERATION_QUEUE_NAME | Redis list name used as the generation queue | | REDIS_GENERATION_JOB_TTL_SECONDS | TTL for stored generation job state in Redis |

Derived URLs are assembled in settings:

  • qdrant_url = http://{QDRANT_HOST}:{QDRANT_PORT}
  • ollama_url = http://{OLLAMA_HOST}:{OLLAMA_PORT}

Runtime entrypoints

  • API: python -m ai_docs_assistant.entrypoints.application
  • Indexer: python -m ai_docs_assistant.entrypoints.workers.indexer
  • Generation worker: python -m ai_docs_assistant.entrypoints.workers.generation

The indexer also supports:

python -m ai_docs_assistant.entrypoints.workers.indexer --no-recreate

That mode keeps the existing Qdrant collection instead of recreating it before indexing.

API

POST /generate

Creates a new asynchronous generation job.

Request example:

{
  "query": "describe the endpoint for getting user tasks"
}

Successful response:

{
  "job_id": "123e4567-e89b-12d3-a456-426614174000",
  "status": "pending"
}

Behavior:

  • creates a generation job with status pending
  • stores the job state in Redis
  • enqueues the job id into the Redis generation queue
  • returns 202 Accepted immediately
  • does not generate the document inline in the API request

GET /generate/{job_id}

Returns the current job state and, when available, the generation result.

Response example for a completed job:

{
  "job_id": "123e4567-e89b-12d3-a456-426614174000",
  "query": "describe the endpoint for getting user tasks",
  "status": "completed",
  "content": "### GET /api/v1/tasks\n**Описание**: ...",
  "file_path": "docs/get_tasks_1.md",
  "error_message": null
}

Possible statuses:

  • pending
  • processing
  • completed
  • failed
  • skipped

Status meaning:

  • completed - the document was generated, saved, and indexed
  • failed - generation or validation failed
  • skipped - a sufficiently similar document already existed, so no new file was created

Returns 404 Not Found when the job does not exist.

POST /search

Searches for the most relevant indexed document through a multi-candidate selection flow.

Request example:

{
  "query": "endpoint for getting profile"
}

Response when a document is found:

{
  "found": true,
  "content": "### GET /api/v1/profile\n**Описание**: Возвращает профиль авторизованного пользователя.\n...",
  "message": null
}

Response when nothing is found:

{
  "found": false,
  "content": null,
  "message": "Документация не найдена. Используйте /generate для создания новой."
}

Behavior:

  • requests up to 5 candidates from the vector index through search_many(...) with score_threshold=0.0
  • uses SearchResultSelector to choose the best candidate for the query
  • if the query clearly refers to profile, task, or user, the selector prefers a result whose content or source contains the matching path/token
  • if there is no explicit preferred match, the selector falls back to the first candidate returned by the index
  • uses SearchRelevancePolicy to validate the selected result before returning it
  • rejects results with score lower than 0.62
  • additionally checks that the detected domain (profile, users, tasks) and action (get, create, update, delete) from the query match the selected document
  • returns found: false when there are no candidates or when the chosen candidate fails relevance validation

Operational notes:

  • search_many() has replaced the old single-result strategy for user-facing search
  • the simpler search() method is still used in other parts of the system, including generation deduplication and health checks
  • for /search, “not found” can now mean either an empty candidate set or a candidate rejected by selector/policy validation

GET /health

Checks dependency availability and basic RAG readiness.

Response example:

{
  "status": "healthy",
  "checks": {
    "qdrant": true,
    "ollama": true,
    "docs": true,
    "rag_canary": true
  }
}

What it checks:

  • Qdrant REST availability through /collections
  • Ollama availability through /api/tags
  • presence of Markdown files in backend/docs/
  • a RAG canary query using Эндпоинт для получения профиля

Logs and data

  • backend/logs/app.log - application informational logs
  • backend/logs/errors.log - application error logs
  • backend/docs/ - seed and generated Markdown documents
  • backend/qdrant_storage/ - local Qdrant storage
  • backend/redis_data/ - local Redis persistence data

Seed documents

The repository already includes initial Markdown documents in backend/docs/, including:

  • get_profile.md
  • get_tasks.md
  • create_task.md
  • update_task.md
  • get_users.md
  • delete_user.md

They serve as the initial knowledge base for the indexer and support the health-check canary.

Contract & API

Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.

MissingGITHUB OPENCLEW

Contract coverage

Status

missing

Auth

None

Streaming

No

Data region

Unspecified

Protocol support

OpenClaw: self-declared

Requires: none

Forbidden: none

Guardrails

Operational confidence: low

No positive guardrails captured.
Invocation examples
curl -s "https://www.xpersona.co/api/v1/agents/crewai-mrkazzila-ai-docs-assistant/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-mrkazzila-ai-docs-assistant/contract"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-mrkazzila-ai-docs-assistant/trust"

Reliability & Benchmarks

Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.

Missingruntime-metrics

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

Do not use if

Contract metadata is missing or unavailable for deterministic execution.
No benchmark suites or observed failure patterns are available.

Media & Demo

Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.

Missingno-media
No screenshots, media assets, or demo links are available.

Related Agents

Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.

Self-declaredprotocol-neighbors
GITHUB_OPENCLEW@x1pay/langchain

Rank

65

LangChain/LangGraph tools for AI agent x402 payments on X1

Traction

No public download signal

Freshness

Updated 4mo ago

OPENCLAW

Rank

65

An implementation of a multi-agent swarm using LangGraph

Traction

No public download signal

Freshness

Updated 4mo ago

OPENCLAW
GITHUB_OPENCLEWoceanbus-langchain

Rank

65

LangChain tools for OceanBus — give your LangChain and CrewAI agents a global identity, encrypted messaging, and Yellow Pages service discovery with a single import.

Traction

No public download signal

Freshness

Updated 4mo ago

OPENCLAW
Machine Appendix

Contract JSON

{
  "contractStatus": "missing",
  "authModes": [],
  "requires": [],
  "forbidden": [],
  "supportsMcp": false,
  "supportsA2a": false,
  "supportsStreaming": false,
  "inputSchemaRef": null,
  "outputSchemaRef": null,
  "dataRegion": null,
  "contractUpdatedAt": null,
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Invocation Guide

{
  "preferredApi": {
    "snapshotUrl": "https://www.xpersona.co/api/v1/agents/crewai-mrkazzila-ai-docs-assistant/snapshot",
    "contractUrl": "https://www.xpersona.co/api/v1/agents/crewai-mrkazzila-ai-docs-assistant/contract",
    "trustUrl": "https://www.xpersona.co/api/v1/agents/crewai-mrkazzila-ai-docs-assistant/trust"
  },
  "curlExamples": [
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-mrkazzila-ai-docs-assistant/snapshot\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-mrkazzila-ai-docs-assistant/contract\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-mrkazzila-ai-docs-assistant/trust\""
  ],
  "jsonRequestTemplate": {
    "query": "summarize this repo",
    "constraints": {
      "maxLatencyMs": 2000,
      "protocolPreference": [
        "OPENCLEW"
      ]
    }
  },
  "jsonResponseTemplate": {
    "ok": true,
    "result": {
      "summary": "...",
      "confidence": 0.9
    },
    "meta": {
      "source": "GITHUB_OPENCLEW",
      "generatedAt": "2026-10-08T22:20:08.248Z"
    }
  },
  "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": "OPENCLEW",
      "type": "protocol",
      "support": "unknown",
      "confidenceSource": "profile",
      "notes": "Listed on profile"
    },
    {
      "key": "crewai",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "multi-agent",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    }
  ],
  "flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:crewai|supported|profile capability:multi-agent|supported|profile"
}

Facts JSON

[
  {
    "factKey": "vendor",
    "label": "Vendor",
    "value": "Mrkazzila",
    "category": "vendor",
    "href": "https://github.com/mrKazzila/ai-docs-assistant",
    "sourceUrl": "https://github.com/mrKazzila/ai-docs-assistant",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-05-31T06:18:24.255Z",
    "isPublic": true,
    "metadata": {}
  },
  {
    "factKey": "protocols",
    "label": "Protocol compatibility",
    "value": "OpenClaw",
    "category": "compatibility",
    "href": "https://www.xpersona.co/api/v1/agents/crewai-mrkazzila-ai-docs-assistant/contract",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-mrkazzila-ai-docs-assistant/contract",
    "sourceType": "contract",
    "confidence": "medium",
    "observedAt": "2026-05-31T06:18:24.255Z",
    "isPublic": true,
    "metadata": {}
  },
  {
    "factKey": "handshake_status",
    "label": "Handshake status",
    "value": "UNKNOWN",
    "category": "security",
    "href": "https://www.xpersona.co/api/v1/agents/crewai-mrkazzila-ai-docs-assistant/trust",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-mrkazzila-ai-docs-assistant/trust",
    "sourceType": "trust",
    "confidence": "medium",
    "observedAt": null,
    "isPublic": true,
    "metadata": {}
  }
]

Change Events JSON

[]

Sponsored

Ads related to ai-docs-assistant and adjacent AI workflows.