<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>occupysaas.com</title>
  <subtitle>Browse aymeric&#39;s, an independent, searchable archive of readable snapshots from followed feeds, preserved in Git with aggr.</subtitle>
  <id>https://aggr.aymericbeaumet.com/sources/occupysaas.com/</id>
  <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/sources/occupysaas.com/"/>
  <link rel="self" type="application/atom+xml" href="https://aggr.aymericbeaumet.com/sources/occupysaas.com/atom.xml"/>
  <updated>2026-11-02T00:17:27+00:00</updated>
  <author>
    <name>aymeric&#39;s</name>
  </author>
  <generator version="2.0.0" uri="https://github.com/aymericbeaumet/aggr">aggr</generator>
  <entry>
    <id>urn:aggr:item:250c77a220423f9e910abf50667a1d3b266721ae</id>
    <title type="text">OccupySaaS</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/hnrss-org/2026-11-02-occupysaas/"/>
    <link rel="via" type="text/html" href="https://occupysaas.com/"/>
    <published>2026-11-02T00:17:27+00:00</published>
    <updated>2026-11-02T00:17:27+00:00</updated>
    <author>
      <name>misswaterfairy</name>
    </author>
    <category term="news"/>
    <source>
      <title>Hacker News: Front Page</title>
    </source>
    <summary type="text">Est. October 2026 · Apache-2.0 OccupySaaS is a protest movement written in code. Laid-off engineers, armed with AI and public documentation, are building clean-room, open-source, drop-in replacements for the platforms that rent our own…</summary>
    <content type="html">&lt;p&gt;Est. October 2026 · Apache-2.0&lt;/p&gt;
&lt;p&gt;OccupySaaS is a protest movement written in code. Laid-off engineers, armed with AI and public documentation, are building &lt;strong&gt;clean-room, open-source, drop-in replacements&lt;/strong&gt; for the platforms that rent our own industry back to us — one seat at a time.&lt;/p&gt;
&lt;p&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://occupysaas.com/assets/img/logo.png&quot; alt=&quot;OccupySaaS logo: a raised fist holds a laptop showing a code symbol above a crowd of protesters with placards, in front of SaaS company skyscrapers. Below, OCCUPY in red brush letters and SAAS in black.&quot; loading=&quot;eager&quot; decoding=&quot;async&quot; fetchpriority=&quot;high&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;We are the&lt;br /&gt;
1,000,000&lt;/p&gt;
&lt;p&gt;The grievances&lt;/p&gt;
&lt;h2&gt;The software built&lt;br /&gt;
by the 99% belongs&lt;br /&gt;
to the 99%.&lt;/h2&gt;
&lt;p&gt;In 2011, Occupy Wall Street asked who the economy was really working for. In 2026 we&#39;re asking the same question about the cloud. The tools every company runs on are now toll booths — and the people who built them were shown the door.&lt;/p&gt;
&lt;p&gt;Per-seat pricing is a &lt;em&gt;tax&lt;/em&gt; on growth&lt;/p&gt;
&lt;p&gt;Every hire, every intern, every contractor — another line item. Infrastructure shouldn&#39;t charge rent by the head.&lt;/p&gt;
&lt;p&gt;Lock-in is not a &lt;em&gt;feature&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Proprietary APIs, export walls and surprise price hikes keep customers captive. Compatible open alternatives set them free.&lt;/p&gt;
&lt;p&gt;They cut us. We &lt;em&gt;commit&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;A million engineers were let go while the platforms kept growing. We still know how to ship. Now we ship it in the open.&lt;/p&gt;
&lt;p&gt;The method&lt;/p&gt;
&lt;h2&gt;Clean room.&lt;br /&gt;
AI rebuild.&lt;br /&gt;
Drop-in.&lt;/h2&gt;
&lt;p&gt;We don&#39;t leak, decompile or copy anyone&#39;s code. Every project is rebuilt from public documentation and open standards, with AI doing the heavy lifting on the build side of a strict firewall — then proven compatible against the vendors&#39; own public SDKs.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;h3&gt;Read the public record&lt;/h3&gt;
&lt;p&gt;Public API references, open standards (OAuth 2.0, OIDC, REST) and published SDK behaviour become a written specification. Nothing confidential, nothing leaked, nothing from former employers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;Raise the firewall&lt;/h3&gt;
&lt;p&gt;Spec writers and builders stay separated. Each repo carries a &lt;code&gt;CLEAN_ROOM.md&lt;/code&gt; policy, and provenance is recorded for every fixture and reference.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;Rebuild with AI&lt;/h3&gt;
&lt;p&gt;AI agents implement from the spec alone — contracts first (&lt;code&gt;openapi.yaml&lt;/code&gt;), then code, then tests — under human review at every merge.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;Prove compatibility&lt;/h3&gt;
&lt;p&gt;A compatibility laboratory runs the vendors&#39; own public client SDKs against our server. If your existing code doesn&#39;t work unchanged, it isn&#39;t done.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;Release it to everyone&lt;/h3&gt;
&lt;p&gt;Apache-2.0. Self-hostable. Pluggable storage. No telemetry you didn&#39;t ask for, and no seat counter.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Allowed in →&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Public API docs&lt;/li&gt;
&lt;li&gt;Open standards &amp;amp; RFCs&lt;/li&gt;
&lt;li&gt;Public SDK behaviour&lt;/li&gt;
&lt;li&gt;Black-box test results&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Clean room&lt;/p&gt;
&lt;h4&gt;× Never allowed&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Leaked or proprietary source&lt;/li&gt;
&lt;li&gt;Decompiled binaries&lt;/li&gt;
&lt;li&gt;Former-employer confidential info&lt;/li&gt;
&lt;li&gt;Copied UI assets or trademarks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;First releases&lt;/p&gt;
&lt;h2&gt;Two towers&lt;br /&gt;
occupied.&lt;/h2&gt;
&lt;p&gt;Identity and CRM: the two subscriptions almost every company pays for and almost nobody loves. Both are early, both are public, and both welcome contributors today.&lt;/p&gt;
&lt;p&gt;Early · in the open Go&lt;/p&gt;
&lt;h3&gt;ZeroAuthy&lt;/h3&gt;
&lt;p&gt;Replaces&lt;/p&gt;
&lt;p&gt;Auth0&lt;/p&gt;
&lt;p&gt;A self-hostable identity server that speaks the Auth0 Authentication API. Point an existing Auth0 SDK at a ZeroAuthy tenant domain and it works with no code changes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OIDC discovery, JWKS &amp;amp; multi-tenant domains&lt;/li&gt;
&lt;li&gt;Hosted login, authorization code + PKCE&lt;/li&gt;
&lt;li&gt;&lt;code&gt;client_credentials&lt;/code&gt;, rotating refresh tokens, revoke &amp;amp; logout&lt;/li&gt;
&lt;li&gt;Verified with auth0-spa-js, auth0-react &amp;amp; nextjs-auth0&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot; data-language=&quot;Shell&quot;&gt;&lt;span class=&quot;syntax-source syntax-shell syntax-bash&quot;&gt;&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell&quot;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt; build &amp;amp; run&lt;/span&gt;&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;$&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; go build&lt;span class=&quot;syntax-variable syntax-parameter syntax-option syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-parameter syntax-shell&quot;&gt; -&lt;/span&gt;o&lt;/span&gt; bin/zeroauthy ./cmd/zeroauthy&lt;/span&gt;
&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;$&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; ./bin/zeroauthy serve&lt;span class=&quot;syntax-variable syntax-parameter syntax-option syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-parameter syntax-shell&quot;&gt; --&lt;/span&gt;config&lt;/span&gt; config.yaml&lt;/span&gt;
&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;$&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; curl https://localhost:8443/.well-known/openid-configuration&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;SQLite PostgreSQL MySQL gRPC plugins Apache-2.0&lt;/p&gt;
&lt;p&gt;Early · in the open Go · Vue · TypeScript&lt;/p&gt;
&lt;h3&gt;SalesCompel&lt;/h3&gt;
&lt;p&gt;Replaces&lt;/p&gt;
&lt;p&gt;Salesforce&lt;/p&gt;
&lt;p&gt;A free, open-source Salesforce replacement with a tenant-isolated Go/PostgreSQL core, a Vue record editor, and a compatibility laboratory that checks behaviour against Salesforce&#39;s public API contract.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Persistent Account &amp;amp; Contact CRUD&lt;/li&gt;
&lt;li&gt;Object &lt;code&gt;describe&lt;/code&gt; and limited queries&lt;/li&gt;
&lt;li&gt;External-ID upsert &amp;amp; bearer authentication&lt;/li&gt;
&lt;li&gt;OpenAPI 3.2 REST contract &amp;amp; offline test lab&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot; data-language=&quot;Shell&quot;&gt;&lt;span class=&quot;syntax-source syntax-shell syntax-bash&quot;&gt;&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell&quot;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt; run the compatibility laboratory&lt;/span&gt;&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;$&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; npm ci&lt;span class=&quot;syntax-variable syntax-parameter syntax-option syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-parameter syntax-shell&quot;&gt; --&lt;/span&gt;prefix&lt;/span&gt; compat/clients/node&lt;span class=&quot;syntax-variable syntax-parameter syntax-option syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-parameter syntax-shell&quot;&gt; --&lt;/span&gt;ignore-scripts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;$&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; npm&lt;span class=&quot;syntax-variable syntax-parameter syntax-option syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-parameter syntax-shell&quot;&gt; --&lt;/span&gt;prefix&lt;/span&gt; compat/clients/node run check&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;PostgreSQL Multi-tenant REST i18n Apache-2.0&lt;/p&gt;
&lt;p&gt;The occupation map&lt;/p&gt;
&lt;h2&gt;Who&#39;s next?&lt;/h2&gt;
&lt;p&gt;Every category on this board is a monthly invoice somewhere. The movement picks the next target in public — bring a spec, a use case, or a grudge.&lt;/p&gt;
&lt;p&gt;● Occupied&lt;/p&gt;
&lt;h3&gt;Identity &amp;amp; Auth&lt;/h3&gt;
&lt;p&gt;ZeroAuthy — Auth0-compatible login, tokens and tenants.&lt;/p&gt;
&lt;p&gt;● Occupied&lt;/p&gt;
&lt;h3&gt;CRM&lt;/h3&gt;
&lt;p&gt;SalesCompel — Salesforce-compatible records and REST API.&lt;/p&gt;
&lt;p&gt;○ Proposed&lt;/p&gt;
&lt;h3&gt;Docs &amp;amp; Wikis&lt;/h3&gt;
&lt;p&gt;Team knowledge bases that don&#39;t lock your writing behind a seat licence.&lt;/p&gt;
&lt;p&gt;○ Proposed&lt;/p&gt;
&lt;h3&gt;Issue Tracking&lt;/h3&gt;
&lt;p&gt;Tickets, sprints and boards with a compatible API for existing integrations.&lt;/p&gt;
&lt;p&gt;○ Proposed&lt;/p&gt;
&lt;h3&gt;Feature Flags&lt;/h3&gt;
&lt;p&gt;SDK-compatible flag evaluation you can run next to your own services.&lt;/p&gt;
&lt;p&gt;○ Proposed&lt;/p&gt;
&lt;h3&gt;Observability&lt;/h3&gt;
&lt;p&gt;Logs, metrics and traces without per-gigabyte ransom notes.&lt;/p&gt;
&lt;p&gt;○ Proposed&lt;/p&gt;
&lt;h3&gt;Customer Support&lt;/h3&gt;
&lt;p&gt;Help desk, inbox and knowledge base, priced at zero agents.&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/occupysaas/website/issues/new?title=Target%20proposal%3A%20&amp;amp;body=Which%20SaaS%20should%20we%20occupy%20next%2C%20and%20why%3F&quot;&gt;+ Your pick&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Propose a target&lt;/h3&gt;
&lt;p&gt;Open an issue and make the case.&lt;/p&gt;
&lt;p&gt;Proposed categories are open for discussion, not commitments. Names of existing products are used only to describe compatibility.&lt;/p&gt;
&lt;p&gt;Lineage&lt;/p&gt;
&lt;h2&gt;From Zuccotti Park&lt;br /&gt;
to git push.&lt;/h2&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://en.wikipedia.org/wiki/Occupy_Wall_Street&quot;&gt;Occupy Wall Street&lt;/a&gt; began on 17 September 2011 in Zuccotti Park, New York City, with a simple frame: the 1% and the 99%. It had no leaders, made decisions in open assemblies, and spread to hundreds of cities.&lt;/p&gt;
&lt;p&gt;OccupySaaS borrows that spirit and swaps tents for terminals. No marches, no property damage — just working software, published under an open licence, that anyone can run.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“We are the 99%.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;17 Sep 2011 &lt;strong&gt;Occupy Wall Street begins&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Protesters set up camp in Zuccotti Park in Manhattan&#39;s Financial District.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Oct 2011 &lt;strong&gt;The movement spreads&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Occupy camps and general assemblies appear in cities around the world.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;15 Nov 2011 &lt;strong&gt;Zuccotti Park is cleared&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The camp ends; the language of the 1% and the 99% doesn&#39;t.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2022 – 2025 &lt;strong&gt;The great tech layoffs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Wave after wave of cuts across the industry while subscription prices keep climbing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;14 Oct 2026 &lt;strong&gt;ZeroAuthy goes public&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The first clean-room rebuild opens its repo under Apache-2.0.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;15 Oct 2026 &lt;strong&gt;SalesCompel joins the occupation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The second tower. More to come — decided in the open.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Join&lt;/p&gt;
&lt;h2&gt;Occupy everything.&lt;/h2&gt;
&lt;p&gt;You don&#39;t need permission, a badge or a manager. You need a laptop and an afternoon.&lt;/p&gt;
&lt;h3&gt;Write code&lt;/h3&gt;
&lt;p&gt;Pick an open issue, follow the clean-room policy, open a pull request.&lt;/p&gt;
&lt;h3&gt;Self-host it&lt;/h3&gt;
&lt;p&gt;Run a release against your real SDKs and tell us exactly where it breaks.&lt;/p&gt;
&lt;h3&gt;Write specs&lt;/h3&gt;
&lt;p&gt;Turn public docs into precise, testable specifications for the builders.&lt;/p&gt;
&lt;h3&gt;Make noise&lt;/h3&gt;
&lt;p&gt;Star the repos, share the site, and tell your CFO what you&#39;re paying per seat.&lt;/p&gt;
&lt;p&gt;Questions&lt;/p&gt;
&lt;h2&gt;Fair questions.&lt;/h2&gt;
&lt;p&gt;Is this legal?&lt;/p&gt;
&lt;p&gt;Clean-room reimplementation is a long-established way to build compatible software: you work only from public information and independently write your own code. Interoperating with an API is not the same as copying a product. Each project publishes its clean-room policy and source provenance so anyone can check the work. This page isn&#39;t legal advice; if you&#39;re adopting a project for a business, talk to your own counsel.&lt;/p&gt;
&lt;p&gt;Are you affiliated with Auth0, Okta or Salesforce?&lt;/p&gt;
&lt;p&gt;No. OccupySaaS and its projects are independent and not affiliated with, endorsed by, or sponsored by any vendor named on this site. Product names are used only to describe compatibility.&lt;/p&gt;
&lt;p&gt;Can former employees of those companies contribute?&lt;/p&gt;
&lt;p&gt;Yes, but never with confidential knowledge from a former employer. Contributors work only from public material, and anyone with relevant inside knowledge should stay on the public-spec side of the firewall or sit that project out. When in doubt, read the project&#39;s &lt;code&gt;CLEAN_ROOM.md&lt;/code&gt; and ask first.&lt;/p&gt;
&lt;p&gt;Why use AI to build it?&lt;/p&gt;
&lt;p&gt;Because the giants had thousands of engineers and we have a movement. AI agents let a small group turn a precise spec into working code quickly. Humans write the specs, review every change, and own the result, and compatibility tests against real SDKs decide what counts as done.&lt;/p&gt;
&lt;p&gt;Why Go?&lt;/p&gt;
&lt;p&gt;Portability. A Go project compiles to a single self-contained binary, so self-hosting means dropping one file onto a server or into a Docker or Podman image — no installer, no runtime to set up, no tree of shared libraries to keep in sync. The same toolchain cross-compiles for Linux, macOS, Windows, x86 and ARM, and the result fits in a minimal container image. If you&#39;re leaving a SaaS vendor, the replacement should be this easy to carry.&lt;/p&gt;
&lt;p&gt;Why not Rust?&lt;/p&gt;
&lt;p&gt;Nothing is wrong with Rust, and we&#39;re not against it. Go was picked for the first projects because it makes the one-file, container-friendly drop-in the default with very little build setup. Rust can get there too; Go just gets there more simply for the kind of servers we&#39;re building.&lt;/p&gt;
&lt;p&gt;Rust recreations of these projects are welcome — they just haven&#39;t been made yet. The specs, API contracts and compatibility tests are language-neutral, so a Rust port can be checked against the same SDKs. If you want to start one, &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/occupysaas/website/issues/new?title=Rust%20port%3A%20&quot;&gt;open an issue&lt;/a&gt; and say which project.&lt;/p&gt;
&lt;p&gt;Is it production-ready?&lt;/p&gt;
&lt;p&gt;Not yet. Both first projects are early and say so plainly in their READMEs, along with exactly which features work today. Try them, break them, and file issues.&lt;/p&gt;
&lt;p&gt;What does it cost?&lt;/p&gt;
&lt;p&gt;Nothing. Every project is released under the Apache License 2.0. Run it, fork it, sell services around it. The only thing we ask is that you contribute back what you can.&lt;/p&gt;
</content>
  </entry>
</feed>
