Evidence

The live compatibility ledger.

Every service Mountit can mount, and exactly what has been proved about it — verified with a date, blocked with a count, or never run at all. Not a logo wall. The verdicts on this page are read out of the conformance ledger the app’s own CI gates a release on, and the build fails if this page and that file disagree.

  • 38 services in the app every one selectable in the picker
  • 8 have been run against a server 10 committed records
  • 0 are conformance-clean no must failure, no capability disproved
  • 62 blocking findings, published the return on running the corpus

Run against a real server

8 of 38 services have had the corpus run against them, over 10 committed records. Each record names the lane it came from — a real daemon, a vendor emulator or the local filesystem — and the lane names below are the ones in the app’s own registry rather than a description written afterwards. Heaviest findings first, because the findings are the reason the programme exists.

ServiceStandingRecordsLast runFindingsof which capability claims
SFTP File protocolsBlocked by a findingopenssh-sftp 123 assertions2026-09-01162
Google Cloud Storage Object storageBlocked by a findingfake-gcs 123 assertions2026-09-01132
WebDAV / WebDAVS File protocolsBlocked by a findingrclone-webdavwsgidav-webdav 247 assertions2026-09-0193
FTP / FTPS File protocolsBlocked by a findingpyftpdlib-ftp 123 assertions2026-09-0172
SMB File protocolsBlocked by a findingsamba-smb 122 assertions2026-09-0161
S3 and compatible Object storageBlocked by a findingminio-s3moto-s3 243 assertions2026-09-0151
Local folder File protocolsBlocked by a findinglocal-folder 123 assertions2026-09-0142
Azure Blob Storage Object storageBlocked by a findingazurite-azblob 121 assertions2026-09-0120

Findings is the ledger’s own count of what stands between a service and a clean record: an assertion tagged must that failed, or a capability the backend claimed and the server then contradicted. The second column breaks the contradicted capabilities out of that total — it is not added to it, because the harness already records each one as a failed must. A record goes stale 180 days after the run. Per-service detail — which assertions, and what the harness saw — is on each service’s own page, and the underlying records are committed files in the app repository rather than a report somebody wrote afterwards.

The control: memory

Passes everything

The harness runs the same corpus against its own in-process reference backend, which is evidence for no service anybody mounts. It is here because it is the control: a corpus nothing can pass would produce the same wall of failures as a corpus that finds real defects, and this lane is what tells the two apart. It answered 63 of 63 assertions tagged must and 28 of 28 tagged should, with nothing failing and no capability claim contradicted. Every failure elsewhere on this page is therefore a fact about a protocol or a server, not about the test.

Covered by something other than a lane

4 services have no conformance record and are not simply untested. Either a live suite in the app exercises them directly, or the read/write corpus cannot describe them at all — a read-only service would fail every writing assertion for the one reason it already declares on its own page, and a record saying so would be theatre.

  • HTTP Covered by its own live suite

    A live suite in the app repository exercises this service directly, so the corpus is not the only thing standing between it and evidence.

    Live-tested Verified against a live server
  • Hugging Face Outside the corpus

    Read-only by nature. The corpus is a read and write contract; running it here would report failures the service already declares.

    Not yet tested live Compile-verified; no live server reached yet
  • IPFS Outside the corpus

    Read-only by nature. The corpus is a read and write contract; running it here would report failures the service already declares.

    Not yet tested live Compile-verified; no live server reached yet
  • pCloud Covered by its own live suite

    A live suite in the app repository exercises this service directly, so the corpus is not the only thing standing between it and evidence.

    Live-tested Verified against a live server

No lane yet

26 services have never had the corpus run against them, and this page will not imply otherwise. Most are commercial clouds that need a real account and a developer registration, or self-hostable servers that need a machine somebody has not yet stood up. They mount — they are in the app, and the code paths several of them share have been run — but that is a different claim, and it is made on their own pages rather than here.

How to read a row

Verified
A lane ran the whole corpus against a real server, nothing tagged must failed, and no capability the backend claimed was contradicted by what the server did. The record stands for 180 days and then has to be run again.
Blocked by a finding
A lane ran and found something. The service still mounts; what failed is a specific promise the volume layer relies on — an error code, a refusal, a name that did not survive a round trip.
Covered elsewhere
No lane runs, and something else stands in: a live suite of its own in the app repository, or a service so read-only that a read/write corpus could only report what it already declares.
No lane yet
Nobody has stood a server up for it. There is no record, so there is no claim — not a pending one, not a provisional one, none.

Two ledgers feed these pages and they answer different questions. The coloured dot beside a service — the one on every backend page — comes from the coverage ledger and answers “has this ever been mounted against a real server?”. The standing on this page comes from the conformance ledger and answers “did it keep every promise when it was?”. A service can pass the first and fail the second, and several do. Neither page is allowed to contradict the other: the build fails if they do.

Questions this page invites

Does “blocked” mean the service does not work?

No, and the distinction is the point of this page. Every service here mounts: a volume appears, Finder browses it, files open. Blocked means something narrower and more useful — a lane ran the full corpus of assertions against a real server and at least one assertion tagged must failed, or the backend claimed a capability the server then contradicted.

Those failures are mostly about the edges: what error a create returns when the file already exists, whether a rename refuses to clobber, whether a name with an emoji in it survives a round trip. They are exactly the cases a person hits on the day something goes wrong, which is why we count them rather than counting successful mounts.

Why is nothing marked verified?

Because nothing has earned it yet. The bar is a whole corpus run with no must failure and no capability claim the server disproved — and the first eleven records found dozens of findings across every lane that has run. Publishing a green badge over that would be the thing this page exists to stop.

Several of the findings share one root cause in a layer under the protocols, so a single fix moves more than one row. When one does, the row here changes on the next build with nobody editing this page — the verdict is read from the app’s own ledger file.

How do I know the tests are not simply impossible to pass?

Because the harness runs the same corpus against its own in-memory reference backend, and that lane passes every assertion in it. The reference is on this page as the control: it is the thing that separates “the corpus is broken” from “the corpus found something”.

Where do these numbers come from?

From crates/mountit-conformance/status.json in the app repository — the file the app’s own CI gates a release on. This site does not decide which services are verified; it reads that file, and the build fails if this page and the app disagree by so much as a byte.

What is deliberately not published is the prose beside each verdict in that file: it names internal test hosts and the machine a run happened on. The counts, the dates and the verdicts are all here.

How long does a passing record stand?

180 days. After that the record is stale and the lane has to be run again before the claim can stay published — a protocol implementation that was correct two years ago is a claim about two years ago.