Koyeb logo

Serverless Postgres speaks PostgreSQL

Connect Koyeb to Excel, Sheets and AI

Koyeb serverless Postgres on .pg.koyeb.app. The card catches the one mistake everybody makes — pasting the app hostname instead of the database one.

1connection
0inbound ports
read-onlyenforced

One connection, every surface

Where your Koyeb data can go

Connect Koyeb once and the same read-only connection feeds all of these — no second setup, no second copy of the data. 9 of 11 have a step-by-step guide.

Guide

Koyeb to Excel

Microsoft Excel · Excel add-in

Pull live Koyeb results straight into a worksheet and refresh them on demand — desktop Excel, Excel Online, Microsoft 365.

Read the PostgreSQL guide
Guide

Koyeb to Google Sheets

Sheets add-on

Run a saved Koyeb query from the sidebar and drop the rows into the sheet. Shared collaborators can refresh it themselves.

Read the PostgreSQL guide
Guide

Koyeb MCP server

Claude, Cursor and MCP clients

Give an AI assistant read-only access to Koyeb with the schema it needs to write correct SQL — no credentials in the chat.

Read the PostgreSQL guide
Guide

Koyeb REST API

HTTP endpoint

Publish a Koyeb query as an authenticated JSON endpoint any application can call, with an OpenAPI 3.1 spec and ready-made Postman, Insomnia and Hoppscotch collections. No database port is opened.

Read the PostgreSQL guide
Guide

Koyeb to Airtable

Automation platform

Sync Koyeb rows into an Airtable base on a schedule, or fetch them inside an Airtable automation script.

Read the PostgreSQL guide
Guide

Koyeb to Baserow

Automation platform

Feed a Baserow table from Koyeb over the REST endpoint — self-hosted or Baserow cloud.

Read the PostgreSQL guide
Guide

Koyeb to SeaTable

Automation platform

Keep a SeaTable base current with Koyeb data without exporting a file or exposing the database.

Read the PostgreSQL guide
Guide

Koyeb to Smartsheet

Automation platform

Push Koyeb results into a Smartsheet grid so plans and reports read from the source system, not last week's export.

Read the PostgreSQL guide
Guide

Koyeb to Anvil

Anvil Works · App platform

Back an Anvil Python app with Koyeb through the REST endpoint instead of embedding database credentials in the app.

Read the PostgreSQL guide
Supported

Koyeb to Power BI

Power Query M

Paste the generated Power Query M into the Power BI Advanced Editor and the report reads live Koyeb results over HTTPS — no ODBC driver, no database port opened.

How Power BI works no Koyeb walkthrough written yet
Supported

Koyeb alerts and reports

Slack · Discord · Email · Webhook

Put a Koyeb query on a schedule and have the rows delivered to Slack, Discord, email or a signed webhook — or hold the message until a row count, threshold or percentage change crosses the line you set.

How alerts and reports work no Koyeb walkthrough written yet

How it works

5 steps, no inbound firewall change

01

Install the Network Agent wherever suits you. It opens one outbound connection and never listens, so Koyeb sees an ordinary client and your network needs no inbound rule.

02

Open the Connection Details tab on the database in the Koyeb console and copy the string. Take it from the database, not from the app.

03

Paste it in. Host, port, user, password and database are all read out of it, and the host is checked for the .pg. that marks it as a database endpoint.

04

The usual Koyeb defaults are already filled in — koyeb-adm as the user and koyebdb as the database — so a fresh service usually needs only the password.

05

Save. Microsoft Excel, Google Sheets, Power BI, MCP and REST all read through that one connection, or join it to your other sources in a single read-only statement.

Feature deep-dive

What Koyeb gives you

The app hostname is not the database hostname

Koyeb is an application platform that also runs Postgres, and the two live one label apart. That is a genuinely easy mistake and it fails badly, so the card intercepts it.

  • Applications are served from .koyeb.app. Databases are reached at .pg.koyeb.app. The difference is the .pg. in the middle.
  • Paste a host ending in .koyeb.app without it and the card stops you with that explanation, instead of letting you save a connection that will only ever time out.
  • A timeout is the worst possible symptom here, because it looks like a firewall problem. People go and check network rules that were never the issue.
  • Database hostnames follow the ep-<name>-<id> shape. Koyeb's Postgres is Neon-based, which is where that pattern comes from.

Beyond that, deliberately ordinary

There is no clever machinery here, and pretending otherwise would only mislead. What the card does is get the details right and stay out of the way.

  • TLS is enforced for every .pg.koyeb.app host whatever the checkbox says, so a string that lost its sslmode in the clipboard still travels encrypted. The traffic is encrypted; the certificate chain is not verified.
  • There is no pooler in the path. Some serverless Postgres services put a transaction-mode pooler in front and need prepared statements pinned off to cope; Koyeb does not, so the agent connects directly and skips all of that.
  • koyeb-adm and koyebdb are prefilled because that is what a fresh Koyeb database starts with. A brand-new service often needs nothing but the password.
  • The connection is saved as PostgreSQL with Koyeb kept as the badge. There is no connection type called Koyeb — which also means a plain Postgres connection you made earlier to a .pg.koyeb.app host will pick up the branding on sight.
-- Ordinary Postgres, read-only
SELECT   c.name,
         COUNT(o.id)   AS orders,
         SUM(o.amount) AS revenue
FROM     public.customers AS c
JOIN     public.orders    AS o ON o.customer_id = c.id
WHERE    o.placed_at >= now() - interval '30 days'
GROUP BY c.name
ORDER BY revenue DESC;

Shared by every database connector

True of every database connector

  • Outbound only — the agent opens one encrypted connection out to Query Streams. No inbound port to forward, no VPN, no IP allowlist, nothing about your database exposed to the internet.
  • Credentials stay put — the database username and password live on the machine you installed the agent on. Query Streams never receives them and cannot reach your database on its own.
  • Read-only, enforced — one statement at a time, SELECT and friends only. A write is rejected on your own machine before it is ever sent to the server, rather than relying on a permission somebody remembered to set.
  • Deploy as many agents as you like — one per site, region or cloud. Every data source they can see arrives in a single dropdown, so nobody has to know which agent hosts what.

What you get once a query is saved

  • Share the capability, not the SQL — a colleague or an outside partner can run your query and change its filters without ever seeing the statement behind it.
  • Filters from either direction — declare them yourself as @variables, or let the connector spot the literal values already sitting in your WHERE clause and offer those as dropdowns.
  • Read it from anywhere — Microsoft Excel, Google Sheets, Power BI, the REST API, AI assistants over MCP, the Query Builder and Nova all read the same saved query.
  • Run several at once — five saved queries into five worksheet tabs, streamed concurrently, however large the results.
  • Join it to anything else you have connected — another database, a business API, or a folder of files, in one read-only statement.

Cross-source SQL

Join Koyeb to the rest of your data

One statement can span Koyeb and your other connections at once. Each source runs only the part it can, streams the result back, and the join happens centrally — the sources never talk to each other and nothing is copied anywhere.

3 connections · 3 agents

Koyeb Serverless Postgres
Microsoft SQL Server Relational engine
Stripe Payments & billing

One statement

-- nothing copied, nothing merged, nothing scheduled
SELECT   c.region, COUNT(*) AS orders, SUM(i.amount_due) AS invoiced
FROM     koyeb_app.public.orders1 f
JOIN     erp_sql.dbo.customers2   c ON c.id = f.customer_id
JOIN     billing.stripe.invoices3 i ON i.customer = c.stripe_id
GROUP BY c.region
ORDER BY invoiced DESC;

The three parts are connection, schema and table — and the connection name is whatever you called it. Illustrative columns; your tables will be your tables. Read-only applies to every piece: SELECT, WITH and EXPLAIN only, with a ceiling on how much any one source may hand over for a single query. How federated queries work

Connection details

What Koyeb needs

Host
ep-<name>-<id>.<region>.pg.koyeb.app — note the .pg., which is what makes it a database rather than an app
Port
5432
Driver
Npgsql, carried by the agent — nothing to install at the Koyeb end
Database
koyebdb on a fresh service, and prefilled as such
Username
koyeb-adm on a fresh service, and prefilled as such
TLS
Required, and forced by the agent for every .pg.koyeb.app host. Encrypted; the certificate chain is not verified
Pooling
None — Koyeb needs no pooled endpoint, so the agent connects directly
Connect timeout
30 seconds, one attempt
Saved as
PostgreSQL, with Koyeb kept as a badge — there is no connection type called Koyeb
Default schema
public, which is what a federated reference carries

One validator carries this card, and it is worth explaining why it is worth a section rather than a footnote. Most connection mistakes announce themselves: a wrong password is an authentication error, a wrong database name says the database does not exist. Pointing a Postgres client at an application hostname produces none of that. It produces a timeout, because there is a real host at the other end and it is simply not listening for Postgres. A timeout reads as a network problem, so people go and check firewall rules, ask their platform team about egress, and lose an afternoon to a missing .pg. in a hostname. Catching it at the point of paste is worth far more than the two lines of code it costs.

Everything else about this connector is honestly unremarkable, and the page says so rather than inventing depth. Koyeb Postgres is Neon-based, the agent talks to it with Npgsql over enforced TLS, and there is no pooler to accommodate. That is the whole story, and a shorter true story beats a longer flattering one.

For a cross-source query Koyeb is ordinary Postgres. A connection you called koyeb_app is written koyeb_app.public.orders, and it joins to a folder of CSVs, an on-premises system of record or a billing API in one read-only statement — with nothing copied and nothing scheduled.

Vendor documentation: www.koyeb.com

FAQ

Questions about Koyeb

Which tools can read Koyeb data through Query Streams?

All of them, from one connection: Excel, Google Sheets, MCP, REST API, Airtable, Baserow, SeaTable, Smartsheet, Anvil, Power BI, scheduled alerts and reports. Connect the database once and every surface reads the same read-only connection — there is no per-tool setup and no second copy of the data.

Do I have to open a firewall port to my Koyeb database?

No. The Query Streams Network Agent runs inside your network and opens a single outbound encrypted connection. Nothing listens for inbound traffic, no VPN is required, and the database keeps its existing firewall rules.

Can Query Streams change data in Koyeb?

No. The agent enforces read-only at the point of execution — one statement at a time, SELECT and friends only. Credentials stay on the agent and are never sent to Query Streams.

What does Query Streams need to connect to Koyeb?

A reachable host, a role and its password — the agent carries the driver, so nothing is installed on the database. Host: ep-<name>-<id>.<region>.pg.koyeb.app — note the .pg., which is what makes it a database rather than an app. Port: 5432. Driver: Npgsql, carried by the agent — nothing to install at the Koyeb end. Database: koyebdb on a fresh service, and prefilled as such.

Can I join Koyeb to another database in the same query?

Yes — that is a federated query. One statement can reference Koyeb and your other connections at once, written as connection.schema.table. Each source runs only the part it can and streams the result back; the join happens centrally, so the sources never connect to each other and nothing is copied or scheduled. Read-only applies to every piece — SELECT, WITH and EXPLAIN only — and there is a ceiling on how much any one source may hand over for a single query. Federated queries are a plan feature; the federated queries page carries the current source and size limits.

Is connecting Koyeb different from connecting PostgreSQL?

Only the connection string. Koyeb speaks the PostgreSQL wire protocol, so filters, scheduling, sharing, the Excel and Google Sheets add-ons and the MCP server all behave identically. The Koyeb card pre-fills the host, port and SSL settings that provider expects.

Is there a Koyeb to Excel guide?

Yes — it is the PostgreSQL guide, and it is correct for Koyeb as written. Koyeb speaks the PostgreSQL wire protocol, so Koyeb to Excel, Koyeb to Google Sheets and every other destination follow the same steps. The only Koyeb-specific part is the connection string, and the Koyeb card fills that in for you.

Put Koyeb where the work happens

Install the agent, point it at your database, and pick a destination.

Read-only Outbound only Credentials stay on the agent