Pangolin is built with the following key Rust crates:
- Axum: Ergonomic and modular web application framework.
- Tokio: Asynchronous runtime for Rust.
- Tower: Modular and reusable components for building robust networking clients and servers.
- Serde: Framework for serializing and deserializing Rust data structures.
- Serde JSON: JSON support for Serde.
- Bytes: Utilities for working with bytes (used in federated proxy).
- Object Store: Unified interface for object storage (S3, GCS, Azure, Local).
- DashMap: Concurrent associative array for high-performance in-memory storage.
- SQLx: Async SQL toolkit for PostgreSQL, MongoDB, and SQLite.
- Features:
postgres,mongodb,sqlite,uuid,chrono,json
- Features:
- MongoDB: Official MongoDB driver for Rust.
- JSON Web Token: JWT creation and validation.
- bcrypt: Password hashing for users and API key hashing for service users.
- AWS SDK for S3: Official AWS SDK for S3 operations and STS credential vending.
- AWS Config: AWS configuration loading.
- reqwest: HTTP client for forwarding requests to external catalogs.
- Uuid: UUID generation for entities.
- Chrono: Date and time handling.
- Tracing: Application-level tracing for async Rust.
- Anyhow: Flexible error handling.
- tokio-test: Testing utilities for async code.
- mockall: Mocking framework for tests.
bcrypt- API key hashinguuid- Service user ID generationchrono- Expiration tracking
uuid- Merge operation and conflict ID generationchrono- Timestamp trackingserde- Conflict serialization
reqwest- HTTP client for proxying requestsbytes- Request/response body handlingaxum::http- HTTP types for forwarding
For credential vending with AWS STS, Azure OAuth2, or GCP service accounts:
- AWS SDK:
aws-config,aws-sdk-sts,aws-credential-types,aws-smithy-types - Azure Identity:
azure_identity,azure_core - GCP Auth:
gcp_auth
Build with cloud features:
# All cloud providers
cargo build --features cloud-credentials
# Individual providers
cargo build --features aws-sts
cargo build --features azure-oauth
cargo build --features gcp-oauthDefault build (without features) uses placeholder implementations for development.
- Rust 1.75+
- 2GB RAM (for development)
- Linux, macOS, or Windows
- Rust 1.82+
- 4GB+ RAM
- Linux (Ubuntu 20.04+ or similar)
- Backend Storage (choose one):
- PostgreSQL 12+ (recommended for production)
- MongoDB 5+ (recommended for cloud-native)
- SQLite 3.35+ (recommended for development/embedded)
- Warehouse Storage: S3, Azure Blob, or GCS
# Clone repository
git clone https://github.com/your-org/pangolin.git
cd pangolin
# Build all crates
cargo build --release
# Run tests
cargo test
# Run API server
cargo run --bin pangolin_api --releaseIf using Docker deployment:
- Docker 20.10+
- Docker Compose 1.29+ (optional)
- Getting Started - Quick start guide
- Configuration - Configuration options
- Deployment - Production deployment