Crawler Summary

crewai-es-agent answer-first brief

Containerised CrewAI crew that mines Elasticsearch logs and publishes the analysis as a GitHub PR CrewAI Elasticsearch → GitHub Agent A containerised $1 crew that: 1. **Pulls** recent log documents from an Elasticsearch cluster (via elasticsearch-py). 2. **Analyses** them with an LLM-backed *SRE Log Analyst* agent — identifying error spikes, top failure signatures, and affected services. 3. **Publishes** the resulting Markdown report (and any small suggested code changes) to a GitHub repository on a feature branc Capability contract not published. No trust telemetry is available yet. Last updated 10/9/2026.

Freshness

Last checked 10/9/2026

Best For

crewai-es-agent 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 REPOS, runtime-metrics, public facts pack

Agent DossierGITHUB REPOSSafety: 66/100

crewai-es-agent

Containerised CrewAI crew that mines Elasticsearch logs and publishes the analysis as a GitHub PR CrewAI Elasticsearch → GitHub Agent A containerised $1 crew that: 1. **Pulls** recent log documents from an Elasticsearch cluster (via elasticsearch-py). 2. **Analyses** them with an LLM-backed *SRE Log Analyst* agent — identifying error spikes, top failure signatures, and affected services. 3. **Publishes** the resulting Markdown report (and any small suggested code changes) to a GitHub repository on a feature branc

OpenClawself-declared

Public facts

4

Change events

1

Artifacts

0

Freshness

Oct 9, 2026

Verifiededitorial-contentNo verified compatibility signals

Capability contract not published. No trust telemetry is available yet. Last updated 10/9/2026.

Trust evidence available

Trust score

Unknown

Compatibility

OpenClaw

Freshness

Oct 9, 2026

Vendor

Dudebowski

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 10/9/2026.

Setup snapshot

  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

Dudebowski

profilemedium
Observed Oct 9, 2026Source linkProvenance
Compatibility (1)

Protocol compatibility

OpenClaw

contractmedium
Observed Oct 9, 2026Source linkProvenance
Security (1)

Handshake status

UNKNOWN

trustmedium
Observed unknownSource linkProvenance
Integration (1)

Crawlable docs

6 indexed pages on the official domain

search_documentmedium
Observed Apr 15, 2026Source 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 REPOS

Extracted files

0

Examples

6

Snippets

0

Languages

python

Executable Examples

text

crewai-es-agent/
├── app/
│   ├── main.py                # container entrypoint
│   ├── crew.py                # agents, tasks, crew assembly
│   ├── settings.py            # env-driven config (fails fast)
│   ├── logging_setup.py       # structlog → stdout + rotating JSONL file
│   ├── es_client.py           # elasticsearch-py wrapper + retry
│   └── tools/
│       ├── es_log_tool.py     # CrewAI BaseTool: query ES
│       └── github_push_tool.py# CrewAI BaseTool: commit + open PR
├── docker/
│   └── entrypoint.sh          # validates env vars, then exec's the app
├── config/
│   └── elastic-ca.crt         # (you provide) CA bundle for private ES TLS
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── .dockerignore
└── .env.example

bash

# One-time: create the shared network if your ES stack didn't already
docker network create elastic-net

# Then start the agent
cp .env.example .env
$EDITOR .env

# (Optional) drop your cluster CA into ./config/elastic-ca.crt
docker compose up -d --build agent
docker compose logs -f agent

bash

docker compose --profile dev-es up -d
# ES is on http://localhost:9200, user `elastic`, password from $ELASTIC_PASSWORD

text

ES_HOSTS=http://elasticsearch:9200
ES_USERNAME=elastic
ES_PASSWORD=changeme
ES_VERIFY_CERTS=false

bash

docker compose run --rm agent

bash

docker compose up -d agent

Docs & README

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

Self-declaredGITHUB REPOS

Docs source

GITHUB REPOS

Editorial quality

ready

Containerised CrewAI crew that mines Elasticsearch logs and publishes the analysis as a GitHub PR CrewAI Elasticsearch → GitHub Agent A containerised $1 crew that: 1. **Pulls** recent log documents from an Elasticsearch cluster (via elasticsearch-py). 2. **Analyses** them with an LLM-backed *SRE Log Analyst* agent — identifying error spikes, top failure signatures, and affected services. 3. **Publishes** the resulting Markdown report (and any small suggested code changes) to a GitHub repository on a feature branc

Full README

CrewAI Elasticsearch → GitHub Agent

A containerised CrewAI crew that:

  1. Pulls recent log documents from an Elasticsearch cluster (via elasticsearch-py).
  2. Analyses them with an LLM-backed SRE Log Analyst agent — identifying error spikes, top failure signatures, and affected services.
  3. Publishes the resulting Markdown report (and any small suggested code changes) to a GitHub repository on a feature branch and opens a pull request — via a custom GitHubPushTool built on PyGithub, alongside crewai_tools.GithubSearchTool for repo-aware context.

The project is structured for production use: non-root container, multi-stage build, structured JSON logs, env-only secrets, persistent volumes for logs and artifacts, and a compose file that wires into an existing Elasticsearch cluster (with an optional dev profile for local ES).


Project layout

crewai-es-agent/
├── app/
│   ├── main.py                # container entrypoint
│   ├── crew.py                # agents, tasks, crew assembly
│   ├── settings.py            # env-driven config (fails fast)
│   ├── logging_setup.py       # structlog → stdout + rotating JSONL file
│   ├── es_client.py           # elasticsearch-py wrapper + retry
│   └── tools/
│       ├── es_log_tool.py     # CrewAI BaseTool: query ES
│       └── github_push_tool.py# CrewAI BaseTool: commit + open PR
├── docker/
│   └── entrypoint.sh          # validates env vars, then exec's the app
├── config/
│   └── elastic-ca.crt         # (you provide) CA bundle for private ES TLS
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── .dockerignore
└── .env.example

Environment variables

All secrets and tunables are loaded from the environment. Never bake them into the image. Copy .env.example to .env and fill in:

| Variable | Required | Purpose | |---|---|---| | ES_HOSTS | yes | Comma-separated ES URLs, e.g. https://es.internal:9200. | | ES_API_KEY | one-of | Preferred: API key auth. | | ES_USERNAME / ES_PASSWORD | one-of | Basic auth alternative. | | ES_VERIFY_CERTS | no | true/false. Default true. | | ES_CA_CERTS | no | In-container path to a CA bundle (mount via compose). | | ES_INDEX_PATTERN | no | Default logs-*. | | ES_LOOKBACK_MINUTES | no | Default 60. | | ES_MAX_HITS | no | Hard cap on docs fetched per query. Default 1000. | | GITHUB_TOKEN | yes | PAT (repo scope) or fine-grained token with Contents: RW and Pull requests: RW. | | GITHUB_REPO | yes | owner/name. | | GITHUB_BASE_BRANCH | no | Default main. | | GITHUB_TARGET_BRANCH | no | Default crewai/log-analysis. Auto-created if absent. | | GITHUB_OPEN_PR | no | true/false. Default true. | | GIT_AUTHOR_NAME / GIT_AUTHOR_EMAIL | no | Commit metadata. | | LLM_PROVIDER | no | openai (default) or anthropic. | | OPENAI_API_KEY / OPENAI_MODEL | conditional | Needed when provider is OpenAI. | | ANTHROPIC_API_KEY / ANTHROPIC_MODEL | conditional | Needed when provider is Anthropic. | | LOG_LEVEL | no | Default INFO. | | AGENT_LOG_DIR | no | Default /var/log/crewai-agent. | | AGENT_ARTIFACTS_DIR | no | Default /var/lib/crewai-agent/artifacts. |

The docker/entrypoint.sh script validates the critical ones at container start and fails with exit code 78 (EX_CONFIG) if any are missing — so misconfigurations surface immediately instead of mid-run.

Production secret handling

.env is for local use. For real deployments prefer:

  • Docker Swarm / Kubernetes: mount each secret as a file and read it via an init-shim that exports it, or use a sidecar like vault-agent / external-secrets to project them as env vars.
  • Plain compose: pair with docker swarm secrets or pass via your CI/CD secret store (--env-file <(your-secret-fetch>)).
  • Avoid docker inspect-able env vars on shared hosts.

Persistent storage

Two named volumes are declared:

| Volume | Mount point | Contents | Why it's persistent | |---|---|---|---| | agent-logs | /var/log/crewai-agent | agent.jsonl (rotated, 50 MB × 10) | Auditable run history independent of docker logs. | | agent-artifacts | /var/lib/crewai-agent/artifacts | Per-run JSON with crew output + token usage | Replay / debugging after a container exits. |

Both are declared with driver: local in docker-compose.yml. To back them with NFS / EBS / Ceph, replace the driver block — the agent doesn't care where the bytes live, only that the paths are writable.

The image itself is launched read_only: true; only the two volumes and a tmpfs at /tmp are writable, which dramatically reduces blast radius if the LLM or a tool misbehaves.


Connecting to an existing Elasticsearch cluster

The compose file expects an external Docker network called elastic-net — the same network your ES cluster is on. This is the cleanest way to give the agent direct, name-resolvable access to ES without exposing it to the host.

# One-time: create the shared network if your ES stack didn't already
docker network create elastic-net

# Then start the agent
cp .env.example .env
$EDITOR .env

# (Optional) drop your cluster CA into ./config/elastic-ca.crt
docker compose up -d --build agent
docker compose logs -f agent

If your ES cluster lives on a different Docker network, either:

  • attach it to elastic-net as well (docker network connect elastic-net <es-container>), or
  • change networks: in docker-compose.yml to reference its network as external: true.

If ES is reachable only over the host network (e.g. it's a managed service like Elastic Cloud), you can drop the networks: block on the agent service and set ES_HOSTS=https://your-cluster.es.io:9243 in .env.

Local development with a throwaway ES

docker compose --profile dev-es up -d
# ES is on http://localhost:9200, user `elastic`, password from $ELASTIC_PASSWORD

Update .env for dev:

ES_HOSTS=http://elasticsearch:9200
ES_USERNAME=elastic
ES_PASSWORD=changeme
ES_VERIFY_CERTS=false

Running the agent

Single run (recommended pattern — schedule it externally):

docker compose run --rm agent

Background long-running mode (e.g. you wrap an internal scheduler around it):

docker compose up -d agent

Kubernetes: use a CronJob with restartPolicy: OnFailure, mount the two volumes as PersistentVolumeClaims, and pull all env vars from a Secret.


How the GitHub push works

crewai_tools ships GithubSearchTool, but that tool is read-only (RAG over repo content). For actually pushing analysis output or code changes back to a repo, this project includes a custom GitHubPushTool (in app/tools/github_push_tool.py) that:

  1. Authenticates with GITHUB_TOKEN via PyGithub.
  2. Ensures GITHUB_TARGET_BRANCH exists (creates it from GITHUB_BASE_BRANCH if not).
  3. Upserts each provided file (create_file / update_file with the existing blob SHA).
  4. Optionally opens a PR back to GITHUB_BASE_BRANCH.

The Publisher agent calls it through the standard CrewAI tool-call interface — the LLM produces a structured argument set matching GitHubPushInput, and the tool executes the GitHub API calls. This is the supported extension pattern for self-hosted CrewAI deployments; if you adopt CrewAI AMP / Enterprise you can swap this for the managed GitHub integration with OAuth.


Operational notes

  • Idempotency: re-running the same day reuses the same target branch and updates the same report file; the PR is created once and silently skipped thereafter.
  • Retries: ES queries are wrapped in tenacity (3 attempts, exponential backoff). GitHub calls are not retried — they're usually deterministic failures (auth, permissions) where a retry just wastes credits.
  • Cost ceiling: keep ES_MAX_HITS tight and choose a small OPENAI_MODEL for routine runs; escalate manually for incident investigations.
  • Healthcheck: the container's Docker healthcheck only verifies that the Python package loads — it does not dial ES or GitHub, because we don't want a transient outage to mark the container unhealthy and break orchestrator semantics.
  • Logs: tail with docker compose exec agent tail -f /var/log/crewai-agent/agent.jsonl or ingest the JSONL into the same ES cluster you're analysing (eat your own dog food).

Local smoke test (no Docker)

python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
export $(grep -v '^#' .env | xargs)
python -m app.main

Contract & API

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

MissingGITHUB REPOS

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-dudebowski-crewai-es-agent/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-dudebowski-crewai-es-agent/contract"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-dudebowski-crewai-es-agent/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 ReposUpdated 10h agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

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-dudebowski-crewai-es-agent/snapshot",
    "contractUrl": "https://www.xpersona.co/api/v1/agents/crewai-dudebowski-crewai-es-agent/contract",
    "trustUrl": "https://www.xpersona.co/api/v1/agents/crewai-dudebowski-crewai-es-agent/trust"
  },
  "curlExamples": [
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-dudebowski-crewai-es-agent/snapshot\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-dudebowski-crewai-es-agent/contract\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-dudebowski-crewai-es-agent/trust\""
  ],
  "jsonRequestTemplate": {
    "query": "summarize this repo",
    "constraints": {
      "maxLatencyMs": 2000,
      "protocolPreference": [
        "OPENCLEW"
      ]
    }
  },
  "jsonResponseTemplate": {
    "ok": true,
    "result": {
      "summary": "...",
      "confidence": 0.9
    },
    "meta": {
      "source": "GITHUB_REPOS",
      "generatedAt": "2026-10-10T05:38:52.661Z"
    }
  },
  "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",
    "category": "vendor",
    "label": "Vendor",
    "value": "Dudebowski",
    "href": "https://github.com/dudebowski/crewai-es-agent",
    "sourceUrl": "https://github.com/dudebowski/crewai-es-agent",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-10-09T21:09:26.323Z",
    "isPublic": true
  },
  {
    "factKey": "protocols",
    "category": "compatibility",
    "label": "Protocol compatibility",
    "value": "OpenClaw",
    "href": "https://www.xpersona.co/api/v1/agents/crewai-dudebowski-crewai-es-agent/contract",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-dudebowski-crewai-es-agent/contract",
    "sourceType": "contract",
    "confidence": "medium",
    "observedAt": "2026-10-09T21:09:26.323Z",
    "isPublic": true
  },
  {
    "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": "handshake_status",
    "category": "security",
    "label": "Handshake status",
    "value": "UNKNOWN",
    "href": "https://www.xpersona.co/api/v1/agents/crewai-dudebowski-crewai-es-agent/trust",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-dudebowski-crewai-es-agent/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 crewai-es-agent and adjacent AI workflows.