# Multigres > Multigres is a horizontally scalable architecture for PostgreSQL supporting multi-tenant, highly available, and globally distributed deployments, while staying true to standard Postgres. # Docs - [Multigres Upcoming features](https://multigres.com/docs/index.md): Vitess for Postgres. - [Multigres Architecture Overview](https://multigres.com/docs/architecture.md): Multigres Architecture Overview - [Contributing](https://multigres.com/docs/contributing.md): Contributing to Multigres. - [GitHub Workflow](https://multigres.com/docs/github-workflow.md): Pull request workflow used in Multigres - [MVP Project Plan](https://multigres.com/docs/mvp.md): Implementation plan. - Consensus - [Credits](https://multigres.com/docs/consensus/part-00.md): Contributors and acknowledgments for the Generalized Consensus series. - [Part 1: Defining the Problem](https://multigres.com/docs/consensus/part-01.md): In this blog series, I have the following goals: - [Part 2: Building the Foundation](https://multigres.com/docs/consensus/part-02.md): In our previous post, we came up with an informal definition : - [Part 3: Governing Rules](https://multigres.com/docs/consensus/part-03.md): As we solve the problem of durability, we will realize that there is a simple set of governing rules that we will be applying repetitively. We will develop these as we progress in our design. However, we will share their entirety upfront. - [Part 4: Fulfilling Requests](https://multigres.com/docs/consensus/part-04.md): Let’s restate the subset of rules that are relevant to this section: - [Part 5: Before and After](https://multigres.com/docs/consensus/part-05.md): Let us reiterate the relevant rules from part 3. - [Part 6: Revocation and Candidacy](https://multigres.com/docs/consensus/part-06.md): Reiterating the relevant part of the rules. - [Part 7: Discovery and Propagation](https://multigres.com/docs/consensus/part-07.md): Rules covered in this section: - [Part 8: Changing the Rules](https://multigres.com/docs/consensus/part-08.md): So far, we have analyzed fulfillment of requests and leadership changes for a consensus system. In reality, these two actions alone are not sufficient to maintain long-running clusters. In addition to these, we also need the following capabilities: - [Part 9: Consistent Reads](https://multigres.com/docs/consensus/part-09.md): Most official publications of consensus protocols have paid lip service to the issue of consistent reads. Implementors of these protocols have each developed their own methods for achieving consistency, and they all involve trade-offs. - [Part 10: Addenda](https://multigres.com/docs/consensus/part-10.md): In a distributed system, there are no accurate methods of detecting failure. When a node becomes unreachable, it could be one of the following problems: - [Part 11: Recap](https://multigres.com/docs/consensus/part-11.md): We covered a lot of ground in this series. We started with the following objectives: ## Blog - [How Multigres Supports LISTEN/NOTIFY Across Pooled Connections](https://multigres.com/blog/listen-notify.md): LISTEN/NOTIFY is a per-session feature, and Multigres pools connections away from clients. Here's how we keep Postgres's pub/sub working when no client owns a backend session. - [Building a Truly Compatible Postgres Proxy: The Multigres Story](https://multigres.com/blog/building-a-truly-compatible-postgres-proxy.md): True Postgres compatibility means a client can't tell it's talking to a proxy — not at the wire, not in a message, not in a diagnostic field. What we learned chasing that bar while building Multigres, and how we measure it with Postgres's own regression suite instead of asserting it. - [Deploying the Multigres Operator](https://multigres.com/blog/deploying-the-multigres-operator.md): Deploy Multigres on Kubernetes with the operator—HA, pooling, backups, and sharding without wiring each piece yourself. - [Handling edge cases using consensus](https://multigres.com/blog/handling-edge-cases-using-consensus.md): When scaling a Multigres cluster is a consensus problem—and why correct failover alone is not enough to prevent rare data loss. - [Postgres High Availability from first principles](https://multigres.com/blog/high-availability-from-first-principles.md): How Multigres applies generalized consensus to Postgres HA: fast failovers, durable handovers, and what that looks like in a live demo. - [Running a real Postgres app on Multigres, at scale](https://multigres.com/blog/drop-in-postgres-proven-with-a-real-app.md): Benchmarking Multigres connection pooling at scale and proving Postgres compatibility by running Miniflux unchanged. - [How a Multigres Cluster Bootstraps](https://multigres.com/blog/multigres-cluster-bootstrap.md): From empty cluster to writable primary: automated initdb, seed backups, replica restore, and leader election in one Multigres flow. - [One parse per query, no matter how many gateways](https://multigres.com/blog/one-parse-per-query-no-matter-how-many-gateways.md): Deduplicating prepared statements across many multigateways so Postgres parses each query once, not once per gateway. - [Per-user pools that share fairly](https://multigres.com/blog/per-user-pools-that-share-fairly.md): Why Multigres pools connections per user, how pools share Postgres's connection budget fairly, and constant-time routing at scale. - [Pooling without choosing a mode](https://multigres.com/blog/pooling-without-choosing-a-mode.md): How Multigres picks statement, transaction, or session pooling per query instead of forcing one PgBouncer-style mode at configure time. - [Two jobs, two processes: why Multigres has its own connection pooler](https://multigres.com/blog/two-jobs-two-processes.md): Why Multigres splits client acceptance (multigateway) from backend pooling (multipooler) instead of using a single-process pooler like PgBouncer. - [How TLA+ Caught a Silent Data Divergence Bug in Postgres’s pg_rewind](https://multigres.com/blog/tla-pg-rewind.md): TLA+ modeling caught a silent data-loss bug in Postgres pg_rewind during Multigres HA work—what we found and how we fixed it. - [A 2.5x faster Postgres parser with Claude Code](https://multigres.com/blog/ai-parser-engineering.md): Same engineer. Same complexity. A year last time, eight weeks this time. This isn't a story about AI writing code. It's a story about the system, expertise, and discipline that made AI actually useful. - [Generalized Consensus: Recap](https://multigres.com/blog/generalized-consensus-part11.md): A recap of the generalized consensus framework—from the informal definition through durability, leadership changes, reads, and production addenda. - [Generalized Consensus: Addenda](https://multigres.com/blog/generalized-consensus-part10.md): Production necessities: health checks, failure detection, observers, and operational patterns for running consensus at scale. - [Generalized Consensus: Consistent Reads](https://multigres.com/blog/generalized-consensus-part9.md): Leader leases, heartbeat reads, quorum reads, and other trade-offs for consistent reads in replicated consensus systems. - [Generalized Consensus: Changing the Rules](https://multigres.com/blog/generalized-consensus-part8.md): Safely changing durability policies, adding or removing cohort nodes, and keeping agents aligned when cluster rules evolve. - [Generalized Consensus: Discovery and Propagation](https://multigres.com/blog/generalized-consensus-part7.md): Discovering the best timeline, honoring durable-but-unapplied decisions, and propagating state so the next leader can resume safely. - [Generalized Consensus: Revocation and Candidacy](https://multigres.com/blog/generalized-consensus-part6.md): Revoking prior leadership and recruiting cohort members—the prerequisites a new leader must satisfy before taking over. - [Generalized Consensus: Ordering Decisions](https://multigres.com/blog/generalized-consensus-part5.md): Term numbers, failure detection, and the groundwork for safe leadership changes when multiple agents must order decisions sequentially. - [Generalized Consensus: Fulfilling Requests](https://multigres.com/blog/generalized-consensus-part4.md): How leaders, followers, and observers fulfill requests while meeting quorum durability, with a walkthrough of the request-processing workflow. - [Generalized Consensus: Governing Rules](https://multigres.com/blog/generalized-consensus-part3.md): The durability and consistency rules that underpin any consensus implementation—and how following them lets you reason about correctness. - [Generalized Consensus: Setting the Requirements](https://multigres.com/blog/generalized-consensus-part2.md): From single-value Paxos to log replication: durability rules, coordinators, and the requirements every generalized consensus system must satisfy. - [Generalized Consensus: Defining the Problem](https://multigres.com/blog/generalized-consensus-part1.md): Why consensus feels like a black box, and how reframing the problem into goals and rules can make Paxos, Raft, and successors easier to adapt. - [Introducing Generalized Consensus: An Alternate Approach to Distributed Durability](https://multigres.com/blog/generalized-consensus.md): Announcing a blog series that reframes consensus as adaptable rules and goals—beyond treating Raft or Paxos as monolithic black boxes. - [High Availability and Postgres full-sync replication](https://multigres.com/blog/postgres-ha-full-sync.md): Postgres HA with physical replication and full-sync mode: trade-offs, durability pitfalls, and how Multigres plans to support it safely. - [Interview: Multigres on Postgres.FM](https://multigres.com/blog/postgres-fm-interview.md): Watch Sugu on Postgres.FM on Multigres, sharding Postgres, and lessons from building Vitess. - [Interview: Multigres on Database School](https://multigres.com/blog/database-school.md): Sugu on Database School: from Vitess at YouTube to building Multigres for Postgres.