Overview
Discover what makes SCM Manager powerful
SCM‑Manager is a self‑hosted source control server that unifies **Git, Mercurial, and Subversion** under a single, web‑based interface. From a technical standpoint it functions as a **stand‑alone Java application** that bundles its own HTTP server, persistence layer, and authentication mechanisms. This design eliminates the need for external web servers or database installations, making it attractive for developers who prefer minimal operational overhead while still requiring a feature‑rich SCM platform.
Language & Runtime
Frameworks
Data Store
Plugin System
Overview
SCM‑Manager is a self‑hosted source control server that unifies Git, Mercurial, and Subversion under a single, web‑based interface. From a technical standpoint it functions as a stand‑alone Java application that bundles its own HTTP server, persistence layer, and authentication mechanisms. This design eliminates the need for external web servers or database installations, making it attractive for developers who prefer minimal operational overhead while still requiring a feature‑rich SCM platform.
Architecture
- Language & Runtime: Java 11, compiled with Gradle. The project is structured as a collection of Maven‑style modules that produce a single executable WAR and an optional Docker image.
- Frameworks: Uses the JAX‑RS stack for its REST API, Spring Boot (or a lightweight alternative) for dependency injection and configuration, and Hibernate/JPA for optional persistence.
- Data Store: By default it ships with an embedded H2 database for quick starts, but supports PostgreSQL, MySQL, and MariaDB via JDBC. No caching layer is required; the application relies on the database’s native mechanisms for concurrency control.
- Plugin System: Exposes a simple SPI‑based plugin API that allows developers to hook into lifecycle events, add custom authentication providers, or extend the REST surface. Plugins are distributed as JARs placed in a dedicated
plugins/directory.
Core Capabilities
- RESTful API: Full CRUD operations for repositories, users, groups, and permissions. Supports both JSON and XML payloads, with pagination, filtering, and HATEOAS links for discoverability.
- Web UI: A modern, responsive front‑end built with React or Angular (depending on the build variant) that consumes the REST API. The UI is fully configurable via the web interface, eliminating any need to edit YAML/INI files.
- Authentication & Authorization: Supports LDAP, OAuth2, and an embedded user store. Permissions are fine‑grained at the repository level (read/write/admin) and can be assigned to individual users or groups.
- Repository Management: Seamless creation, deletion, and mirroring of Git, Mercurial, or Subversion repositories. Hooks for pre‑commit validation and post‑push notifications are available out of the box.
Deployment & Infrastructure
SCM‑Manager can run as a stand‑alone JAR (java -jar scm-manager.jar) or inside a Docker container. The Docker image is built with Alpine Linux, reducing the footprint to under 200 MB. For production use, it is recommended to deploy behind a reverse proxy (NGINX/Traefik) for TLS termination and load balancing. Horizontal scaling is achievable via a shared database and stateless application instances, while the embedded H2 mode is best suited for development or small teams.
Integration & Extensibility
- Plugin API: Developers can create custom plugins that expose new REST endpoints, modify UI components, or implement bespoke authentication schemes.
- Webhooks: Out‑of‑the‑box support for GitHub/GitLab style webhooks, allowing CI/CD pipelines to react to repository events.
- SDKs & Client Libraries: While not bundled, the REST API is well‑documented and can be consumed by any HTTP client. The project’s Javadoc provides a reference for internal classes that may serve as a starting point for advanced integrations.
- Custom Themes: The UI can be themed by overriding CSS variables and injecting custom JavaScript, enabling branding or workflow‑specific visual cues.
Developer Experience
The build system is Gradle‑based, with a rich set of tasks (run, build, distribution) that streamline development and CI pipelines. Documentation is hosted on the official site, featuring a comprehensive API guide, plugin developer tutorial, and configuration reference. The AGPL‑3.0 license encourages community contributions while protecting the integrity of the codebase. A dedicated support forum and an active mailing list provide timely assistance for integration challenges.
Use Cases
- Enterprise Code Hosting: Companies that need a single, self‑managed solution for multiple VCS types can deploy SCM‑Manager behind their corporate firewall.
- Continuous Integration: Coupled with Jenkins or GitLab CI, the webhook system triggers builds on commit events.
- Educational Platforms: Universities can host course repositories for students, leveraging the fine‑grained permission model to control access.
- Open Source Projects: Projects that prefer self‑hosting over public services can use SCM‑Manager to maintain control over data and branding.
Advantages
SCM‑Manager offers performance through a lightweight Java runtime, flexibility via its multi‑VCS support and plugin system, and cost‑effectiveness by eliminating the need for separate web servers or databases. Its AGPL license ensures that any derivative work remains open, fostering a healthy ecosystem of plugins and integrations. For developers who value full control over their source‑control infrastructure without the operational complexity of traditional servers, SCM‑Manager delivers a compelling balance of features and simplicity.
Open SourceReady to get started?
Join the community and start self-hosting SCM Manager today
Related Apps in development-tools
Hoppscotch
Fast, lightweight API development tool
code-server
Self-hosted development-tools
AppFlowy
AI-powered workspace for notes, projects, and wikis
Appwrite
All-in-one backend platform for modern apps
PocketBase
Lightweight Go backend in a single file
Gitea
Fast, lightweight self-hosted Git platform
Weekly Views
Repository Health
Information
Tags
Explore More Apps
Karaoke Eternal
Host and enjoy karaoke parties from any browser
LibreBooking
Open‑source resource scheduling for teams
google-webfonts-helper
Self-hosted Google Fonts with local fallback and performance optimization
WeTTY
Web terminal access over HTTP/HTTPS
FlashPaper
Zero‑knowledge one‑time secret sharing, no database needed
Freenet
Decentralized, encrypted platform for censorship‑resistant publishing and communication