Skip to content
nanogit - Git reimagined for the cloud – in Go

GitHub ReleaseLicenseGo Report CardGoDoccodecov

Overview

nanogit is a lightweight, cloud-native Git implementation designed for applications that need efficient Git operations over HTTPS without the complexity and resource overhead of traditional Git implementations.

Features

  • HTTPS-only Git operations - Works with any Git service supporting Smart HTTP Protocol v2 (GitHub, GitLab, Bitbucket, etc.), eliminating the need for SSH key management in cloud environments

  • Stateless architecture - No local .git directory dependency, making it perfect for serverless functions, containers, and microservices where persistent local state isn't available or desired

  • Memory-optimized design - Streaming packfile operations and configurable writing modes minimize memory usage, crucial for bulk operations and memory-constrained environments

  • Flexible storage architecture - Pluggable object storage and configurable writing modes allow optimization for different deployment patterns, from high-performance in-memory operations to memory-efficient disk-based processing

  • Cloud-native authentication - Built-in support for Basic Auth and API tokens, designed for automated workflows and CI/CD systems without interactive authentication

  • Essential Git operations - Focused on core functionality (read/write objects, commit operations, diffing) without the complexity of full Git implementations, reducing attack surface and resource requirements

  • High performance - Significantly faster than traditional Git implementations for common cloud operations, with up to 300x speed improvements for certain scenarios

Non-Goals

The following features are explicitly not supported:

  • git:// and Git-over-SSH protocols
  • File protocol (local Git operations)
  • Commit signing and signature verification
  • Git hooks
  • Git configuration management
  • Direct .git directory access
  • "Dumb" servers
  • Complex permissions (all objects use mode 0644)

Why nanogit?

While go-git is a mature Git implementation, nanogit is designed for cloud-native, multitenant environments requiring minimal, stateless operations.

Featurenanogitgo-git
ProtocolHTTPS-onlyAll protocols
StorageStateless, configurable object storage + writing modesLocal disk operations
CloningPath filtering with glob patterns, shallow clonesFull repository clones
ScopeEssential operations onlyFull Git functionality
Use CaseCloud services, multitenantGeneral purpose
Resource UsageMinimal footprintFull Git features

Choose nanogit for lightweight cloud services requiring stateless operations and minimal resources. Use go-git when you need full Git functionality, local operations, or advanced features.

These are some of the performance differences between nanogit and go-git in some of the measured scenarios:

ScenarioSpeedMemory Usage
CreateFile (XL repo)306x faster186x less
UpdateFile (XL repo)291x faster178x less
DeleteFile (XL repo)302x faster175x less
BulkCreateFiles (1000 files, medium repo)607x faster11x less
CompareCommits (XL repo)60x faster96x less
GetFlatTree (XL repo)258x faster160x less

For detailed performance metrics, see the performance analysis.

Getting Started

Ready to use nanogit? Check out our guides:

Architecture

Learn about nanogit's design and internals:

Contributing

We welcome contributions! Please see our Contributing Guide for details on how to submit pull requests, report issues, and set up your development environment.

Code of Conduct

This project follows the Grafana Code of Conduct. By participating, you are expected to uphold this code.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Project Status

This project is currently in active development. While it's open source, it's important to note that it was initially created as part of a hackathon. We're working to make it production-ready, but please use it with appropriate caution.

Resources

Want to learn how Git works? The following resources are useful:

Security

If you find a security vulnerability, please report it to security@grafana.com. For more information, see our Security Policy.

Support

Acknowledgments

  • The Grafana team for their support and guidance
  • The open source community for their valuable feedback and contributions

Released under the Apache 2.0 License.