Join the waitlist

The always-on data agent

Analytics that build themselves.

Tell Otto where your data lives. It builds your data warehouse, then keeps improving it from the questions your team asks.

We'll only use your email to tell you when Insignal is ready for your team.

A demo with data from Acme Inc. Ada Kim signs in for the first time. Otto asks where the data lives, and Ada picks PostgreSQL, Stripe and HubSpot. Otto copies 41 tables, builds pipelines into lake.finance.revenue and defines 12 metrics. Ada asks "Which region drove the rise in Q3 revenue?" Otto shows the read-only SQL it ran and answers: Eastmeredrove 66% of the Q3 rise. Its revenue grew 31% to $1.42M, while the company grew 11.5% to $4.98M. Ada asks Otto for a Q3 review dashboard; Otto builds it and shares it with Ed Ortiz, who joins and comments "Can we see churn by plan?" Ada sets an alert on weekly orders, and it fires: "Orders fell 18% last week, from 1,284 to 1,050." In Otto's weekly update, Otto has added plan to the churn metric because 18 questions asked for it, and suggests connecting Google Ads.

Permissions

Sharing never grants data access

Dana and Lee open the same dashboard. Each sees what their role allows. Grants, row filters and column masks apply to every chart, every answer and every agent.

  • Grant. Both can read lake.finance.
  • Row filter. Sales people see their own region: region = 'Eastmere'.
  • Column mask. customer_email carries the pii tag, masked outside Finance.

Q3 review

Viewing as Dana Reyes

Revenue, Q3

$4.98M$1.42M

All regionsEastmere only, by row filter

Largest orders, Q3

order_idregioncustomer_emailamount
A-10482Eastmere$2,140
A-10477Northwind$1,980
A-10471Eastmere$1,872
A-10466Southvale$1,640
A-10459Eastmere$1,515
A-10451Westbrook$1,402

lake.finance.revenue 1 row filter · 1 column mask

What did we spend on payroll in Q3?

Otto

You do not have access to the payroll schema. Ask an admin to add it to your role.

  • Grants on catalogs, schemas and tables
  • Governed tags, row filters and column masks
  • Agents act with the person's permissions, never more
  • Sharing a dashboard never grants data access
  • Secrets never reach the model
  • Every change is written to the audit log

Agents

Agents can do what you can, and no more

Otto is the assistant in every page (⌘J). It answers questions, builds charts and dashboards, and does admin work for people who may do it. Connect Claude or any MCP client. It signs in as you and sees only what you may see.

MCP clientinsignal.acme.internal · Dana Reyes
  1. You

    Add the Eastmere chart to Q3 review and send me the PDF.

  2. insignal.find_chartsquery: "Eastmere"

    1 chart · Eastmere added $336K of the $512K Q3 rise

  3. insignal.add_dashboard_carddashboard: "Q3 review"

    Add 1 card to Q3 review? Dana, Lee and Ed will see it.

    DenyApprove
  4. Approved by Dana Reyes · card added

  5. insignal.export_pdfdashboard: "Q3 review"

    Q3 review.pdf · 2 pages

  6. Assistant

    Done. The Eastmere chart is on Q3 review, and the PDF is attached.

Audit log

  1. 05:38:51Saved chart “Eastmere added $336K…”Dana Reyes in the app
  2. 05:41:09Added card to Q3 reviewDana Reyes via MCP · approved
  3. 05:41:10Exported Q3 review.pdfDana Reyes via MCP

Same entries whether the action came from the app, Otto or an MCP client.

  • Every action is an operation

    The same operations sit behind the UI, Otto and MCP. One permission check covers all three.

  • Risky actions ask first

    Destructive actions always ask first. Over MCP, the client shows the same confirmation.

  • Agents never use a seat

    Agents and MCP connections never use a seat. Seats are for people.

  • Your own model keys

    Bring your own model keys for Anthropic or OpenAI. We add no spend caps and no markup.

Sources

Ask across every source at once

One SQL dialect across every source. Answers can join a database, a bucket of Parquet files and a SaaS app in one query.

Databases

Read live

  • PostgreSQL
  • MySQL and MariaDB
  • Amazon Redshift
  • Iceberg tables

Files

Parquet, CSV, JSON, Delta

  • Files on S3
  • Files on Google Cloud Storage
  • Files on Azure Blob Storage
  • CSV and Excel in chat

SaaS apps

Through connectors · examples

  • Salesforce
  • HubSpot
  • Stripe
  • Shopify
  • Zendesk
  • Jira
  • Google Sheets
  • Notion

One catalog

Grants, tags and a semantic layer over every source. One SQL dialect.

SELECT o.region, sum(r.amount) AS refunds
FROM shop_db.sales.orders o
JOIN lake.finance.refunds r
  USING (order_id)
GROUP BY o.region;

PostgreSQL + Parquet on S3, one query

Otto and the app

  • Answers with their SQL
  • Charts, 15 types
  • Live dashboards
  • PDF reports
  • MCP tools
  • No warehouse needed

    No warehouse? Insignal builds you a lakehouse: connectors copy your SaaS apps in, and dbt models shape them.

  • One meaning for each metric

    A semantic layer (Cube) holds your metric definitions, so “revenue” means one thing in every answer.

  • Read-only, always

    Insignal never writes to your sources. The query guard allows reads only, and sources attach read-only underneath it.

Self-host

Runs on one Linux VM you own

Install Insignal in your own cloud account, next to your data. You hold the credentials, the model keys and the audit log.

  • One Linux VM. Signed images from GitHub Container Registry.
  • Install, upgrade, roll back, back up and restore with the insignal CLI.
  • Backups stream to your own S3 bucket.
  • A signed license file sets your seats. Seats are for people; agents never use one.
  • Your data stays on your server. Otto sends the question and the rows it needs only to the model provider you choose, with your key.
acme-insignal-01
$ insignal install --license ./acme.lic✓ Checked license: Acme Inc · 40 seats✓ Pulled insignal-server image, signature verified✓ Started insignal-server on :443✓ Backups streaming to s3://acme-backups/insignalOpen https://insignal.acme.internal and sign in.

Questions

What teams ask before a pilot

Does Insignal write to our databases?

No. The query guard allows read statements only, such as SELECT, WITH and DESCRIBE, and refuses everything else with a plain message. Sources also attach read-only underneath the guard.

Where does our data go?

It stays on your server. To answer a question, Otto sends the question and the rows it needs to the model provider you choose, using your own key.

Which models does Otto use?

Anthropic and OpenAI models, with your own API keys. We add no spend caps and no markup.

Can Claude or other AI tools use Insignal?

Yes, over MCP. Connect Claude or any MCP client. It signs in as you and sees only what you may see. Destructive actions always ask first. Over MCP, the client shows the same confirmation.

Do agents need seats?

No. Seats count people with an enabled account. Otto, MCP connections and other agents never use one.

What happens when a source is down?

Charts that read it show their last result with the time it was read, and say the source could not be reached.

How do we install and upgrade it?

On one Linux VM, with the insignal CLI. It pulls signed images, and handles upgrade, rollback, backup and restore. We onboard each customer with them.

Ask your own data a question

Join the waitlist. We'll email you when Insignal is ready for your team.

We'll only use your email to tell you when Insignal is ready for your team.