docs: add project-level AGENTS.md as the shared agent/contributor guide Promote the agent guidance that was previously a personal, gitignored root file into a committed, contributor-facing AGENTS.md, and tie together the existing .agents/ resources (architecture invariants, generated-files list, skills) and the per-crate AGENTS.md guides under one auto-discoverable root entry point. - Add root AGENTS.md: core commands, repo map, must-read rules, high-signal entry points, and pre-PR checks. Worded for any coding agent, not just one. - CLAUDE.md becomes a symlink to AGENTS.md for Claude Code compatibility. - .gitignore: stop ignoring root AGENTS.md/CLAUDE.md; ignore /.local/ instead, which is where personal/local agent config now lives. Signed-off-by: Dennis Zhuang <killme2008@gmail.com>
4.1 KiB
AGENTS.md
Guidance for coding agents (Claude Code, Codex, ...) and contributors working in
this repository. CLAUDE.md is a symlink to this file. If .local/AGENTS.md or
.local/CLAUDE.md is present, you MUST read it as well — it holds personal
or machine-local overrides (gitignored, not shared). To record a personal or
machine-local override, write it to .local/AGENTS.md (create .local/ and the
file if absent), not to this shared file.
GreptimeDB is an open-source, cloud-native observability database for unified collection and analysis of metrics, logs, and traces. It is written in Rust and provides sub-second querying at PB scale with high cost efficiency.
Core commands
| Task | Command |
|---|---|
| Build (debug) | make build |
| Build (release) | make build RELEASE=true |
| Run standalone | cargo run -- standalone start |
| Test | cargo nextest run (preferred over cargo test) |
| SQL tests | cargo sqlness bare (single case: cargo sqlness bare -t <name>) |
| Format | make fmt (and make fmt-toml for TOML) |
| Lint | make clippy (= cargo clippy --workspace --all-targets --all-features -- -D warnings) |
| Type check | make check |
Toolchain: Rust nightly, Protobuf compiler (>= 3.15), C/C++ build essentials.
Install the test runner with cargo install cargo-nextest --locked.
Repo map
GreptimeDB is a Cargo workspace rooted at the repository; most crates live under
src/ (plus tests-fuzz, tests-integration, tests/runner). Key areas:
- Frontend / protocol:
src/frontend/(request orchestration),src/servers/(wire protocols),src/sql/(SQL parsing) - Storage engines:
src/mito2/(main time-series engine),src/metric-engine/(metrics),src/file-engine/ - Coordination:
src/meta-srv/(metadata & cluster control),src/meta-client/ - Execution / statements:
src/operator/(DDL/DML, request conversion, procedures) - Stream / transform:
src/flow/(continuous aggregation),src/pipeline/ - Query / index:
src/query/,src/promql/,src/index/ - Shared:
src/common/,src/datatypes/,src/store-api/(engine contract),src/catalog/,src/table/
Hot crates carry their own AGENTS.md with a module map, read/write paths,
change-coupling points, and gotchas:
src/mito2/AGENTS.mdsrc/metric-engine/AGENTS.mdsrc/flow/AGENTS.mdsrc/frontend/AGENTS.mdsrc/meta-srv/AGENTS.md
Read before changing code
.agents/architecture-invariants.md— repo-wide rules that are easy to violate and expensive to get wrong (persisted/ wire format compatibility, crate layering, async runtimes, error handling, feature gating, the DataFusion fork)..agents/generated-files.md— tool-generated artifacts that must not be hand-edited (sqlness.result,config/config.md, Grafana dashboards, proto).docs/style-guide.md— code style.CONTRIBUTING.md— contribution flow and CLA.
High-signal entry points
- Main binary:
src/cmd/src/bin/greptime.rs - Configuration:
src/common/config/, example TOMLs inconfig/ - Error handling:
src/common/error/(ErrorExt,StatusCode) - Protocol implementations:
src/servers/src/
Before opening a PR
make fmtmake clippymake test(orcargo nextest run)make check-udeps(runmake fix-udepsif it reports unused dependencies).- If you changed sample config under
config/, runmake config-docs(needs Docker) and commit the regeneratedconfig/config.md. - If you changed a persisted or wire format, add a compatibility test case (see
.agents/architecture-invariants.md). - Use a conventional-commit title, sign off commits (
git commit -s), and sign the CLA.
More
- Agent skills and resources:
.agents/(see.agents/README.md) - Architecture decisions:
docs/rfcs/ - How-to guides:
docs/how-to/