ConnXL Docs

Get started

Quickstart

Stand up a working Excel add-in that runs your own functions against your own data — without any of your spreadsheet data ever leaving your network. This walks the whole path, from signing up to typing your first =NAMESPACE.MODULE.FN(…) formula in a cell.

9 min read

ConnXL has two halves. The dashboard (this app) is where you define connections and functions. The agent — a single binary called connxl-agent — runs on your infrastructure, serves the add-in to Excel, and executes every function call against your data sources. ConnXL never sees your cell data; the agent does all the work inside your network.

What you'll need

A host you control (a VM, a container, or bare metal) that Excel users can reach over HTTPS, a TLS certificate and key for that host, and outbound internet access from the host to this backend. You'll also add a payment card when you create your first add-in — the first add-in is free for a month.

Sign in and create your organization

Open the dashboard and sign in. ConnXL is federated sign-in only — continue with your Microsoft (Entra) identity; there is no password to set, and your account is created on first sign-in.

If your email domain isn't already part of an organization, you land on Create your organization — give your workspace a name and continue. An organization is your tenant: it holds your add-ins, members, and billing. (If a teammate already created the org, accept their invitation from your email instead and you'll skip this step.)

Create an add-in

In the dashboard, create an add-in. An add-in is the thing your end-users install — one entry in the Microsoft 365 admin center, one formula namespace, one taskpane.

  • Namespace — the formula prefix your users type (=NAMESPACE.MODULE.FN(…)). Leave it blank for the default CONNXL, or pick your own (e.g. NORTHWIND). It's immutable after creation, so choose deliberately.
  • Environments — a Development environment is always created. Add QA/Staging/Production now or later.
  • Billing — add a payment card (handled by Paddle; ConnXL never touches it). Your first add-in is free for a month; the card is only charged when the free month ends.

Each environment runs its own agent, and it authenticates to ConnXL with its own mTLS client certificate. You don't set that up by hand — in the next step you download a binary with this environment's identity already embedded, and it enrolls for its certificate on first boot.

Run the agent on your own host

On the environment's Agent page in the dashboard (the Deploy tab), click Download configured agent and pick your host's OS/architecture (Windows x64, Linux x64, Linux arm64). The binary comes with this environment's identity already embedded — the backend URL, the add-in and environment, and a fresh one-time enrollment token — so there is nothing to configure. Unpack it on your host.

Keep the static/ directory from the download next to the binary — it holds the taskpane shell and the neutral logos the agent serves (the agent looks for ./static).

Office add-ins require HTTPS, and you pick how the agent gets there with CONNXL_TLS_TERMINATION. By default (edge) the agent serves plain HTTP on :3000 and a TLS-terminating load balancer in front supplies HTTPS — nothing else goes on disk. To have the agent terminate TLS itself (a single VM with no load balancer, or local testing), set CONNXL_TLS_TERMINATION=agent and drop cert.pem + key.pem beside the binary (generate them with mkcert locally, or use a publicly-trusted certificate — see Install).

terminalsh
# working directory holds: connxl-agent, static/  (+ cert.pem, key.pem only in agent mode)
./connxl-agent      # reads its embedded identity, enrolls, and serves on :3000 (HTTP behind your LB by default)

Untrusted HTTP won't load in Excel

Excel will not load an add-in from an insecure origin. In the default edge mode a TLS-terminating load balancer in front supplies the trusted HTTPS; expose an edge agent directly on plain HTTP and it fails visibly. In agent mode the agent needs a valid cert.pem/key.pem to serve the add-in surface — without them it keeps running (backend link, telemetry) but won't serve the taskpane or functions.

Prefer to wire identity by hand?

The environment-variable path is still fully supported and is the right fit for containers or IaC — grab a raw binary from Advanced / manual setup on the same panel and set CONNXL_BACKEND_URL + CONNXL_ENROLL_TOKEN yourself (click Regenerate to reveal a token). Any CONNXL_* variable you set overrides the value embedded in a configured binary. See Install for the full reference.

Add a connection and a function

Back in the dashboard, point the agent at a data source by creating a connection (Postgres, a REST API, an S3 file, and a dozen more), then build a function on top of it. A function belongs to a module and maps to a formula your users will type.

  • The dashboard stores only metadata and a secret:// reference for any credential — never the secret value itself.
  • The agent probes the source from inside your network when you click Test connection; the backend never dials your data sources. (The test runs on a live agent, so stand the agent up first — or skip the test and validate later.)

See Connections and Functions for worked examples against a REST API and a database.

Publish the environment

Your connections and functions are drafts until you publish them. On the environment's Versions page, click Save version with "Make this version live" checked. Only then does the agent receive the configuration and start serving your functions to Excel.

Nothing reaches Excel until you publish

Editing a connection or function updates the working draft — it does not reach the agent on its own. If your formulas return nothing and the agent's config shows zero functions, you almost certainly haven't published: Save a live version. After that first publish, later edits also flow live over the config channel once you Save a new live version — no agent restart, no redeploy.

Download the manifest and sideload

Set the environment's agent host to the public HTTPS URL where your agent is reachable (Environment settings → Agent host), then download the generated Office manifest — an XML or unified JSON file (not a binary; there is no Office Store step). The manifest points Excel straight at your agent host, so your users' cell traffic only ever reaches your agent. Download it from the environment's Excel install panel, then sideload it, or hand the manifest URL to your Microsoft 365 admin for centralized deployment.

One add-in per environment

The generated name is suffixed with the environment for every environment except production (e.g. My Add-in-QA), so each environment installs as its own distinct add-in.

Use it in Excel

Open the taskpane from the ribbon to browse your functions, or just type the formula. Custom functions live under your add-in's namespace, with your module and function name:

cell A1excel
=NORTHWIND.SALES.TOP_CUSTOMERS(10)

Excel sends the call to your agent, the agent runs it against your connection and returns the result, and the cell fills in. A function that returns rows spills into a range; one that returns a single value lands in the one cell.

Non-production environments suffix the namespace

In any environment other than Production, the formula namespace is suffixed with the environment — Development functions are called =NAMESPACE_DEV.MODULE.FN(…), QA is NAMESPACE_QA, and so on. This keeps a workbook wired to Development from silently calling Production. Only the promoted Production add-in uses the bare namespace you chose.

On this page