A self-hosted application platform.
Manage Compose applications, their Docker runtime, and the operational signals around them from one place.
简体中文 · Quick start · Documentation · Contributing
Graft is a self-hosted application platform for teams that run Compose applications on Docker. It keeps application records, runtime targets, container resources, and operational views in a single admin surface instead of scattering them across separate tools.
Its current deployment adapter is Compose and its current runtime target is Local Docker. Those boundaries are deliberate: Graft does not present unfinished providers as supported integrations.
| Application first | Register, create, import, template, configure, and operate Compose applications as application-level resources. |
| Unified runtime | Connect application records to a Local Docker target and inspect containers, images, networks, volumes, events, logs, and controlled shell sessions. |
| Observability | Review runtime health, resource trends, dependencies, request performance, access logs, application logs, and audit events. |
| OpenAPI first | OpenAPI 3.1 is the shared API contract; the web client generates its API types from that source. |
| Developer experience | Go modules, a Vue 3 admin shell, explicit runtime wiring, and Compose deployment keep the extension path visible. |
Graft treats Docker and Compose as runtime capabilities, not as the product boundary. The application remains the unit you manage; runtime state and observability remain connected to it.
| Layer | Current responsibility |
|---|---|
| Application | Compose application records, templates, lifecycle actions, configuration workspace, and application logs. |
| Runtime | Local Docker discovery, resource inventory, runtime health, container actions, and real-time signals. |
| Platform | Authentication, RBAC, audit, scheduler, notifications, system configuration, and OpenAPI contracts. |
Graft publishes server and web images to GHCR. A Docker host with Docker Compose is required.
git clone https://github.com/GeWuYou/Graft.git
cd Graft
cp compose.env.example .env
# Set strong values for POSTGRES_PASSWORD and GRAFT_AUTH_JWT_SECRET in .env.
# GRAFT_IMAGE_TAG selects the shared official server/web version: latest, beta, or a fixed release tag such as v1.2.3.
docker compose pull
docker compose up -dOpen http://localhost:3000. The Compose stack brings up PostgreSQL and Redis, runs database migrations through the one-shot bootstrap service, then starts the server and web services.
On the first sign-in, use the default administrator credentials graft / graft-admin. Graft requires this initial password to be changed before the admin shell can be used.
For local development, use the source-tree entrypoints:
# Terminal 1
cd server
# First run only: cp .env.example .env
# After an upgrade: go run ./cmd/graft config validate --format patch
go run ./cmd/graft dev
# Terminal 2
cd web
bun run devSee the deployment configuration template and Compose topology before exposing an instance outside localhost. GRAFT_IMAGE_TAG is the single image-version setting for the official server and web images; use latest, beta, or a fixed release tag. For latest and beta, the runner uses a manifest-derived release target only for that upgrade and leaves the tracking tag in .env unchanged. A fixed-tag upgrade atomically writes a newer verified fixed tag in the same channel and still validates the pulled image digests. Existing instances can follow the official Compose migration guide before enabling controlled upgrades.
- Project design explains the platform boundary and module-oriented architecture.
- Module and dependency injection design describes runtime composition.
- Frontend architecture documents the Vue admin shell and module ownership.
- OpenAPI contract is the canonical HTTP API description.
- Official Compose migration explains the deployment requirements for controlled upgrades.
- MVP implementation plan records the currently approved platform scope.
Graft is focused on completing and hardening its existing application, runtime, observability, and platform loops. Planned work is tracked in the MVP implementation plan; this README only describes capabilities that are present in the repository.
Read AGENTS.md for repository conventions, startup rules, and validation entrypoints. The default local completion command is:
just checkFor narrower work, use cd server && go run ./cmd/graft validate backend for server changes and cd web && bun run check for web changes.
Graft is licensed under AGPL-3.0-only.



