Project Info
[Elastic] Best end-to-end Agentic system on Elasticsearch (1st Place: $2,000 (split across team members) 2nd Place: $1,000 (split across team members))
Gallop
Inspiration
In today’s world of big data, where it becomes increasingly difficult to distinguish between pertinent and irrelevant information, identifying meaningful threats under time-pressure is essential. Many current cybersecurity operations are hindered by tedious manual investigation, fragmented tool usage, and delayed bureaucratic remediation—all of which result in attacker advantages as they seek to exploit the gap between detection and action. Signal overload, where analysts must interpret large volumes of telemetry and alerts under severe time constraints, is one of the most significant burdens for modern security operations. Solution Gallop is a real-time cybersecurity control platform that autonomously converts security signals into immediate defensive actions. By galloping through security data, our tool detects intrusion activity through continuous system telemetry monitoring. Once detected, an appropriate response is quickly deployed as determined by the autonomous multi-agent architecture. Gallop seeks to limit the detection-to-action gap and contain threats in real time. Instead of relying solely on manual investigation workflows, the AI-powered platform builds contextual understanding from live telemetry and validates threats through Elasticsearch-driven signal correlation. Finally, it executes containment and remediation actions in real time. Using Elasticsearch's advanced vector search capabilities with Jina models via Elastic Inference Service (EIS), Gallop utilizes context retrieval through a multi-agent architecture, managed by an orchestrator agent triggered by Elasticsearch workflows. This event-driven workflow automation makes autonomous, human-free decisions. Essentially, Elastic provides the necessary retrieval and sensing system, and Gallop provides the reflexes and operational control plane, compressing detection-to-action cycles from human to operational timescales. Gallop’s specialty and central thesis lie in its continuous decision-making and response optimization, which result in latency compression and system stabilization. Rather than rigid, predefined rules, Gallop’s multi-agent model uses contextual reasoning to autonomously decide on and execute security protocol. How We Built It We dove deep into new tools and programs this weekend. We primarily utilized Elastic’s many services, including Elasticsearch running on Elastic Cloud as our telemetry aggregation and reasoning function. Jina models were used for embeddings generation and vector similarity, in order to better classify events to match with pre-defined threat categories. Using Elastic’s Agent Builder and Workflow functions, we deployed a multi-agent architecture with event-triggering loops. The individual agents running on Gallop-defended machines are powered by the OpenAI API, and the orchestrator is built with Elastic AI Agent Builder, which oversees event-driven workflows and response actions. Data collection is done using an eBPF-based framework, inspired by the execsnoop.bt tool that comes with BPFTrace. We utilized this technology because it allowed us real-time access to what is actually being executed on a computer, allowing us to have significantly more visibility into security-relevant data. To test the efficacy of our project, we also created a simulated intrusion platform to test how quickly Gallop could detect and mitigate exploits. Challenges We Ran Into This was our first time using the Elastic product suite, so familiarizing ourselves with the ecosystem took a significant portion of our attention and time. A primary difficulty in this project was creating the multi-agent infrastructure. Given the fact that many observed behaviors were non-deterministic, ensuring the accuracy of the agents’ autonomous decision-making proved rather difficult during initial tests. Erroneous false positives and false negatives presented themselves during early tests; a significant number of tests and iterations were required to ameliorate these issues and yield far more accurate decision-making results. Accomplishments We're Proud Of Utilized Elasticsearch for telemetry ingestion and low-latency querying. Integrated Jina models for data analysis. Used Elastic Agent Builder to design an autonomous multi-agent architecture Made a dashboard for system visibility What We Learned On the technical front, we gained experience with Elastic’s low-latency querying abilities, vector search, and workflow and agent interactions. This project taught us how embeddings and reranking models can turn massive datasets into a manageable decision-making context. Navigating Elastic API demonstrated the tool’s full abilities and versatility for wide-ranging objectives. We also gained great insight into creating a clean, user-friendly UI whilst integrating real-time updating backend capabilities. Looking Forward We are excited to see Gallop’s future potential. With additional time and resources, we envision creating a more robust framework for Gallop’s risk-awareness and decision-making abilities. These additions would enable Gallop to act with precision and stability across wide-ranging industries—bringing security to our modern and fast-changing world.
Gallop Defensive Agents
Multi-agent defense framework composed of three cooperating services:
agent/: Rust + eBPF responder that observes process starts and executes bounded remediation tasks.server/: Axum control plane that coordinates detections, queues actions, and brokers AI reasoning for agents.frontend/: Next.js 16 command console that renders the current posture and suggests next actions via Jina embeddings.
Plain-English Overview
- Mission: shrink detection-to-containment time with cooperating agents.
- Pattern: sense activity → reason with policy/AI → act → verify.
- Role split: control plane plans, host agents execute, console validates.
- Benefit: closed-loop defense that records protection history instead of alert noise.
- Result: higher containment rates with fewer manual touches.
Quick Start
- Launch Elasticsearch and note the endpoint plus an API key.
- Start the control plane:
cd server && cargo run. It exposes the APIs on port 8080 and an interactivecmd>prompt for issuing agent instructions. - Build and run an agent on a Linux host with eBPF support:
cd agent && LIBBPF_SYS_USE_SYSTEM=1 cargo run --release(usually needssudo). - Bring up the console:
cd frontend && pnpm install && pnpm dev, then openhttp://localhost:3000.
Control Plane (server/)
- Purpose: Receives process docs from agents at
/v1/ingest/processes, forwards them to Elasticsearch, maintains a command queue (/v1/agent/commands), accepts agent results, and exposes/v1/openai/chatas a reasoning broker. - Environment:
ELASTIC_URL(required) – Elasticsearch node URLELASTIC_API_KEY(required) – API key for the clusterPROCESS_INDEX(defaultlogs-processstart) – index to write intoOPENAI_API_KEY(optional) – enables/v1/openai/chatOPENAI_MODEL/OPENAI_BASE(optional) – override model or base URL
- Run:
make runorcargo run. The CLI acceptslist(show agent IDs) and<agent_id> <instruction>to enqueue work.
Agent (agent/)
- Purpose: Attaches the
bpf/execsnoop.bpf.cprogram tosys_enter_execve, buffers process metadata, and batches it to the server. It polls/v1/agent/commands, runs scoped tasks (5s timeout), and reports structured outcomes. - Environment:
SERVER_URL(defaulthttps://api.joingallop.com) – control plane base URLOPENAI_MODEL(optional) – model name passed to the server’s OpenAI proxy- Agent ID is the host name; ensure it matches commands you enqueue.
- Prereqs: Linux with eBPF enabled, kernel headers,
clang/llvm,libbpf(build expectsLIBBPF_SYS_USE_SYSTEM=1), and root privileges to load the BPF program. - Run:
cd agent && LIBBPF_SYS_USE_SYSTEM=1 cargo run --release(ormake run).
Console (frontend/)
- Purpose: Reads Elasticsearch threat data, renders current defenses, lists agents, and provides
/api/jina/insightfor AI judgment on commands. - Environment (.env.local):
ELASTIC_URL– Elasticsearch endpointELASTIC_API_KEY– API keyPROCESS_INDEX– index to query (should match server)JINA_API_KEY/JINA_MODEL_ID(optional) – enable Jina-based command analysis
- Run:
pnpm install && pnpm dev(orpnpm build && pnpm start).
Coordination Flow
- Agents capture exec events via eBPF and post batches to
POST /v1/ingest/processes. - Control plane enriches/forwards events into Elasticsearch and tracks active agent IDs.
- Console API routes query Elasticsearch for posture summaries, threat charts, and agent status.
- Use the server CLI to enqueue instructions; agents fetch them, optionally call the OpenAI proxy, execute bounded actions, and report results to
/v1/agent/result.
Detection and Response
- Activity lands in Elasticsearch with host/user/process context.
- Detection rules, IOC matches, and Jina v3 embeddings (via Elastic Inference Service) label events as malicious/suspicious/benign.
- A threat score merges AI confidence, rule severity, heuristics (e.g., netcat reverse shell,
curl | bash), and asset context. - Policy maps score + criticality + allowlist/denylist into actions: investigate, contain, kill process, quarantine host, or log-only.
- Agents receive scoped plans, execute bounded steps, and emit structured results.
- Control plane verifies remediation by rechecking Elasticsearch state and closes or escalates.
Workflow Loop
- Events flow into Elasticsearch
- Detection rule fires
- Workflow triggers automatically
- Agent is invoked with a scoped plan
- Agent returns structured action/result
- Workflow executes deterministic response (kill proc, isolate host, notify, ticket)
- Verification re-reads ES and closes or retries
Why Agents (instead of alert-only)
- Shrinks detection-to-action latency and cuts alert fatigue.
- Runs repeatable, policy-checked remediation without external SOAR glue.
- Consolidates automation in one control plane (Elasticsearch + agents + workflows).
- Focuses on protection history (what was remediated, when, how) instead of just scan history.
Product Narrative
- User signs up and gets a console backed by Elasticsearch; credentials stay in their environment.
- They deploy agents on hosts; each streams exec context and enforces actions locally.
- 14-day Elastic Cloud Serverless trial can power ingestion without new infra.
- Jina models via EIS generate embeddings and rerank search results to improve detections.
- Elastic Workflows and Agent Builder wire detections to actions; custom tools can be added for environment-specific remediation.
Development Notes
- Rust toolchain 1.75+ recommended for
agent/andserver/. - Node 20+ with
pnpmfor the dashboard. - Formatting helpers:
make fmtin Rust projects;next lintavailable infrontend/. - When running agents on production hosts, review and harden command execution policies before enabling remote instructions.
Analysis
View
Metric
- 2
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CIn code
- CSSIn code
- Next.jsIn code
- ReactIn code
- RustIn code
- Tailwind CSSIn code
- TypeScriptIn code
- OpenAIClaimed
7 of 8 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
751 KB
Source files
108
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Eth007/gallop
126 files · 1.0 MB · @ 96d2203
Structure
Interface
83 files · 66%Screens, components and styles rendered to the user.
API & routing
13 files · 10%Request entry points: routes, handlers and controllers.
Application logic
12 files · 10%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript41%
- Rust36%
- YAML22%
- Markdown1%
- CSS1%
- C0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 59- @elastic/elasticsearch
- @hookform/resolvers
- @radix-ui/react-accordion
- @radix-ui/react-alert-dialog
- @radix-ui/react-aspect-ratio
- @radix-ui/react-avatar
- @radix-ui/react-checkbox
- @radix-ui/react-collapsible
- @radix-ui/react-context-menu
- @radix-ui/react-dialog
- @radix-ui/react-dropdown-menu
- @radix-ui/react-hover-card
- @radix-ui/react-label
- @radix-ui/react-menubar
- @radix-ui/react-navigation-menu
- @radix-ui/react-popover
- @radix-ui/react-progress
- @radix-ui/react-radio-group
- +41 more
agent/Cargo.toml
cargo · 15- anyhow
- chrono
- hostname
- inotify
- libbpf-rs
- once_cell
- regex
- reqwest
- serde
- serde_json
- tokio
- tracing
- tracing-subscriber
- uuid
- +1 more
server/Cargo.toml
cargo · 13- anyhow
- axum
- chrono
- dotenvy
- once_cell
- reqwest
- serde
- serde_json
- thiserror
- tokio
- tracing
- tracing-subscriber
- uuid
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.