botocore

The low-level, foundational Python SDK that underpins both boto3 and the AWS CLI

SDK
PyPI
v1.43.118
1,647 stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
82 /100 Excellent
Development Activity 100
Maintenance 52
Community 88
Maturity 60
Momentum 28

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
79 /100 Good
Architecture 90
Code Quality 88
Innovation 75
Learning Curve 62

botocore is Amazon Web Services’ low-level Python interface to virtually every AWS service. Rather than hand-writing a client for each service, botocore generates clients from JSON service models, giving it broad and immediately up-to-date coverage as AWS ships new APIs and services.

It is not typically used directly by application developers; instead it is the shared foundation that boto3 (the higher-level, resource-oriented SDK) and the official AWS CLI are both built on. Anyone building session handling, credential resolution, request signing, or a custom AWS tool at a lower level than boto3 provides depends on botocore directly.

What You Get

  • A botocore.session.get_session() entry point that creates low-level clients for any AWS service (session.create_client('ec2'), etc.)
  • Automatic credential resolution across environment variables, shared config/credentials files, IAM roles, and SSO
  • AWS Signature Version 4 request signing and endpoint resolution handled transparently per service/region
  • Service clients generated from bundled JSON API models, so new AWS services and operations become available as botocore is updated rather than requiring hand-written bindings
  • Optional awscrt-backed extras for CRT-accelerated signing/checksums on performance-sensitive workloads

Common Use Cases

  • Serving as the dependency that boto3 and the AWS CLI use internally for every AWS API call
  • Building a custom, lightweight AWS tool that needs direct client/session control without boto3’s resource abstractions
  • Implementing custom credential providers or request signing/middleware hooks for AWS API calls via botocore’s event system
  • Powering third-party libraries (e.g. cloud storage adapters, infrastructure tools) that need AWS API access without the full boto3 surface

Under The Hood

Architecture: The core loop runs through session.py (Session/credential/config orchestration), client.py (dynamic per-service client class generation from model data), model.py (parses the JSON service models under data/ into a queryable ServiceModel/OperationModel structure), endpoint.py/endpoint_provider.py (region/partition endpoint resolution), auth.py (SigV4/SigV4A request signing), and hooks.py (the pluggable event system other AWS Python tools, including boto3, hook into to customize behavior). Tech Stack: Pure Python with a small dependency set (jmespath for response filtering, python-dateutil, urllib3), plus an optional crt extra pulling in awscrt for native-accelerated signing/checksums; the data/ directory bundles versioned JSON service models for every supported AWS service. Code Quality: Ruff-linted with a strict 79-char line length (Black-compatible), a pytest suite with dedicated slow and validates_models markers (the latter validating the bundled service models themselves), and a well-documented CONTRIBUTING process reflecting Amazon’s ownership and formal SDK maintenance policy. API Design: The session.create_client('service-name') pattern is uniform across all ~300+ AWS services since clients are generated from the same model schema, but the API is intentionally low-level (raw dict request/response shapes, manual pagination in some cases) — developers wanting resource objects, higher-level abstractions, or waiters typically reach for boto3 instead, which layers those on top of botocore’s client objects.

Used by 14 apps in this directory

TypeScript
39%
AGPL 3.0

OpenObserve

Analytics · Devops · Monitoring

22,475

Open source observability platform for logs, metrics, traces, and real user monitoring — delivering 140x lower storage costs than Elasticsearch with a single binary you can run in under 2 minutes.

View details
90
Repo Health
9
Technical
68
Dependency
Built with
TypeScript 39%
Rust 30%
Vue 17%
Updated 6 days ago
TypeScript
50%
Other

Phase Console

Devops · Security

931

End-to-end encrypted secrets management for engineering teams — from local dev to Kubernetes production.

View details
85
Repo Health
73
Technical
63
Dependency
Built with
TypeScript 50%
Python 48%
Updated 1 weeks ago
Python
55%
Other

PostHog

Ab Testing Experimentation · Analytics · Developer Tools

40,397

The all-in-one open source product platform combining analytics, session replay, feature flags, error tracking, AI observability, and a built-in data warehouse in a single self-hostable stack.

View details
92
Repo Health
80
Technical
65
Dependency
Built with
Python 55%
TypeScript 36%
Updated 6 days ago
Python
57%
Other

Sentry

Analytics · Developer Tools · Monitoring

45,632

Developer-first error tracking and performance monitoring platform with AI-powered root-cause analysis across 20+ languages and frameworks.

View details
95
Repo Health
80
Technical
66
Dependency
Built with
Python 57%
TypeScript 42%
Updated 6 days ago
Python
94%
Apache 2.0

SWIRL

Data Engineering · Databases · Search

3,046

Federated AI search and RAG across 100+ enterprise sources—no data extraction, no vector database required.

View details
61
Repo Health
83
Technical
65
Dependency
Built with
Python 94%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers