About

Publishing infrastructure you keep

Syndroo exists because posting the same thing in several places should be one API call, and because that call should run on infrastructure the caller controls.

Why the project exists

Posting across platforms turns into four small problems at once. Each platform has its own authentication, its own text limit, its own failure modes, and its own idea of what "sent" means. When that logic lives inside an application, a retry after a timeout can quietly publish the same sentence twice, and nobody can tell which destination actually took it.

Syndroo moves that logic behind one authenticated HTTP surface. A request names the platforms it wants, may carry per-platform wording, and gets back an identifier. Syndroo then writes one publication per platform, dispatches them, and records the outcome so the caller can read the result back instead of guessing.

Design principles in the code

  • Self-hosted by default. You deploy the Worker into your own Cloudflare account and choose SYNDROO_API_KEY yourself. There is no hosted Syndroo service and no account with the project.
  • Credentials stay yours. Platform credentials are Worker secrets in your deployment. Syndroo never holds them on the caller's behalf.
  • Explicit platform enablement. A platform publishes only when its adapter is installed and its credentials are configured. Anything else returns PLATFORM_NOT_CONFIGURED before data is stored, instead of failing silently.
  • One adapter per platform. Adding a platform means adding one adapter package and wiring one explicit switch in the Worker, which keeps the public contract stable as integrations grow.
  • Ambiguity is surfaced, not smoothed over. A write that may have succeeded is marked ambiguous and never resent automatically. Automation should not invent certainty.
  • Open source under Apache-2.0. The license, NOTICE and contribution policy are part of the repository, so self-hosting is a supported path rather than a tolerated one.

Where the project actually stands

The current version is 0.2.0-rc.1, a release candidate that has not been published, tagged or deployed. It is an HTTP API with no web dashboard. Threads and Bluesky run against local mock servers in the end-to-end gate, and live-account acceptance is still pending. X, Tumblr and LinkedIn are implemented and unit-tested, and are labelled experimental until someone validates them against live accounts.

The project is maintained in the open, and its caveats are published next to its features rather than in a footnote. The repository README, changelog and testing documentation are the reference for what each version does and what has been verified.

Copyright and attribution

Third-party components keep their own licenses. The bundled Worker distributes generated third-party license text, and the changelog records the one dependency whose upstream licensing needed an explicit supplement.

Contributing

The repository uses a Developer Certificate of Origin policy: commits are signed off, and contributions follow the same verification gates as the rest of the tree. Bug reports and questions belong in GitHub Issues.