An atproto PDS written in Go
1# Cocoon 2 3> [!WARNING] 4You should not use this PDS. You should not rely on this code as a reference for a PDS implementation. You should not trust this code. Using this PDS implementation may result in data loss, corruption, etc. 5 6Cocoon is a PDS implementation in Go. It is highly experimental, and is not ready for any production use. 7 8## Implemented Endpoints 9 10> [!NOTE] 11Just because something is implemented doesn't mean it is finished. Tons of these are returning bad errors, don't do validation properly, etc. I'll make a "second pass" checklist at some point to do all of that. 12 13### Identity 14 15- [ ] `com.atproto.identity.getRecommendedDidCredentials` 16- [ ] `com.atproto.identity.requestPlcOperationSignature` 17- [x] `com.atproto.identity.resolveHandle` 18- [ ] `com.atproto.identity.signPlcOperation` 19- [ ] `com.atproto.identity.submitPlcOperation` 20- [x] `com.atproto.identity.updateHandle` 21 22### Repo 23 24- [x] `com.atproto.repo.applyWrites` 25- [x] `com.atproto.repo.createRecord` 26- [x] `com.atproto.repo.putRecord` 27- [x] `com.atproto.repo.deleteRecord` 28- [x] `com.atproto.repo.describeRepo` 29- [x] `com.atproto.repo.getRecord` 30- [x] `com.atproto.repo.importRepo` (Works "okay". You still have to handle PLC operations on your own when migrating. Use with extreme caution.) 31- [x] `com.atproto.repo.listRecords` 32- [ ] `com.atproto.repo.listMissingBlobs` 33 34### Server 35 36- [ ] `com.atproto.server.activateAccount` 37- [x] `com.atproto.server.checkAccountStatus` 38- [x] `com.atproto.server.confirmEmail` 39- [x] `com.atproto.server.createAccount` 40- [x] `com.atproto.server.createInviteCode` 41- [x] `com.atproto.server.createInviteCodes` 42- [ ] `com.atproto.server.deactivateAccount` 43- [ ] `com.atproto.server.deleteAccount` 44- [x] `com.atproto.server.deleteSession` 45- [x] `com.atproto.server.describeServer` 46- [ ] `com.atproto.server.getAccountInviteCodes` 47- [ ] `com.atproto.server.getServiceAuth` 48- ~~[ ] `com.atproto.server.listAppPasswords`~~ - not going to add app passwords 49- [x] `com.atproto.server.refreshSession` 50- [ ] `com.atproto.server.requestAccountDelete` 51- [x] `com.atproto.server.requestEmailConfirmation` 52- [x] `com.atproto.server.requestEmailUpdate` 53- [x] `com.atproto.server.requestPasswordReset` 54- [ ] `com.atproto.server.reserveSigningKey` 55- [x] `com.atproto.server.resetPassword` 56- ~~[] `com.atproto.server.revokeAppPassword`~~ - not going to add app passwords 57- [x] `com.atproto.server.updateEmail` 58 59### Sync 60 61- [x] `com.atproto.sync.getBlob` 62- [x] `com.atproto.sync.getBlocks` 63- [x] `com.atproto.sync.getLatestCommit` 64- [x] `com.atproto.sync.getRecord` 65- [x] `com.atproto.sync.getRepoStatus` 66- [x] `com.atproto.sync.getRepo` 67- [x] `com.atproto.sync.listBlobs` 68- [x] `com.atproto.sync.listRepos` 69- ~~[ ] `com.atproto.sync.notifyOfUpdate`~~ - BGS doesn't even have this implemented lol 70- [x] `com.atproto.sync.requestCrawl` 71- [x] `com.atproto.sync.subscribeRepos` 72 73### Other 74 75- [ ] `com.atproto.label.queryLabels` 76- [x] `com.atproto.moderation.createReport` (Note: this should be handled by proxying, not actually implemented in the PDS) 77- [x] `app.bsky.actor.getPreferences` 78- [x] `app.bsky.actor.putPreferences` 79 80## License 81 82This project is licensed under MIT license. `server/static/pico.css` is also licensed under MIT license, available at [https://github.com/picocss/pico/](https://github.com/picocss/pico/).