Thanks for helping improve langgraph-cpp. This project is currently a
pre-1.0 developer preview, so API and persisted schema changes are still
possible, but they should be intentional and documented.
Clone with submodules:
git submodule update --init --recursiveBuild and test the default development configuration:
cmake --preset unix-debug
cmake --build --preset unix-debug
ctest --test-dir build/unix-debug --output-on-failureThe default build must not require Python, real model providers, real hardware, or an external llama.cpp setup.
Before opening a pull request, run the narrowest relevant test first, then the default suite:
cmake --build --preset unix-debug
ctest --test-dir build/unix-debug --output-on-failure
git diff --checkFor runtime, threading, storage, checkpoint, or public-header changes, also run Linux compiler and sanitizer coverage when available:
cmake -S . -B build/linux-gcc-debug -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug
cmake --build build/linux-gcc-debug
ctest --test-dir build/linux-gcc-debug --output-on-failureSanitizer and clang-tidy gates are defined in .github/workflows/ci.yml.
- Preserve C++23 and CMake-based builds.
- Keep core runtime code independent of real providers and hardware libraries.
- Use
StatusorResult<T>for recoverable errors. - Do not silently swallow checkpoint, storage, cancellation, schema, or tool execution errors.
- Keep public API changes explicit and update
docs/API_CONTRACT.mdwhen the source contract changes. Usedocs/API_CONTRACT.mdfor the breaking-change process anddocs/MAINTAINER_GUIDE.mdfor maintainer workflow. - Avoid unrelated formatting churn and broad refactors in feature or bug-fix pull requests.
The runtime does not ship privileged tools by default. Do not add built-in shell,
file, network, or hardware tools without an explicit safety design. See
SECURITY.md for reporting security issues and docs/SECURITY_MODEL.md for
the runtime permission, auth, redaction, and observability boundary.