| Crates.io | buildkit-client |
| lib.rs | buildkit-client |
| version | 0.1.4 |
| created_at | 2025-11-09 10:46:52.481718+00 |
| updated_at | 2025-11-10 19:20:50.097939+00 |
| description | A Rust client library and CLI for interacting with BuildKit via gRPC, implementing the complete BuildKit session protocol |
| homepage | |
| repository | https://github.com/AprilNEA/buildkit-client |
| max_upload_size | |
| id | 1923983 |
| size | 272,260 |
A full-featured Rust client library and CLI for interacting with moby/buildkit to build container images via gRPC.
Features • Installation • Quick Start • Usage • Documentation • Contributing
Add to your Cargo.toml:
[dependencies]
buildkit-client = "0.1" # or bkit if you like
tokio = { version = "1", features = ["full"] }
anyhow = "1.0"
git clone https://github.com/corespeed-io/buildkit-client.git
cd buildkit-client
cargo install --path .
Proto files are automatically managed during build - no manual setup required.
See Usage Guide for detailed CLI and library usage examples.
buildkit-client/
├── src/
│ ├── main.rs # CLI tool entry point
│ ├── lib.rs # Library entry point
│ ├── client.rs # BuildKit gRPC client
│ ├── builder.rs # Build configuration
│ ├── solve.rs # Build execution logic
│ ├── progress.rs # Progress handling
│ ├── session/ # Session protocol implementation
│ │ ├── mod.rs # Session lifecycle & metadata
│ │ ├── grpc_tunnel.rs # HTTP/2-over-gRPC tunnel
│ │ ├── filesync.rs # File synchronization
│ │ └── auth.rs # Registry authentication
│ └── proto.rs # Protobuf generated code
├── proto/ # BuildKit protobuf definitions
├── examples/ # Sample Dockerfiles
├── tests/ # Comprehensive test suite
├── docker-compose.yml # Test environment setup
└── README.md
This project directly uses BuildKit's gRPC API:
Control.Solve - Execute build operationsControl.Status - Stream build status updatesControl.Info - Get BuildKit informationControl.Session - Bidirectional session streamAll protobuf definitions are fetched from the moby/buildkit repository.
# Check if BuildKit is running
docker-compose ps
# View BuildKit logs
docker-compose logs buildkitd
# Restart services
docker-compose restart
Ensure the registry allows insecure connections (for localhost):
# docker-compose.yml
services:
buildkitd:
environment:
- BUILDKIT_REGISTRY_INSECURE=true
If you encounter protobuf compilation errors:
# Force rebuild (will redownload proto files)
cargo clean
PROTO_REBUILD=true cargo build
# Or use clone mode if download fails
PROTO_FETCH_MODE=clone cargo build
Proto files are now automatically managed by build.rs. See Development Guide for details.
For detailed development workflows, testing strategies, and proto management, see Development Guide.
Quick commands:
make build # Build project
make test # Run tests
make up # Start docker-compose services
cargo fmt # Format code
cargo clippy # Run linter
This project implements a complete BuildKit gRPC client with:
For detailed architecture documentation, see Architecture Guide.
This project is dual-licensed under MIT OR Apache-2.0.
Contributions are welcome! Please feel free to submit Issues and Pull Requests.
Before submitting a PR:
cargo fmt and cargo clippycargo testMade with ❤️ by AprilNEA