Skip to main content
Algoramming Systems Ltd. logoAlgoramming
HomeAbout
ProjectsBlogsCareersContact
Let's Talk
01Next move

Software that works quietly, every single day.

Ready to build something people stick with?

Send the brief, bullet points are fine. We reply within one business day with a plain-English next step. NDA on request.

Start a projectBook a 30-min call
Studio signalAccepting briefs
Reply
≤ 1 business day
Discovery
Free 30-min call
Engagement
Fixed scope or retainer
Timezone overlap
6+ hours, any region
support@algoramming.comDhaka · GMT (UTC+6)
Reply in one business day
NDA on request
Plain-English scoping note
Senior team, end-to-end
Algoramming Systems Ltd.

An independent product studio in Dhaka, designing and engineering custom software, mobile, and web apps for ambitious teams worldwide.

Innovation in every step

Company

  • About us
  • Services
  • Projects
  • Blogs
  • Careers
  • Contact
  • Book Meeting

Services

  • Custom software
  • Mobile apps
  • Web applications
  • UI/UX design
  • Product consultation
  • Tech partnership
  • Maintenance & support

Get in touch

  • House #12, Road #02, Dag #1677
    Merul Badda, Anandanagar
    Dhaka-1212, Bangladesh
    Open in Maps →
  • +880 1400 629698
  • WhatsApp us
  • support@algoramming.com

Hire dedicated developers

Hire Flutter developersHire Next.js developersHire React developersHire backend developersHire full-stack developersHire product designersHire DevOps engineers
Hire Flutter developersHire Next.js developersHire React developersHire backend developersHire full-stack developersHire product designersHire DevOps engineers

New posts, in your inbox

We send a short email whenever we publish a new field note or ship a studio update. No fixed schedule, no filler, unsubscribe in one click.

Working with teams in

  • DhakaBangladeshBST
  • DubaiUAEGST
  • DohaQatarAST
  • MansfieldUSAEST
  • Mexico CityMexicoCST
  • MonfalconeItalyCET
  • MelbourneAustraliaAEST
  • VarnaBulgariaEET

© 2022-2026 Algoramming Systems Ltd.All rights reserved.

Privacy PolicyTerms and ConditionsSitemap
Home/Field notes/Scaling Postgres with Multigres | 2026 Architecture Guide
Field note

Scaling Postgres with Multigres | 2026 Architecture Guide

Explore how Supabase's Multigres architecture scales PostgreSQL horizontally using a decoupled proxy model, solving the Postgres Cliff for modern applications.

Algoramming Systems Ltd. logo
Written by
Algoramming Systems Ltd.
June 30, 202619 min read4,150 words
  • postgres
  • supabase
  • database
  • cloud-computing
  • kubernetes
  • scaling
Scaling Postgres with Multigres | 2026 Architecture Guide

A quiet crisis is unfolding in modern software architecture. For years, engineering teams have chosen PostgreSQL as their default database. It is highly reliable, feature-rich, and handles complex relational workloads with ease. But when an application experiences explosive growth, that single database instance eventually hits a physical wall. This bottleneck is commonly known as the Postgres Cliff.

Historically, when teams hit this wall, they faced a painful choice. They could either buy increasingly expensive hardware to scale vertically, or undertake a high-risk, multi-month migration to a distributed database. This month, the database landscape changed dramatically. Supabase announced a massive 500 million dollar Series F funding round. This capital injection is designed to accelerate their lead in building agentic database infrastructure. At the core of this effort is Multigres, an open-source horizontal scaling layer for PostgreSQL.

Built in collaboration with Sugu Sougoumarane, the co-creator of Vitess, the technology that famously scaled YouTube, Multigres aims to bring horizontal scaling to the Postgres ecosystem. In this guide, we will break down the architecture of Multigres v0.1 Alpha, which launched in June 2026. We will look at how it decouples compute from storage, resolves high-availability consensus, and changes the way we design scalable systems.

Whether you are a technical founder preparing for a launch or a CTO planning a legacy database rewrite, understanding this architectural shift is essential. We have designed this deep dive to help you evaluate if scaling Postgres with Multigres is the right move for your engineering roadmap.

What is Multigres and how does it scale Postgres?

Multigres is an open-source, Vitess-inspired scaling operating system for PostgreSQL that enables horizontal database scaling, connection pooling, and consensus-driven high availability. It scales Postgres by decoupling query routing from connection pooling across multiple unmodified database instances, allowing teams to partition and shard data without forks or custom extensions.

Multigres Layered Proxy Architecture Client Applications MultiGateway Layer (Compute & Routing) Shields clients from restarts | Handles SQL parsing & query routing Database Node A (Primary) MultiPooler (Connection Pooling) Unmodified PostgreSQL Instance Database Node B (Replica) MultiPooler (Connection Pooling) Unmodified PostgreSQL Instance Postgres Replication
Figure 1: The MultiGateway layer acts as the entry point for applications, managing routing and failover, while independent MultiPooler processes manage connection pools directly on each Postgres node.

In client projects, we frequently see teams struggle with the limits of single-node relational databases. When an application scales, a single machine eventually runs out of CPU, memory, or disk input-output operations. Multigres solves this by sitting as a proxy layer in front of your database nodes. This proxy intercepts SQL queries, parses them, and distributes the workload across multiple underlying Postgres instances. By doing so, it provides a clear, progressive path from a single small server up to a globally distributed, sharded database cluster.

The Postgres Cliff: Why Traditional Scaling Strategies Fail at Scale

Every software product starts with a database. In the early stages, database management is straightforward. You spin up a managed Postgres instance on AWS RDS, Supabase, or GCP Cloud SQL. As user traffic grows, you scale the database vertically by adding more virtual CPUs and RAM. This approach works well for a long time. However, vertical scaling is inherently limited by physical hardware boundaries. You cannot scale a single virtual machine indefinitely.

When you hit the maximum limits of vertical scaling, you hit the Postgres Cliff. To keep the application running, engineers traditionally rely on three methods. Each of these methods introduces severe trade-offs:

  1. Read Replicas: You offload read traffic to replica databases. This is a common pattern, but it does not solve write bottlenecks. If your application is write-heavy, read replicas provide little relief.
  2. Application-Level Sharding: You write custom code in your application to route queries to different databases. This approach is incredibly complex. It pollutes your codebase with data-routing logic. It also makes transactions, joins, and schema migrations exceptionally difficult to manage.
  3. Migrating to NoSQL: You abandon Postgres entirely and migrate to a NoSQL database like DynamoDB or Cassandra. This migration requires rewriting your entire data access layer. You lose ACID transactions, relational integrity, and the expressive power of SQL.

In our work on web application design and development, we have seen how these trade-offs stall product roadmaps. Teams spend months refactoring database code instead of shipping user-facing features. This distraction slows down business growth. It also increases the risk of introducing critical bugs into production systems.

What is Multigres? The Vitess-Inspired Architecture for PostgreSQL

To solve the Postgres Cliff, Supabase looked at how YouTube solved its massive MySQL scaling challenges. YouTube used Vitess, an open-source database clustering system. Vitess acts as a proxy layer that sits in front of MySQL. It handles sharding, connection pooling, and query routing. It allows applications to treat a massive cluster of MySQL databases as if it were a single, giant database.

Multigres is essentially Vitess built specifically for the Postgres ecosystem. The project is led by Sugu Sougoumarane, the co-creator of Vitess, who joined Supabase to bring these proven distributed systems concepts to PostgreSQL.

The primary goal of Multigres is to allow teams to scale Postgres horizontally without losing standard Postgres compatibility. Your application does not need to know that the database is sharded. It continues to send standard SQL queries to a single entry point. Multigres takes care of the complex distributed systems engineering behind the scenes. It manages the read replicas, orchestrates failovers, enforces connection limits, and shards your tables.

Over 60% of new databases on the Supabase platform are now launched autonomously by artificial intelligence coding agents.

This massive volume of database deployments requires an infrastructure layer that can scale programmatically. Multigres is designed to be that layer. It acts as a scalable operating system for Postgres, automating the complex chores that used to require a dedicated team of database administrators.

MultiGateway vs MultiPooler: Decoupling Compute Routing from Connection Pooling

The core architectural innovation of Multigres is its two-level proxy layer. Unlike traditional database proxies that try to handle routing and pooling in a single process, Multigres splits these responsibilities into two distinct, independently scalable components: MultiGateway and MultiPooler.

The MultiGateway Layer

MultiGateway is the top layer of the Multigres architecture. It serves as the entry point for your application. To your application code, MultiGateway looks and acts exactly like a standard PostgreSQL server.

When MultiGateway receives an incoming SQL query, it parses the query, analyzes the SQL abstract syntax tree, and determines where the query needs to go. If you are running a single database, it simply passes the query down. If you are running a primary-replica setup, it automatically routes write queries to the primary node and read queries to the replicas. When you scale to a sharded cluster, MultiGateway inspects the query's sharding key and routes the request to the specific database instance that holds that data.

Because MultiGateway is stateless, you can scale it horizontally to handle massive amounts of concurrent client connections. It acts as a compute layer, shielding your actual database nodes from the overhead of managing client session states.

The MultiPooler Layer

MultiPooler is the bottom layer of the architecture. There is exactly one MultiPooler instance running alongside each individual PostgreSQL database node.

Its primary job is connection pooling. Instead of allowing thousands of direct application connections to overwhelm the Postgres engine, MultiPooler maintains a small, highly optimized pool of persistent connections to the local Postgres process. It is deeply aware of the PostgreSQL protocol, transaction states, and connection-specific settings. This deep awareness ensures that client state changes, like setting a session variable, do not leak between different client sessions.

By separating the gateway from the pooler, Multigres solves a classic scaling bottleneck. We often advise startups that optimizing database compute is one of the easiest ways to cut cloud bills. Decoupling these processes allows you to scale your query-routing compute independently from your database storage nodes. This separation of concerns prevents a surge in connection requests from starving your database of CPU and memory.

High Availability as a Consensus Problem: Solving Split-Brain Risks

In a distributed database setup, maintaining high availability without risking data corruption is incredibly difficult. The classic failure mode is a split-brain scenario. This happens when a network partition divides your database cluster. If both sides of the partition believe they are the primary node, they will both accept write operations. This results in conflicting data that is nearly impossible to reconcile.

Multigres addresses this challenge by treating high availability as a generalized consensus problem. It implements a consensus protocol designed to resolve network partitions safely and automatically. This protocol has two key features that set it apart from traditional database clustering solutions:

  • Unmodified Postgres Replication: The consensus protocol is built directly on top of standard, unmodified PostgreSQL physical replication. You do not need to install complex custom replication engines or modify the Postgres source code.
  • User-Defined Durability Policies: Multigres allows you to define exactly how durable your writes must be. For example, you can specify that a write is only considered successful once it has been committed to a majority of consensus nodes. This flexibility lets you balance write latency against data safety based on your application's specific needs.

When a primary node fails, the Multigres consensus layer quickly detects the failure. It coordinates with the other nodes to elect a new primary. Because the consensus logic lives in the proxy and management layer, Multigres can perform this election and failover without losing any committed transactions. The MultiGateway layer holds incoming application queries during the failover process. Once the new primary is active, the gateway routes the pending queries to the new primary. Your application experiences a brief pause in latency rather than a hard database connection error.

Why Multigres Rejects Database Forks and Custom Extensions

One of the most important design decisions of the Multigres team is their commitment to standard, unmodified PostgreSQL. Many scaling solutions on the market require you to use a custom fork of Postgres. Others rely on complex, proprietary database extensions that must be compiled directly into the database engine.

This approach creates significant risks for engineering teams. When you use a modified version of Postgres, you are at the mercy of the vendor's update cycle. If a critical security patch is released for standard Postgres, you must wait for the vendor to backport that patch to their fork. custom forks often break compatibility with the massive ecosystem of Postgres tools, extensions, and libraries.

Multigres rejects this approach. It is designed to work with standard, vanilla PostgreSQL. The core scaling and management logic lives entirely outside the database engine, in the Go-based proxy and operator layers.

This design philosophy matches our own engineering values. When we provide a tech partnership and consultation for scaling enterprises, we always advise against vendor lock-in. By keeping the database engine clean and unmodified, Multigres ensures that you can always move your data back to standard Postgres if your requirements change.

This clean separation also allows teams to easily adopt modern PostgreSQL capabilities. For instance, you can use advanced extensions like pgvector for AI-native workloads. This compatibility aligns with our view that teams should choose pgvector over dedicated vector databases to keep their architecture simple and maintainable.

The AI Connection: Why Autonomic Database Administration is the Future in 2026

The release of Multigres v0.1 Alpha in mid-2026 comes at a unique moment in software history. We are witnessing an unprecedented boom in AI-driven development. Autonomous AI coding agents, such as Claude Code, are no longer just writing simple scripts. They are actively building and deploying entire software platforms.

According to Supabase CEO Paul Copplestone, demand for their platform is exploding, with a 600% increase in databases year-over-year. Strikingly, AI agents are now deploying the majority of databases on their platform. This shift is fundamentally changing the role of database infrastructure. When software is written and deployed by AI agents, we can no longer rely on human database administrators to manually provision, optimize, and scale databases.

We need autonomic database infrastructure. This means databases must be self-provisioning, self-optimizing, and self-scaling. Multigres is built to serve as the foundational operating system for this agentic future. Because it exposes a clean, programmatic management layer, AI agents can easily orchestrate complex database topologies.

As we explored in our analysis of how AI developer agents shift your MVP scope, the speed of software delivery is accelerating. Multigres allows AI tools to spin up, shard, and manage thousands of databases autonomously. This automation removes the database bottleneck from the modern development lifecycle.

Multigres vs PgBouncer: Rethinking Connection Pooling Strategy

For years, PgBouncer has been the industry standard connection pooler for PostgreSQL. It is a lightweight, reliable tool that has saved countless production databases from connection exhaustion. However, PgBouncer has several architectural limitations that make it difficult to use in modern, dynamic cloud environments.

To understand why Multigres built its own connection pooler, MultiPooler, we must look at how they compare across key operational areas:

Feature PgBouncer Multigres (MultiPooler)
Pooling Modes Requires choosing between Session, Transaction, or Statement modes. Automatically handles pooling without forcing a rigid mode.
User Fairness Can allow a single runaway user or tenant to starve others of connections. Implements per-user pools that share the underlying connections fairly.
Dynamic Configuration Requires manual configuration file reloads or signal sending. Fully dynamic, managed programmatically via the Kubernetes operator.
Query Parsing Does not parse SQL; acts as a blind proxy. Deeply understands the Postgres protocol and transaction states.

The most significant pain point with PgBouncer is its pooling modes. If you choose transaction pooling, which is necessary for scaling high-connection workloads, you lose support for certain Postgres features, such as prepared statements and temporary tables. This limitation forces developers to make compromises in their application code.

MultiPooler solves this by decoupling the connection management logic from the database session state. Because it is designed to work in tandem with the MultiGateway layer, it can preserve the expected behavior of a persistent session while still pooling connections efficiently at the database level.

In our experience, improper connection pooling is a primary reason why background job queues fail under peak traffic. When a spike in background tasks hits a database without intelligent pooling, the database quickly runs out of available connection slots. By replacing PgBouncer with a more intelligent, protocol-aware pooling layer, Multigres prevents these failures from bringing down your production services.

Multigres vs Citus: Horizontal Scaling for PostgreSQL Compared

When engineers think about scaling Postgres horizontally, Citus is often the first tool that comes to mind. Citus is a mature, powerful extension that transforms Postgres into a distributed database. While Citus is excellent for many use cases, it has a fundamentally different architectural philosophy than Multigres.

The primary difference lies in how they integrate with the PostgreSQL engine. Citus is built as a PostgreSQL extension. It modifies the database's internal planner and execution engine to distribute queries across a cluster of coordinator and worker nodes. This deep integration allows Citus to perform complex distributed joins and analytical queries with incredible speed.

However, this deep integration also introduces challenges:

  • Operational Complexity: Running Citus requires managing a complex cluster of modified Postgres instances. Upgrading the underlying PostgreSQL version can be difficult, as you must wait for Citus to support the new release.
  • Vendor Lock-In: Because Citus relies on custom database internals, migrating away from Citus back to standard Postgres is a complex, high-risk undertaking.
  • Resource Coupling: In Citus, the query planning (compute) and data storage are tightly coupled within the database nodes. You cannot easily scale your query-routing capacity independently of your storage capacity.

Multigres takes a different path. It uses a layered proxy architecture that sits entirely outside the database. By keeping the database engine unmodified, Multigres ensures complete compatibility with standard Postgres. It focuses on operational simplicity, high availability, and horizontal scaling via sharding without modifying how Postgres itself stores or processes data.

For teams building modern SaaS applications, the proxy-based approach of Multigres is often much easier to operate and maintain than a deeply integrated extension like Citus. It provides the benefits of horizontal scaling without the operational overhead and vendor lock-in of a modified database engine.

How to Deploy Multigres: Step-by-Step with the Kubernetes Operator

While Multigres is still in its early alpha stage, the team has made ease of deployment a priority. They have released the Kubernetes Multigres Operator, which automates the provisioning and management of Multigres clusters.

To deploy Multigres in your own environment, you need a running Kubernetes cluster and a configured backup location, such as an AWS S3 bucket. The deployment process follows these general steps:

  1. Install the Multigres Operator: You apply the Multigres Custom Resource Definitions (CRDs) and deploy the operator controller to your Kubernetes cluster.
  2. Configure Your Backup Storage: You set up a Kubernetes secret containing the credentials for your cloud storage bucket. Multigres uses this bucket to store automated backups and write-ahead logs.
  3. Define Your Multigres Cluster: You create a YAML configuration file that defines your cluster. This file specifies the number of database nodes, the resource limits for your MultiGateway and MultiPooler instances, and your durability policies.
  4. Apply the Configuration: You apply the configuration file to your cluster. The Multigres Operator automatically provisions the Postgres containers, initializes the databases, configures replication, and spins up the proxy layers.

Once deployed, the operator continuously monitors the health of your cluster. If a database node fails, the operator coordinates with the consensus layer to initiate an automatic failover and provision a replacement node. This automated management reduces the operational burden on your engineering team, allowing you to focus on building features rather than managing database infrastructure.

As you plan your infrastructure deployment, security must remain a top priority. Database credentials, backup configurations, and API endpoints must be carefully secured. We frequently discuss how overlooked API security threatens your scaling roadmap. When deploying distributed database systems, ensuring that your proxy layers and Kubernetes configurations are secure is just as important as optimizing your database queries.

Is Multigres Ready for Your Production Stack in 2026?

With the release of v0.1 Alpha, the technical community is understandably excited about the potential of Multigres. However, as a professional engineering team, we must look at this release with a realistic, critical eye.

The honest answer is that Multigres is currently not production-ready. The v0.1 Alpha release is designed for testing, feedback, and architectural validation. The team has explicitly stated that the APIs and configurations are subject to change before the stable v1.0 release.

some of the most anticipated features, such as Vitess-grade horizontal sharding, are not yet fully implemented in the alpha release. The current version focuses on nailing the hard foundational parts first: connection pooling, automatic failover, consensus-driven high availability, and the Kubernetes operator.

For most production workloads today, we recommend stick with standard, well-optimized Postgres, using proven tools like PgBouncer for connection pooling and managed services for replication and high availability. However, Multigres is a project you should actively watch. It represents the future of how we will scale relational databases.

If you are an enterprise engineering team looking to scale your database infrastructure, we can help. As a software development company in Canada, we specialize in helping client teams design, build, and optimize scalable database architectures. We can work with you to evaluate your current database performance, implement intelligent caching and pooling strategies, and prepare your stack for horizontal scaling when the time comes.

Key takeaways

  • ** Decoupled Proxy Architecture:** Multigres splits database responsibilities into stateless query-routing gateways (MultiGateway) and node-local connection poolers (MultiPooler).
  • Vanilla Postgres Compatibility: Unlike custom forks or invasive extensions, Multigres runs on standard, unmodified PostgreSQL, eliminating vendor lock-in.
  • Consensus-Driven High Availability: It treats failover as a consensus problem, automatically resolving split-brain scenarios without losing committed data.
  • Built for the Agentic Era: The proxy-first, programmatically managed design of Multigres makes it highly suitable for autonomous AI-driven database provisioning and scaling.
  • Alpha Status: While highly promising, Multigres v0.1 Alpha is currently not ready for critical production workloads and should be used for testing and architectural planning.

Frequently asked questions about scaling Postgres with Multigres

What is the difference between Multigres and standard Postgres?

Multigres is not a replacement or a fork of PostgreSQL. It is an external, open-source scaling and management layer that sits in front of standard, unmodified Postgres instances. It provides horizontal scaling, sharding, and advanced connection pooling without modifying the database engine itself.

Can I use Multigres in production today?

No, we do not recommend using Multigres in production yet. The current release is v0.1 Alpha, which is intended for testing, architectural validation, and community feedback. Key features like horizontal sharding are still under active development.

How does Multigres handle connection pooling compared to PgBouncer?

PgBouncer requires you to choose a rigid pooling mode (session, transaction, or statement) and can allow a single user to starve others of connections. Multigres implements MultiPooler, which handles pooling dynamically without forcing a rigid mode and shares connection pools fairly among users.

Does Multigres support standard Postgres extensions?

Yes, because Multigres works with standard, unmodified PostgreSQL, it supports the entire ecosystem of Postgres extensions, including pgvector for AI applications and PostGIS for geospatial data.

How does Multigres solve the split-brain problem?

Multigres implements a consensus protocol built on top of standard Postgres physical replication. This protocol treats high availability as a consensus problem, allowing the system to safely elect a new primary and resolve network partitions without losing committed data.

What is Sugu Sougoumarane's role in the Multigres project?

Sugu Sougoumarane is the co-creator of Vitess, the distributed database engine that scaled YouTube. He joined the Supabase team to lead the development of Multigres, bringing his extensive experience in building large-scale database clustering systems to the Postgres ecosystem.

How do I deploy Multigres in my infrastructure?

You can deploy Multigres using the Kubernetes Multigres Operator. The operator automates the provisioning of database nodes, configures replication, deploys the proxy layers, and manages automated backups to cloud storage like AWS S3.

Is there vendor lock-in when using Multigres?

No, there is no vendor lock-in. Because Multigres is open-source (Apache 2.0 license) and runs on top of standard, unmodified PostgreSQL, you can easily migrate your data back to a standard Postgres setup if you decide to stop using the proxy layer.

Navigating Your Database Scaling Journey

Scaling a database is one of the most challenging milestones in a product's lifecycle. It requires a deep understanding of hardware limits, network protocols, and distributed systems engineering. The launch of Multigres v0.1 Alpha marks a major step forward, offering a glimpse of a future where scaling Postgres horizontally is as simple as deploying a Kubernetes operator.

While the technology is still maturing, the architectural principles behind Multigres are highly relevant today. Decoupling compute from storage, implementing intelligent connection pooling, and planning for horizontal data distribution are strategies that can save your application from costly downtime as you grow.

At Algoramming, we help product teams build resilient, high-performance systems from day one. If you are facing database performance bottlenecks, planning a migration, or designing a new cloud-native application, we are happy to talk it through. Our team can help you evaluate your options, optimize your existing database queries, and design a database architecture that scales smoothly with your business.

We specialize in custom software development and tech partnerships that help engineering teams ship high-quality products without slowing down. Get in touch with us to discuss how we can support your database scaling and cloud infrastructure needs.

Share this
Reply to this note
Working on something?

Have a project in mind?

We design and engineer software, mobile, and web products end-to-end. Send the brief, we will reply within one business day.

Start a project
New posts, in your inbox

Be first to read the next note.

We send a short email whenever we publish a new field note or ship a studio update. No fixed schedule, no filler.

Unsubscribe in one click. We never share your address.

Keep reading

More field notes like this.

All posts
AI Coding Agents in Production | 2026 Strategy Guide01 · Related
June 30, 2026·17 min

AI Coding Agents in Production | 2026 Strategy Guide

Discover how the June 2026 AI updates, including Claude Fable 5, MiniMax M3, and the agentjacking exploit, redefine modern software engineering pipelines.

Read post
What It Costs to Build Enterprise Web Apps in Bangladesh02 · Related
June 30, 2026·16 min

What It Costs to Build Enterprise Web Apps in Bangladesh

A detailed cost and budget breakdown for engineering enterprise web applications in Dhaka, comparing in-house hiring with structured agency partnerships.

Read post
How the New Agentjacking Exploit Redefines Security for Teams Writing Code with AI Agents03 · Related
June 29, 2026·17 min

How the New Agentjacking Exploit Redefines Security for Teams Writing Code with AI Agents

The newly disclosed Agentjacking exploit allows attackers to hijack Claude Code, Cursor, and Codex via Sentry. Learn how to secure your team's AI development pipelines today.

Read post
Liked this note?

Bring us a problem, not just a brief.

We will reply in plain English within one business day, NDA on request. Discovery call is free.

Start a conversationOr browse more field notes