Skip to main content
connic
Back to BlogAnnouncement

Introducing connic apps: Host the Frontend for Your AI Agents

connic apps ships the frontend of your AI agents in the same deploy, with sign-in for your team or customers and data access under your own rules.

October 30, 20268 min readAuthor: connic engineering

Today we are shipping connic apps, hosting for the frontends of AI agents. A chat window, a review inbox, or a customer portal now lives in the same project as the agents behind it, ships with the same deploy, and can sign people in before the first file loads.

One project for the agents and their frontend

Sooner or later, an agent needs a screen that people use: a chat on a website, an inbox where someone approves what the agent wants to do, a portal where customers upload documents and follow the result. Until now, that screen lived outside connic. It needed hosting of its own, a backend that kept API keys out of the browser, a login, and a deploy pipeline of its own that could drift out of step with the agents.

With apps, the frontend moves into the project. It ships with the same deploy as the agents, gets its own URL in staging and production, and rolls back together with the agents it calls. A connic project now holds the agents, the connectors that start them, the data they keep, and the screen people use.

What you can build with apps

An app has your own design, built with the framework your team already uses. Its data and answers come from the agents and storage in the same project. The mockups below show three apps for fictional companies.

A claims portal for an insurer

Policyholders report water damage, upload photos and the repair invoice, and follow the claim while an agent assesses it. They sign in with the insurer's customer login, and each of them sees only their own claims.

My claims
claims.example.com/claims/CL-20931
Home InsuranceMy claimsPoliciesDocumentsAna Meyer
Water damage in the kitchen
Claim CL-20931 ยท Reported Oct 28
In review
  1. Claim reportedOct 28, 09:14
  2. 4 photos and 1 invoice uploadedOct 28, 09:16
  3. First assessmentOct 28, 09:17

    Water damage to the cabinet base and flooring, most likely from the dishwasher hose. Covered by your home contents policy, section 4.2. Estimated cost: โ‚ฌ2,140.

  4. Adjuster reviewUsually within 2 working days
Your documents
Cabinet base
Flooring
Dishwasher hose
Overview
plumber-invoice.pdf184 KB
Add photos or documents
A claims portal: the agent labels the photos and writes the first assessment.

Lawyers upload a contract and get findings per clause, rated by risk and saved to the database. Follow-up questions go to the agent in a chat next to the document.

Contract Review
legal.example.com/contracts/supplier-agreement-2026
CounselContractsPlaybookJK
supplier-agreement-2026.pdf ยท p. 6 of 24
FindingsChecked against your playbook in 38s
ยง 8 LiabilityCapped at 12 months of fees, excluding gross negligenceLow
ยง 11 TermRenews for 24 months unless cancelled 6 months aheadMedium
ยง 14 Data processingNo storage location for personal data, subprocessors added without noticeHigh
ยง 17 Governing lawGerman law, courts of MunichLow
Ask about this contract
Contract review: findings per clause, with follow-up questions in the same window.

An ops console for the agents themselves

The operations team sees run volume, failures, and pending approvals across all agents, and cancels runs that are stuck. The app reads the environment's run stats through the data API. The team signs in with the company login and needs no connic account.

Agent Ops
ops.example.com/overview
OverviewLast 7 daysLR
Runs
12,486+8.2%
Completed
97.8%+0.4%
Failed
214โˆ’31
Avg. duration
4.2sโˆ’0.3s
Runs per day
ThuFriSatSunMonTueWed
Needs a decision3
Pay out โ‚ฌ2,140 on CL-20931
claims-triage
Decide
Refund โ‚ฌ349 on ORD-48213
support-agent
Decide
Order 40 laptops
procurement-agent
Decide
invoice-extractorCompleted3.1s14:02:11Details
support-agentRunning41.7s14:01:38Cancel
claims-triageAwaiting approval8.4s13:58:02Details
order-syncFailed0.8s13:55:47Details
An ops console built on the runs and approvals of the environment.

Declare an app next to the agents

Each app is a YAML file in apps/ plus a folder with its sources. The file name is the app's key: apps/portal.yaml builds from apps/portal/.

project
my-agent-project/
โ”œโ”€โ”€ agents/
โ”‚   โ””โ”€โ”€ support.yaml
โ”œโ”€โ”€ connectors/
โ”‚   โ””โ”€โ”€ portal-chat.yaml
โ””โ”€โ”€ apps/
    โ”œโ”€โ”€ portal.yaml          # the app's settings; the file name is its key
    โ””โ”€โ”€ portal/              # the app's sources
        โ”œโ”€โ”€ package.json
        โ”œโ”€โ”€ package-lock.json
        โ””โ”€โ”€ src/

Vite with React, Vue, Svelte, or Solid works, and so do Angular, Astro, SvelteKit, Nuxt, and other frameworks that build static files. On every deploy, connic installs the dependencies from the lockfile, runs the build command, and serves the output. Server rendering and API routes don't run; agents and the data API do that work.

The app file says how to build the app, who may open it, which agents it can call, and which data it may touch:

apps/portal.yaml
name: Support portal
build:
  command: npm run build
  output: dist
auth:
  mode: oidc
  issuer: ${PORTAL_ISSUER}
  client_id: ${PORTAL_CLIENT_ID}
  client_secret: ${PORTAL_CLIENT_SECRET}
  allowed_domains: [example.com]
connectors:
  - portal-chat
access:
  database:
    tickets:
      read: doc.author_id == user.id
      insert: true
      set:
        author_id: user.id

Each environment gets its own app with its own address, such as https://portal-1a2b3c4d.connic.app. An environments block can give each environment its own sign-in and domain, for example connic accounts in staging and the company login on portal.example.com in production. When a build fails, the deploy fails with it and the active deployment keeps serving the last good version. Every deployment keeps its own build, and a rollback brings the older frontend back together with the older agents.

Sign-in without an auth backend

Every app has one of three sign-in modes, set in the app file or on the app's Settings tab in the dashboard, where a change applies without a deploy:

Public
Anyone with the link, for customer-facing assistants, intake forms, and demos.
connic accounts
Members of the project, optionally only those in certain permission groups. A good fit for internal tools and staging.
Your own login
Employees or customers sign in through Microsoft Entra ID, Okta, Google Workspace, or another OpenID Connect provider, limited by email domain or group. They need no connic account.

On apps that require sign-in, connic checks the session before it serves any file. Not even the app's JavaScript reaches someone who isn't allowed in. Sessions last up to 12 hours. For connic accounts, connic checks project membership and permission groups again every ten minutes, so removing someone from the project ends their access within minutes.

Call agents straight from the browser

The browser reaches agents through connectors on the app's own host. A sync webhook or WebSocket connector with apps_only: true accepts requests from the apps that list it and from nothing else. The app's code contains no secret or API key. With streaming on, a chat shows the reply while the model writes it:

connectors/portal-chat.yaml
type: websocket
apps_only: true      # only apps that list this connector can reach it
config:
  streaming: true
agents:
  - support

connic attaches the visitor to every run the app starts: their ID, email, name, and groups land in the run context, set by connic from the request and never from the message. An agent can look up the visitor's orders by email, or connect each person's own account to an MCP server through per-user sign-in.

Access rules decide what each visitor sees

Many screens only show data: a list of tickets, the files a customer uploaded, the runs someone started. They should not wait for an agent run. The data API gives the browser the database, files, runs, sessions, and approvals of the app's environment, plus search over Retrieval namespaces. These requests read and write directly and never start an agent run.

In this IT desk, an employee and the IT team send the same request and get different answers:

IT desk
desk.example.com/tickets
IT deskMy ticketsPaula Richter
  • IT-2291Laptop battery drains overnightOpen
  • IT-2264Access to the Finance shared driveWaiting
2 tickets
POST /_connic/db/tickets/findSame request, filtered by the app's rules
IT desk
desk.example.com/tickets
IT deskAll ticketsOmar Haddad ยท it-support
  • IT-2293VPN drops on hotel wifiOpen
  • IT-2291Laptop battery drains overnightOpen
  • IT-2288Printer on floor 3 jamsIn progress
  • IT-2264Access to the Finance shared driveWaiting
37 tickets
The same IT desk app for an employee and for the IT team.

The access block in the app file makes that happen, with one rule per resource and operation:

apps/it-desk.yaml
access:
  database:
    tickets:
      read: doc.author_id == user.id or "it-support" in user.groups
      insert: user.signed_in == true
      set:
        author_id: user.id

connic adds the rules to the query itself. Lists, counts, updates, and deletes therefore only touch records the rules allow. Anything without a rule is denied. set stamps the author on every insert, whatever the browser sent. A rule that connic can't enforce fails the deploy, and every write lands in the audit log with the app and the visitor.

Example: a refund approval inbox

A support agent proposes refunds and has to wait for an approval before it pays one out. The finance team decides in a small app of its own, with the order, the amount, and the customer's reason next to the buttons:

Refund Review
refunds.example.com/inbox/ORD-48213
refunds3 opentom@example.comTB
Search requests
โ‚ฌ349.004m
Mia Wagner ยท ORD-48213
Damaged on arrival
โ‚ฌ89.9018m
Jonas Klein ยท ORD-48177
Wrong size, return received
โ‚ฌ1,240.001h
Lea Fischer ยท ORD-47950
Charged twice
Mia Wagner ยท ORD-48213
Refund โ‚ฌ349.00
โ€œThe vase arrived in pieces, photos attached. I'd like my money back.โ€
Support agentsuggestsissue_refund
order_idORD-48213
amount349.00 EUR
reasonDamaged on arrival

Delivered two days ago. The photos show breakage, and it's the customer's first refund.

Reason (optional)
Breakage confirmed on the photos.
RejectApprove refund
The finance team approves or rejects the refunds the support agent wants to issue.

Members of the Finance permission group sign in with their connic account and may decide refunds below 5,000. The app can't decide larger ones; they need a decision elsewhere, such as in the dashboard. An approval resumes the waiting run.

apps/refunds.yaml
name: Refund approvals
build:
  command: npm run build
  output: dist
auth:
  mode: connic
  groups: [Finance]
access:
  approvals:
    read: '"Finance" in user.groups'
    decide: '"Finance" in user.groups and approval.tool == "issue_refund" and approval.params.amount < 5000'

Build the app locally with connic dev

connic dev builds every app locally and serves it at its URL in the dev environment, running against the agents of the dev session with the same sign-in, connectors, and access rules as after a deploy. Saving a source file rebuilds the app. When a build fails, the last good build stays live until the next one succeeds.

Custom domains, stats, and connic MCP

Every app answers on its connic.app address. A verified custom domain of the project can serve it as well, set in the app file or in the dashboard. Once the connic.app address is switched off in the dashboard or through connic MCP, it redirects to the custom domain. Old links keep working, and search engines index only the custom domain.

The Apps page in the dashboard lists every app of an environment with its URL, its sign-in, and the last seven days of visitors, views, sign-ins, and data requests. An app's details add 30 days of stats, with failed sign-ins and denied requests counted separately, and show the access rules that are deployed. Coding agents get the same through connic MCP, which can also change an app's domain and sign-in.

Availability

Apps are part of the pro and enterprise plans. On pro, each environment serves up to 5 apps, each with up to 25 MiB of build output. Enterprise plans can set other limits. Runs that an app starts are billed like any other agent run. Pricing compares the plans.

Get started

  1. Update the composer SDK. Version 0.1.59 or later includes apps and every access rule this article mentions:

    pip install --upgrade connic-composer-sdk
  2. Add the app. Create apps/<key>.yaml and put the frontend in apps/<key>/ with its package.json and lockfile. For agent calls, add a connector with apps_only: true and list it under connectors.

  3. Run connic dev. Install the app's dependencies first, for example with npm install in apps/<key>/. Then open the URL connic dev prints and edit the app. Every save rebuilds it.

  4. Deploy. connic deploy builds the app together with the agents, and the Apps page shows its URL. The apps docs cover every setting.

Ship the frontend with your agents

Build your agents and the app your customers or your team use in one connic project.

Frequently Asked Questions

Any framework that builds static files with an index.html, such as Vite with React, Vue, Svelte, or Solid, Angular, Astro, SvelteKit with adapter-static, or Nuxt with nuxt generate. Next.js works as a static export with a content_security_policy that allows its inline scripts. The app needs a package.json and a lockfile and builds on Node.js 22 or 24. Server rendering and API routes don't run.

No. The browser calls agents through connectors with apps_only: true and reads and changes project data through the data API, both on the app's own host and without an API key. Work that needs server code runs in agents, tools, and middleware.

No. The browser only reaches the resources and operations listed under access in the app file, and everything else is denied. connic adds the rules to every query, so lists and counts only include records the visitor may see, and a rule that can't be enforced fails the deploy.

Runs started from an app carry context["end_user"] with the visitor's ID, email, name, groups, and whether they signed in, plus context["app"] with the app's ID and key. connic sets both from the request, never from the message, so tools and middleware can rely on them.

Yes. With the public sign-in mode, anyone with the link can open the app. Each browser gets its own visitor ID, which access rules can use to keep one visitor's records away from another's.

Apps are part of the pro and enterprise plans. On pro, each environment serves up to 5 apps with up to 25 MiB of build output each. Enterprise plans can set other limits.

More from the Blog

Changelog

What We Shipped in October 2026

October added connic apps, file storage for agents, connectors in code, run drains with OpenTelemetry, more browser tools, and new models such as Claude 5.5.

November 1, 202612 min read
Announcement

Introducing connic files: Persistent File Storage for AI Agents

connic files gives AI agents a folder tree that outlasts the run: save reports and browser downloads, find them by metadata, and control access per agent.

October 20, 20267 min read
Industry Insights

Aleph Alpha Kolibri-1: EU Open-Weight Model, Benchmarks & Setup

Aleph Alpha's Kolibri-1 is a 78B open-weight German-English model trained in Europe; this guide covers its benchmarks, hardware, license, and agent setup.

October 4, 202618 min read
Announcement

Introducing connic voice: Managed AI voice infrastructure

Build voice agents with your knowledge and tools, choose a realtime model, and use connic connectors for incoming calls on managed voice infrastructure.

September 19, 20268 min read
Announcement

Introducing connic MCP: Operate connic from a Coding Agent

An MCP coding agent such as Codex, Claude Code, or Cursor can connect to a connic project for debugging runs, shipping deployments, and managing agents without leaving the editor.

August 10, 20267 min read
Announcement

Introducing connic models: Every Model EU-Hosted, Zero Config

connic models put 30 EU-hosted models from nine creators behind connic/* IDs. Reference one in agent YAML without a provider account, key, or region flag.

July 30, 202610 min read
Announcement

Introducing the connic marketplace

The connic marketplace is the new home for agent templates, connectors, and retrieval sources. One catalog, one publisher model, one CLI install.

July 5, 20265 min read
Product Spotlight

connic tests: Catch Agent Regressions Before They Reach Production

A YAML-driven testing framework built for non-deterministic AI agents. Repeated-run pass thresholds, expression-based assertions, custom-code mocking, multimodal fixtures, and a deploy gate that blocks failed checks by default.

May 6, 20268 min read
Tutorial

Database vs Retrieval vs Sessions: Agent Memory Compared

A comparison of connic's Database, Retrieval, and persistent sessions, including identity, TTL, sanitized events, and runs matched to that identity.

March 4, 202612 min read