RepoPilotOpen in app →

ApolloAuto/apollo

An open autonomous driving platform

Healthy

Healthy across the board

weakest axis
Use as dependencyHealthy

Permissive license, no critical CVEs, actively maintained — safe to depend on.

Fork & modifyHealthy

Has a license, tests, and CI — clean foundation to fork and modify.

Learn fromHealthy

Documented and popular — useful reference codebase to read through.

Deploy as-isHealthy

No critical CVEs, sane security posture — runnable as-is.

  • Last commit 3w ago
  • 24+ active contributors
  • Distributed ownership (top contributor 35% of recent commits)
Show all 6 evidence items →
  • Apache-2.0 licensed
  • Tests present
  • No CI workflows detected

Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Healthy" badge

Paste into your README — live-updates from the latest cached analysis.

Variant:
RepoPilot: Healthy
[![RepoPilot: Healthy](https://repopilot.app/api/badge/apolloauto/apollo)](https://repopilot.app/r/apolloauto/apollo)

Paste at the top of your README.md — renders inline like a shields.io badge.

Preview social card (1200×630)

This card auto-renders when someone shares https://repopilot.app/r/apolloauto/apollo on X, Slack, or LinkedIn.

Onboarding doc

Onboarding: ApolloAuto/apollo

Generated by RepoPilot · 2026-05-09 · Source

🤖Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/ApolloAuto/apollo shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

🎯Verdict

GO — Healthy across the board

  • Last commit 3w ago
  • 24+ active contributors
  • Distributed ownership (top contributor 35% of recent commits)
  • Apache-2.0 licensed
  • Tests present
  • ⚠ No CI workflows detected

<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>

Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live ApolloAuto/apollo repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/ApolloAuto/apollo.

What it runs against: a local clone of ApolloAuto/apollo — the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in ApolloAuto/apollo | Confirms the artifact applies here, not a fork | | 2 | License is still Apache-2.0 | Catches relicense before you depend on it | | 3 | Default branch master exists | Catches branch renames | | 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 5 | Last commit ≤ 52 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>ApolloAuto/apollo</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of ApolloAuto/apollo. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/ApolloAuto/apollo.git
#   cd apollo
#
# Then paste this script. Every check is read-only — no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of ApolloAuto/apollo and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "ApolloAuto/apollo(\\.git)?\\b" \\
  && ok "origin remote is ApolloAuto/apollo" \\
  || miss "origin remote is not ApolloAuto/apollo (artifact may be from a fork)"

# 2. License matches what RepoPilot saw
(grep -qiE "^(Apache-2\\.0)" LICENSE 2>/dev/null \\
   || grep -qiE "\"license\"\\s*:\\s*\"Apache-2\\.0\"" package.json 2>/dev/null) \\
  && ok "license is Apache-2.0" \\
  || miss "license drift — was Apache-2.0 at generation time"

# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
  && ok "default branch master exists" \\
  || miss "default branch master no longer exists"

# 4. Critical files exist
test -f "WORKSPACE" \\
  && ok "WORKSPACE" \\
  || miss "missing critical file: WORKSPACE"
test -f "BUILD" \\
  && ok "BUILD" \\
  || miss "missing critical file: BUILD"
test -f "apollo.sh" \\
  && ok "apollo.sh" \\
  || miss "missing critical file: apollo.sh"
test -f "collection/cyber/cyberfile.xml" \\
  && ok "collection/cyber/cyberfile.xml" \\
  || miss "missing critical file: collection/cyber/cyberfile.xml"
test -f "collection/perception/README.md" \\
  && ok "collection/perception/README.md" \\
  || miss "missing critical file: collection/perception/README.md"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 52 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~22d)"
else
  miss "last commit was $days_since_last days ago — artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) — safe to trust"
else
  echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/ApolloAuto/apollo"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

TL;DR

Apollo is an open-source autonomous driving platform that provides a complete stack for developing, testing, and deploying self-driving vehicle software. It includes modules for perception (computer vision, object detection), planning (path/trajectory generation), control (brake/steering/throttle-by-wire), localization, and prediction—all built on the Cyber RT distributed middleware. The platform supports multiple hardware configurations (NVIDIA Turing/Ada/AMD GPUs) and has been tested on Lincoln MKZ vehicles with full drive-by-wire capability. Monorepo organized by domain modules under collection/: perception, planning, control, canbus, localization, prediction, etc. Each module has its own BUILD file (Bazel), cyberfile.xml (dependency manifest), and README. Core infrastructure lives in modules/ (inferred from file structure) with shared messaging via protobuf (common-msgs). Development workflow is containerized via Docker scripts (docker/scripts/dev_start.sh). Build orchestration uses Bazel with .bazelrc and WORKSPACE configuration; TypeScript/JavaScript code in ~1.8M LOC suggests web-based tools/visualizations (likely Dreamview monitoring dashboard).

👥Who it's for

Autonomous vehicle engineers and roboticists who need a production-grade platform to develop and test self-driving algorithms without building infrastructure from scratch. Contributors include OEMs, Tier-1 suppliers, and AV researchers who use Apollo as both a development framework and a reference implementation for end-to-end autonomous driving pipelines.

🌱Maturity & risk

Highly mature and production-ready. Apollo is actively maintained with recent updates (Nov 2024) addressing CUDA 11.8 and NVIDIA Ada GPU support. The codebase is substantial (~23.7M LOC in C++, structured with Bazel build system and Docker containerization), comprehensive CI/CD via TeamCity, and follows enterprise patterns (CODE_OF_CONDUCT, CONTRIBUTING.md, RELEASE.md). This is a battle-tested platform used in real-world autonomous vehicle deployments.

Low technical risk for a mature project, but operational complexity is high: requires Ubuntu 18.04+ with NVIDIA driver ≥520.61.05, CUDA 11.8, Docker, specific GPU hardware (Turing/Ada/RDNA), and 16GB+ RAM minimum. Monorepo structure with tightly coupled modules (canbus, perception, planning) means changes to core APIs can have wide impact. The codebase is large enough that incremental builds can be slow; developers must clear .cache/bazel regularly after dependency upgrades. No evidence of single-maintainer risk (Baidu-backed org), but the breadth of modules means you need domain knowledge in perception, control theory, and distributed systems.

Active areas of work

Active development focused on GPU support: recent changes upgraded CUDA to 11.8 and LibTorch to 1.11.0 (arm64) to support NVIDIA Ada Lovelace (40x0 series) GPUs. Contributors must now use NVIDIA driver ≥520.61.05. The Nov 2024 update signals ongoing hardware compatibility work. TeamCity CI pipeline (.teamcity/) actively runs coverage and pull request validation, indicating continuous integration of contributions.

🚀Get running

# Clone the repository
git clone https://github.com/ApolloAuto/apollo.git
cd apollo

# Pull the Apollo development Docker image and start container
./docker/scripts/dev_start.sh

# Inside container, clean cached builds and build core modules
rm -rf /apollo/.cache/{bazel,build,repos}
bazel build //apollo/modules/...

# Run a quick test or simulation
bazel run //apollo/modules/perception:perception_main

Daily commands: Inside the Apollo development container (started via ./docker/scripts/dev_start.sh), use Bazel: bazel run //apollo/modules/perception:perception_main to start the perception pipeline, or bazel run //apollo/modules/planning:planning_main for planning. The Dreamview web dashboard (TypeScript) can be started separately to visualize vehicle state, sensor data, and planning results in real-time. See individual module READMEs (e.g., collection/perception/README.md) for module-specific startup procedures.

🗺️Map of the codebase

  • WORKSPACE — Bazel workspace configuration defining all external dependencies and build rules for the entire autonomous driving platform
  • BUILD — Root Bazel build file specifying top-level build targets and dependency graph structure
  • apollo.sh — Main entry point script for building, running, and configuring Apollo; essential for developer onboarding
  • collection/cyber/cyberfile.xml — Cyber framework module definition; Cyber is Apollo's core real-time pub/sub middleware that all modules depend on
  • collection/perception/README.md — Perception pipeline documentation; one of three core autonomous driving pillars (perception, planning, control)
  • collection/planning/README.md — Planning module documentation; critical for trajectory generation and decision-making logic
  • collection/control/README.md — Control module documentation; executes planned trajectories and interfaces with vehicle hardware

🛠️How to make changes

Add a New Perception Algorithm

  1. Create new algorithm directory under collection/perception with its own BUILD file (collection/perception/BUILD)
  2. Define your algorithm in a .proto file in collection/common-msgs for message definitions (collection/common-msgs/BUILD)
  3. Register your module in a cyberfile.xml within your algorithm directory following the Cyber component pattern (collection/perception/cyberfile.xml)
  4. Implement message subscription/publishing using Cyber middleware APIs and add to perception's main cyberfile (collection/cyber/cyberfile.xml)

Add a New Planning Strategy

  1. Create strategy directory under collection/planning with corresponding BUILD file (collection/planning/BUILD)
  2. Define planning output messages (trajectory, decision) in collection/common-msgs protobuf files (collection/common-msgs/BUILD)
  3. Implement strategy as Cyber component subscribing to perception and localization outputs (collection/cyber/cyberfile.xml)
  4. Register component in planning module's cyberfile.xml and add to apollo.sh launch configuration (collection/planning/cyberfile.xml)

Add a New Sensor Driver

  1. Create driver directory under collection/drivers with BUILD file specifying hardware interface (collection/drivers/BUILD)
  2. Define sensor output message schema in collection/common-msgs for standardized data format (collection/common-msgs/BUILD)
  3. Implement driver as Cyber publisher component in cyberfile.xml (collection/drivers/cyberfile.xml)
  4. Add driver module launch configuration to apollo.sh and register calibration parameters in collection/calibration (apollo.sh)

Add a New Monitoring Service

  1. Create service directory under collection/monitor with BUILD file (collection/monitor/BUILD)
  2. Define health/metric messages in collection/common-msgs (collection/common-msgs/BUILD)
  3. Implement as Cyber subscriber component listening to all critical module topics (collection/monitor/cyberfile.xml)
  4. Integrate service output with Dreamview UI by publishing to monitoring topics (collection/dreamview/BUILD)

🔧Why these technologies

  • Bazel Build System — Distributed, incremental builds for large C++ codebase; enables parallel compilation across 600+ files and precise dependency management
  • Cyber Framework (pub/sub middleware) — Real-time, low-latency inter-process communication required for autonomous driving; supports multiple sensors and actuators running asynchronously
  • Protocol Buffers — Efficient serialization for high-frequency sensor data (camera, lidar, radar streams); language-agnostic message definitions
  • C++ with Python bindings — Performance-critical perception and control loops in C++; flexible module scripting and data analysis in Python
  • Dreamview (Web UI) — Browser-based visualization for monitoring sensor data, planning trajectories, and debugging system behavior in real-time

⚖️Trade-offs already made

  • Monolithic collection/ directory structure vs. microservices

    • Why: Easier co-location of tightly-coupled modules (perception→planning→control); single build system and dependency management
    • Consequence: Scaling individual components requires splitting from Cyber; any module restart affects entire system; testing requires mock Cyber broker
  • Cyber pub/sub over ROS 1.0

    • Why: Lower latency, deterministic scheduling for safety-critical control loops; in-process message routing
    • Consequence: Cyber is proprietary to Apollo; smaller ecosystem; developers must learn Cyber APIs instead of ROS standard
  • HD Map as separate module vs. embedded in perception

    • Why: Decouples map updates from perception algorithms; enables offline map processing and multi-map support
    • Consequence: Adds network/IPC latency for map queries; requires synchronization between map version and perception models
  • Single planning module with multiple strategies vs. pluggable pipeline

    • Why: Simpler integration testing; unified decision logic; easier to enforce safety constraints across all behaviors
    • Consequence: Hard to swap planning algorithms without recompilation; strategy selection logic must be in-process

🚫Non-goals (don't propose these)

  • Does not provide end-to-end encryption or security hardening for untrusted networks (assumes vehicle network is isolated)
  • Does not include OTA (over-the-air) update mechanisms for deployed systems
  • Does not provide distributed training or federated learning pipelines (perception models are pre-trained offline)
  • Does not support real-time 3D SLAM (uses pre-built HD maps rather than dynamic mapping)
  • Not a production vehicle control system without additional safety certification and hardware integration

🪤Traps & gotchas

  1. GPU Driver Pinning: NVIDIA driver ≥520.61.05 is enforced; older drivers will cause silent CUDA failures. ROCm 5.1+ for AMD GPUs is non-negotiable. 2. Bazel Cache Invalidation: After pulling changes, you must manually rm -rf /apollo/.cache/{bazel,build,repos} and restart the container; failure to do this causes stale artifacts and mysterious build failures. 3. Docker Container Restart: Dev container must be restarted after dependency upgrades (see README); running build commands in a stale container leads to linker errors. 4. LibTorch Version Drift: arm64 uses 1.11.0 while x86_64 is pinned to 1.7.0; if you mix architectures or upgrade manually, perception model inference breaks silently. 5. Distributed System Complexity: Cyber RT pub/sub is not ROS; topic names and message types must match exactly across modules or data never arrives; debugging this requires reading Cyber logs. 6. Multi-Module Dependency DAG: Changes to planning module may require recompilation of control and prediction modules even if their code is untouched; Bazel handles this but can make incremental development slow.

🏗️Architecture

💡Concepts to learn

  • Cyber RT (Distributed Middleware) — Apollo's core communication backbone replacing ROS; you must understand its publish-subscribe, serialization, and scheduling semantics to debug multi-module data flow and latency issues.
  • CAN Bus Protocol (Vehicle Control) — Apollo interfaces with real vehicles via CAN (Controller Area Network); understanding message formats, frame IDs, and timing is essential for the canbus module and drive-by-wire integration.
  • Behavior Planning & Trajectory Generation — Apollo's planning module generates trajectories using state machines and optimization (e.g., lattice planner, speed/lateral planning); understanding the decision tree and cost functions is key for tuning autonomous driving behavior.
  • Localization (GNSS + LiDAR Fusion) — Apollo fuses GPS/IMU (GNSS) with LiDAR map-matching for cm-level positioning; essential for control accuracy and understanding sensor fusion state machines.
  • Perception Pipeline (3D Object Detection) — GPU-accelerated deep learning (PyTorch) detects obstacles (vehicles, pedestrians, cyclists) from camera and LiDAR; understanding model architectures (e.g., PointNet, YOLO variants) is required for perception module work.
  • Bazel Build System — Apollo uses Bazel (not CMake) for reproducible builds across 23.7M LOC; understanding BUILD file syntax, dependencies, and incremental compilation is necessary for any code change.
  • Control Theory (PID & MPC) — Apollo's control module translates planning trajectories into steering/throttle/brake commands using PID loops and Model Predictive Control; essential for vehicle dynamics tuning.
  • autoware/autoware — Leading open-source autonomous driving platform (ROS-based alternative); Autoware covers similar stacks (perception, planning, control) but uses ROS 1/2 instead of Cyber RT.
  • lgsvl/simulator — LGSVL Simulator was designed to work with Apollo; provides photorealistic CARLA-based simulation environment for testing Apollo's perception and planning modules without hardware.
  • baidu/apollo-scape — Official Apollo dataset repository from Baidu containing labeled perception datasets (images, LiDAR, semantic segmentation) used to train and evaluate Apollo's perception models.
  • pointcloudlibrary/pcl — Point Cloud Library; Apollo's LiDAR perception modules depend heavily on PCL for 3D object detection and clustering algorithms.
  • pytorch/pytorch — PyTorch (via LibTorch 1.7-1.11.0) is the deep learning framework for Apollo's perception models; critical for object detection, semantic segmentation, and motion prediction.

🪄PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Add comprehensive CI workflow for Bazel build verification across modules

The repo uses Bazel as its build system (evidenced by .bazelrc, .bazelignore, WORKSPACE files) but .teamcity/run_ci.sh exists without a corresponding GitHub Actions workflow. New contributors need clear feedback on whether their changes break the build. Adding a GitHub Action that runs 'bazel build //...' and 'bazel test //...' for key modules (cyber, drivers, control, dreamview) would catch integration issues early and reduce CI friction.

  • [ ] Create .github/workflows/bazel-build.yml that triggers on PR and push to main
  • [ ] Add bazel build //collection/cyber:all and //collection/drivers:all targets
  • [ ] Add bazel test commands for unit tests in modules with existing test files
  • [ ] Reference and integrate with existing .teamcity/run_ci.sh logic to avoid duplication
  • [ ] Document the new workflow in CONTRIBUTING.md

Create missing README.md files for top-level collection modules with cyberfile.xml but no documentation

The file structure shows many collection subdirectories (collection/audio, collection/bridge, collection/calibration, collection/canbus, etc.) that have cyberfile.xml metadata files but some lack accompanying README.md documentation. collection/audio/README.md and others exist but appear incomplete based on the sparse README snippet. New contributors cannot understand module purposes, dependencies, or setup without clear documentation in each module directory.

  • [ ] Audit all collection/*/cyberfile.xml files against missing or stub README.md files
  • [ ] For each module, document: module purpose, dependencies, build instructions (bazel build //collection/X:all), and key classes/APIs
  • [ ] Cross-reference with apollo.doxygen configuration to link Doxygen-generated API docs
  • [ ] Add section headers matching the pattern in existing READMEs (e.g., Overview, Dependencies, Build, Usage)
  • [ ] Submit one PR per 2-3 modules to keep review scope manageable

Add clang-format enforcement CI check and fix existing code formatting violations

The repo has .clang-format configuration file but no automated CI check to enforce it on PRs. This leads to inconsistent formatting and requires maintainers to manually request formatting fixes. Adding a pre-commit hook validation and GitHub Action using clang-format-checker would catch violations early and reduce review overhead.

  • [ ] Create .github/workflows/clang-format-check.yml using a standard clang-format action or custom script
  • [ ] Reference CPPLINT.cfg and .clang-format to ensure consistency with existing style rules
  • [ ] Run clang-format against key directories (modules with .cc/.h files) on PR changes
  • [ ] Document the formatting requirements in CONTRIBUTING.md with clang-format installation and pre-commit setup
  • [ ] Optionally: Create script to auto-fix and propose formatting corrections in PR comments

🌿Good first issues

  • Add unit tests for CAN bus frame parsing: The collection/canbus/ module has README.md but likely lacks comprehensive C++ tests for Lincoln MKZ-specific protocol edge cases (e.g., steering angle saturation, throttle ramp rates). Start by creating a test file at modules/canbus/can_frame_test.cc with protobuf fixtures.
  • Document Cyber RT topic schema in web UI: The TypeScript codebase (~1.8M LOC) includes Dreamview dashboard but topic introspection is minimal. Add a TypeScript component under modules/dreamview/frontend/ to visualize published topic names, message types, and subscription counts in real-time for debugging distributed system issues.
  • Implement missing perception module micro-benchmarks: The CUDA perception code (428K LOC) likely lacks latency profiling for inference on Ada GPUs. Create a benchmark binary (modules/perception/inference_benchmark.cc) that measures end-to-end latency for object detection and semantic segmentation on a fixed dataset, using Bazel's benchmark framework.

Top contributors

Click to expand

📝Recent commits

Click to expand
  • d53aa3d — docs: fix README - remove invalid build status badges (yuxin-2)
  • 40c8a01 — Merge pull request #15762 from guyuechaocc/recover_seyond_lidar_driver (yuxin-2)
  • 539f546 — feat: add Apollo 11.0 bev+occ (yuxin-2)
  • 6680288 — [doc]: update seyond lidar driver conf (guyuechaocc)
  • 995b75a — [doc]: update seyond lidar driver readme (guyuechaocc)
  • 3bd2897 — [feat]: recover seyond lidar driver, support hummingbird lidar (guyuechaocc)
  • 4f98406 — Merge pull request #15758 from AELe/my-feature-branch (yuxin-2)
  • 74bb7fd — Merge pull request #15756 from 1012327963/fix-path-loc (yuxin-2)
  • c8dc4d4 — fix: the calculation error in the P matrix in the piecewise_jerk_path_problem (AELe)
  • e8aa8a1 — Fix non-sequential reading of path_loc. (1012327963)

🔒Security observations

Apollo's security posture shows moderate risk due to incomplete visibility into dependency management, CI/CD security controls, and potential hardcoded secrets in configuration files. As a safety-critical autonomous driving platform, this requires enhanced scrutiny. Key concerns include: (1) WORKSPACE dependency declarations not visible for audit, (2) Shell script and Python CI files potentially containing injection vulnerabilities or credentials, (3) Docker configuration not provided, (4) Absence of security policy/disclosure mechanism. The codebase structure appears well-organized with modular components, but security hardening measures are not evident from available files. Immediate priorities: audit all scripts for credentials and injection risks, implement comprehensive dependency scanning, establish security.md policy, and review CI/CD pipeline security controls.

  • Medium · Missing WORKSPACE Security Configuration — WORKSPACE, WORKSPACE.source. The WORKSPACE and WORKSPACE.source files are present but their content is not provided for review. Bazel workspace files can contain external dependency declarations that may reference insecure or unvetted sources. Fix: Review WORKSPACE files to ensure all external dependencies are from trusted sources, pinned to specific versions, and use secure protocols (HTTPS). Implement dependency verification mechanisms.
  • Medium · Insufficient Input Validation in CI/CD Pipeline — .teamcity/pull_request.py, .teamcity/run_ci.sh. TeamCity CI configuration files (.teamcity/*.py) are present, including pull_request.py which may process external inputs. Without visible security controls, these scripts could be vulnerable to injection attacks if processing untrusted data from pull requests. Fix: Implement strict input validation and sanitization for all CI/CD scripts. Use parameterized approaches instead of string concatenation. Audit Python scripts for subprocess/os.system calls with user input.
  • Medium · Potential Secrets in Shell Scripts — apollo.sh, collect_pre.sh, .teamcity/run_ci.sh. Shell scripts like apollo.sh, collect_pre.sh, and .teamcity/run_ci.sh may contain hardcoded credentials, API keys, or sensitive configuration. Common patterns in autonomous driving projects include API tokens for mapping services. Fix: Audit all shell scripts for hardcoded secrets. Use environment variables or secure secret management tools. Implement pre-commit hooks to detect credentials using tools like TruffleHog or GitGuardian.
  • Medium · Docker Configuration Not Fully Visible — .dockerignore, Dockerfile (not visible). .dockerignore is present indicating Docker usage, but Dockerfile content is not provided. Autonomous driving platforms typically run in containers with elevated privileges and network access. Fix: Review Dockerfile for: non-root user execution, minimal base images, layer vulnerability scanning, no hardcoded secrets, proper security context configuration.
  • Low · Missing Security Documentation — Repository root. No SECURITY.md or security policy file is evident in the repository structure. This makes it difficult for security researchers to report vulnerabilities responsibly. Fix: Create a SECURITY.md file with: vulnerability disclosure policy, contact information, expected response times, and PGP key for sensitive reports.
  • Low · Dependency File Content Not Available — Various (likely in modules under collection/). No package.json, requirements.txt, go.mod, or similar dependency manifest files are visible in the provided structure, making it impossible to audit third-party dependencies for known vulnerabilities. Fix: Provide all dependency manifest files for review. Implement automated dependency scanning using tools like Dependabot, Snyk, or npm audit in CI/CD pipeline.
  • Low · Code Format Configuration Accessibility — .clang-format, .prettierrc.json. .clang-format and .prettierrc.json configuration files are present but not reviewed. Misconfigured formatters could potentially strip security-critical code or comments. Fix: Review code formatter configurations to ensure they don't interfere with security-critical code sections. Consider enabling security linters alongside formatters.

LLM-derived; treat as a starting point, not a security audit.


Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.

Healthy signals · ApolloAuto/apollo — RepoPilot