# Open Source at Swarmfile

Swarmfile's open-source half is the server you can run yourself and the standalone tools and libraries that work with or without the hosted service. They are dual-licensed MIT/Apache-2.0 - source included - and published as public projects on our own hub: [browse the swarmfile organization](https://swarmfile.com/public/swarmfile) to see each project's code, releases and README (it also carries the LGPL source of the modified libfuse3 the macOS app ships). The open-source recordings on [the demo page](https://swarmfile.com/demo) are these tools doing their real jobs, nothing re-enacted; for the design behind them, read [Open-sourcing our AI-Engineering Version Control System](https://swarmfile.com/blog/an-open-source-ai-engineering-vcs).

## Run the server yourself

**Swarmfile Server (Community)** is a single-tenant server - SQLite for metadata, a local directory (or an S3-compatible bucket) for file bytes - that speaks the same API as the hosted service, so the desktop app, git, git-LFS and the standalone tools can all point at yours:

```bash
curl -fsSL https://get.swarmfile.com/server | sh
```

[Self-Hosting the Community Server](https://swarmfile.com/docs/guides/self-hosting) walks the whole path: the first-run sequence, connecting the desktop app's self-hosted edition, git and git-LFS against it, keys and roles, the peer-to-peer swarm, storage and backups, and upgrades. See it happen end to end:

![First run of the community server on localhost: initialize a data dir, get an org and a project, mint a key, serve the API - then the open doctor verifies it.](https://swarmfile.com/demo/oss-server.cast)

The community server deliberately leaves parts of the hosted service out (access rules and sharing, end-to-end encryption, previews, hosted CI, the Office caches feature set, billing). [The guide lists what stays hosted](https://swarmfile.com/docs/guides/self-hosting#what-the-community-server-leaves-to-the-hosted-service), and the client tools say so in place rather than failing.

## The standalone tools

Each of these runs standalone - no engine and no mount required. Most have a one-line installer: `curl -fsSL https://get.swarmfile.com/<tool> | sh`, with `lfs`, `migrate`, `seed`, `mirror`, `doctor` and `git-v` as the channels; the git-LFS agent and the git remote helper also have Windows PowerShell forms (`irm https://get.swarmfile.com/lfs.ps1 | iex`).

Every tool release carries binaries for macOS, Linux and Windows, each on x64 and ARM. The macOS binaries are signed and notarized by Apple, the Windows ones are Authenticode-signed, and each archive has a `.sha256` file plus a `SHA256SUMS` list for the release, which the installers check before installing. On a public release page the assets are grouped by family; the per-file `.sha256` files and `SHA256SUMS` sit under **Checksums**, and each row's digest control copies the full SHA-256.

- **`swarmfile-lfs`** - the git-LFS transfer agent: chunked, resumable large-object pushes through git-lfs's custom-transfer protocol. Source: [swarmfile-lfs](https://swarmfile.com/public/swarmfile/swarmfile-lfs). See [Git-LFS](https://swarmfile.com/docs/guides/git-lfs).
- **`swarmfile-git-remote`** - the standalone `swarmfile://` git helper: clone, fetch and push a project with no engine installed, including an anonymous clone of a public project. Source: [swarmfile-git-remote](https://swarmfile.com/public/swarmfile/swarmfile-git-remote). See [Cloning a Project with Git](https://swarmfile.com/docs/guides/git-clone).
- **`swarmfile-migrate`** - import an existing directory tree, file list or S3 bucket into a project. Source: [swarmfile-migrate](https://swarmfile.com/public/swarmfile/swarmfile-migrate). See [Migrating Existing Data](https://swarmfile.com/docs/guides/migrating-existing-data).
- **`swarmfile-seed`** - place one local file at a project path without mounting a drive. Source: [swarmfile-seed](https://swarmfile.com/public/swarmfile/swarmfile-seed). See [Seeding a File Into a Project](https://swarmfile.com/docs/guides/seeding-files).
- **`swarmfile-mirror`** - copy a project, or a subtree, from one hub to another. Source: [swarmfile-mirror](https://swarmfile.com/public/swarmfile/swarmfile-mirror). See [Mirroring a Project Between Hubs](https://swarmfile.com/docs/guides/mirroring-projects).
- **`swarmfile-doctor`** - connectivity diagnostics for a hub or a self-hosted server: DNS, TLS, health, the key, the block path, the declared profile. Source: [swarmfile-doctor](https://swarmfile.com/public/swarmfile/swarmfile-doctor). See [Diagnosing Connectivity](https://swarmfile.com/docs/guides/connectivity-doctor).
- **`swarmfile-verify-history`** - the offline verifier for signed history; it ships with every desktop installer, and its source, releases and test vectors are at [swarmfile-verify-history](https://swarmfile.com/public/swarmfile/swarmfile-verify-history). See [Verifiable History](https://swarmfile.com/docs/guides/verifiable-history).

## The libraries and contracts

The shared pieces are open source in the same repositories, so the tools and the engine are never forks of each other:

- **`swarmfile-chunker`** - the FastCDC content chunker the engine, the CI runner and the git-LFS agent all carry, published as a crate (`cargo add swarmfile-chunker`). The git-LFS agent itself installs with `cargo install swarmfile-lfs-transfer`.
- **`swarmfile-lib`** - the connectivity library: the hub wire contract, the route plan, the HTTP transport and the git helper's hub client. It ships as source inside the published projects (the git remote helper above is built on it).
- **`swarmfile-api`** - machine-readable contracts: the hub's OpenAPI document, the community server's core-profile OpenAPI, and a generated dependency-free TypeScript client. Source: [swarmfile-api](https://swarmfile.com/public/swarmfile/swarmfile-api).
- **`swarmfile-ci-workflow`** - the offline compiler for Swarmfile's native `.swarmfile/ci.yml` dialect, with a one-way GitHub Actions importer. Source: [swarmfile-ci-workflow](https://swarmfile.com/public/swarmfile/swarmfile-ci-workflow).
- **`swarmfile-sync-agent`** - the customer-hosted Active Directory / LDAP directory-sync agent. Source: [swarmfile-sync-agent](https://swarmfile.com/public/swarmfile/swarmfile-sync-agent). See [LDAP Directory Sync](https://swarmfile.com/docs/admin/ldap-sync).
- The source for the modified **libfuse3** the macOS app ships (LGPL) is published too: [swarmfile-libfuse3](https://swarmfile.com/public/swarmfile/swarmfile-libfuse3).

![A standalone Rust program whose only dependency is the published swarmfile-chunker crate - the same chunker the engine, the CI runner and the git-LFS agent carry. It chunks an 8 MB master, then inserts 16 bytes in the middle: every chunk outside the edit keeps its content id, which is what makes dedup survive edits.](https://swarmfile.com/demo/oss-lib.cast)

## Work with Git through it

A public, git-enabled project clones **with no credential at all** - the helper mints a short-lived proof-of-work ticket - and a key holder can clone, fetch and fast-forward push any project with git enabled:

```bash
git clone swarmfile://my-org/my-project
```

![A public project on the hub clones with the open helper and no credential - no sign-in, no key, nothing stored. The helper serves a shallow, depth-1 history by default and says plainly that `git fetch --unshallow` or `--depth=N` gets the rest.](https://swarmfile.com/demo/oss-anonymous-clone.cast)

[Cloning a Project with Git](https://swarmfile.com/docs/guides/git-clone) covers turning git access on and what a clone contains; the [helper reference](https://swarmfile.com/docs/cli/git-remote-swarmfile) covers install. None of this asks you to leave your git host: [Git and Swarmfile](https://swarmfile.com/docs/guides/git-and-swarmfile) maps the three ways the two fit together, including pointing stock git-LFS at a project so only the big files live here ([Git-LFS](https://swarmfile.com/docs/guides/git-lfs)).

## Get involved

- **File an issue.** A public project can carry a light issue tracker - anyone can read it, and a free account with a verified email can post ([Public Projects & Org Profiles](https://swarmfile.com/docs/guides/public-projects-and-org-profiles#issues)).
- **Fork it.** An org can fork a public release into itself, with provenance back to the source ([Publishing Releases](https://swarmfile.com/docs/guides/publishing-releases)).
- **Publish your own.** [Publishing Quickstart (Open Source)](https://swarmfile.com/docs/guides/publishing-quickstart) is the ten-minute path from a repository to a public release on the Free plan, no card required.
- **Check our work.** Every release on a public project page carries its provenance, and `swarmfile-verify-history` lets you recompute a project's commit chain from outside ([Verifiable History](https://swarmfile.com/docs/guides/verifiable-history)).
