What is Summer Cloud?
Summer Cloud syncs your full game project across machines. Run one command on your desktop, one command on your laptop, and both machines have the exact same project: scenes, scripts, settings, and every binary asset, byte for byte. Game projects mix two kinds of files. Small text files (scenes, scripts, config) merge well in Git. Large binary assets (3D models, textures, audio) do not: Git was not built for them, and Git LFS adds bandwidth bills and setup friction. Summer Cloud handles the whole project tree by content hash, so big assets are first-class. If you use Git, your code can keep living there; Summer Cloud and Git do not fight. If you have never touched Git, you do not need to start. It also means a lost or broken laptop no longer means a lost project.Quickstart
Sign in
~/.summer/cloud-token.Enable cloud sync for the project
--project <path>). It binds the project to Summer Cloud and writes one small file, summer-cloud.json, containing the project’s cloud ID. That file is the only cloud artifact you would ever commit to Git.Push
summer cloud status shows what would sync, and repeated push and pull runs keep machines converged.
How Sync Works
Summer Cloud is content addressed. Every file is identified by the sha256 hash of its bytes, and every project state is a manifest: a list of paths mapping to hashes.- Hash locally. The client walks the tracked tree and hashes each file, using a local cache so unchanged files are not re-read.
- Upload only missing bytes. The client asks the API which hashes the cloud already has, then uploads only the missing blobs. Unchanged files, renamed files, and duplicated files cost nothing to push.
- Commit a manifest version. The client commits a new manifest that points at the verified blobs. The server assigns the next version number. Every version is kept within your plan’s retention window and can be restored.
- There are no clocks in the protocol. When two machines edit concurrently, the first one to sync wins the canonical path, deterministically. It is not “most recent save wins.”
- An edit always beats a deletion. If one machine deletes a file and another edits it, the edited file survives, and the sync result tells you about it.
What Gets Synced
Everything that makes the game run:project.godot, scenes and resources (.tscn, .tres, and friends), scripts, .import and .uid sidecars, asset binaries, addons/, and export presets. Sidecar files travel with their primary file as one unit, so import settings and resource IDs stay consistent across machines.
Some paths are hard excluded and never upload: .godot/, .summer/local/, .git/, node_modules/, .env* files, OS junk like .DS_Store, and temp files.
.summercloudignore
To exclude more, create a.summercloudignore file at the project root. It uses gitignore syntax and is itself synced, so every machine and teammate shares one ruleset:
Conflicts and Recovery
Summer Cloud is built so a sync can never silently destroy your work.Conflicts keep both sides
When two machines change the same file in different ways, the cloud version wins the canonical path and your local bytes are preserved in a conflict set under.summer/local/cloud/conflicts/. The losing bytes are also uploaded to the cloud, so they survive even if the losing machine dies. Inspect and recover with:
Checkpoints before destructive applies
Before a pull modifies or deletes any existing file, the client writes a full local checkpoint of the project. If a sync did something you did not want:Version history
Every push creates a retained version on the server. You can restore any retained version:Guardrails
A push that would delete many cloud files (more than 10, more than 20 percent of the project, or the entire project) refuses to run until you pass--confirm-deletes. A push from a directory that suddenly reads as empty (an unmounted drive, the wrong folder) aborts outright. Pulls download to a staging area, verify the hash of every blob, and only then move files into place atomically.
Storage Plans
Cloud storage rides your existing Summer Engine plan:| Plan | Cloud storage |
|---|---|
| Free | 1 GiB |
| Basic | 5 GiB |
| Pro | 20 GiB |
| Pro+ | 100 GiB |
| Ultra | 500 GiB |
Using Summer Cloud with Git
The two coexist by design.summer-cloud.json is the only file Summer Cloud asks Git to carry, and it almost never changes, so it never causes merge conflicts. A common setup for teams: code reviewed through Git and GitHub, the whole project (including assets) synced through Summer Cloud.
One caution: switching Git branches changes files on disk, which Summer Cloud reads as local edits. Sync before and after branch operations, or keep cloud-synced projects on a single branch.
See Connect Your Project to GitHub for the Git side.
For Agents
Every Summer Cloud operation is available three ways with the same behavior: CLI commands, MCP tools, and an HTTP API under/api/cloud/ at www.summerengine.com. An agent can initialize, push, pull, inspect status, list checkpoints, restore versions, and recover conflicts without a UI.
Cloud CLI Reference
Every summer cloud subcommand with flags and examples
MCP Tools Reference
The seven summer_cloud_* tools for AI agents
Current Limits
- Single files larger than 4.995 GiB are rejected with a clear error.
- A dropped connection on a multi-GiB upload restarts that file from zero.
- No file locking or presence yet: two people editing the same binary at once produce a conflict. The conflict is deterministic and recoverable, but it is still a conflict.
Need help or have questions? Reach out to our founders at founders@summerengine.com or join our community on Discord for fast responses.

