Quickstart — hosted

Sign in to a hosted Louvain deployment, connect a source, and get your first answer with receipts.

This is the path where someone else runs the infrastructure and you use Louvain as a product. You need a browser, an account on the deployment, and — for the last step — a source worth remembering.

If you are standing up your own instance instead, go to Quickstart — self-hosted.

What you will have at the end

A workspace with at least one connected source, teammates who each get their own permission-scoped view, and answers that cite the message they came from.

1. Sign in

Open the deployment's URL and go to /login. There is one door, and what is behind it depends on how the deployment signs people in:

  • A managed sign-in service (hosted deployments). The sign-in form is the service's own — email with a code, a password, or "Continue with Google", whichever the operator enabled — and it also creates your account the first time. Passwords and password resets live there too: Louvain stores none, so /forgot on such a deployment only points you back to the sign-in page.
  • Louvain's own sign-in (self-hosted without a provider). Email and password, or a single sign-on button if the operator configured an OIDC provider. The button's wording is set by the deployment, so it will say something like "Sign in with Okta" rather than "SSO". A new address is verified with an emailed code before its account is created.

/signup is not a separate door any more: it sends you to /login, which creates an account where the deployment allows it.

If the sign-in form does not appear — an ad-blocker, a privacy extension or a network proxy can stop a sign-in service from loading — the page says so after a few seconds and offers Try again. See the sign-in page does not load.

If your company has set up single sign-on (on a hosted deployment, Google Workspace under Workspace settings → Single sign-on), entering your work address sends you to your company's sign-in page, and the first sign-in adds you to the workspace. If it has also turned on required SSO, signing in any other way is refused for addresses in its domains. That is deliberate: if a password still worked, deprovisioning at your identity provider would not actually remove access.

2. Why signup is usually invite-only

A Louvain deployment is multi-tenant. Every org is fenced from every other in SQL, before any visibility rule runs — but the fence is about data, not about who gets to be a tenant. With open signup, anyone who learns the hostname can create an org inside your deployment, and every event they ingest costs the operator real model spend.

So LOUVAIN_SIGNUP=invite-only is the default — in the code, so a deployment that never states it is closed, and in the shipped production configuration — and the boot-time configuration checks deliberately do not force it either way (the one exception: open signup together with LOUVAIN_STRUCTURED_ALLOW_PRIVATE_HOSTS=true refuses to boot). Whether a deployment is open is a judgement about who it is for, not a value that can be validated, so it is set to the safe answer and changed on purpose.

What this means for you:

  • On an invite-only deployment, signing in with an address nobody invited creates no workspace: the sign-in page says workspaces there are by invitation and offers to sign you out, so you can continue with the address you were invited under. You need an invitation from an existing admin.
  • The invitation adds you to the workspace as you sign in. There is no separate "register, then request access" dance.

3. Create or join a workspace

Joining with an invite

Open the link you were sent. Before asking you for anything, the page names the workspace and the role you were invited as, so you can tell a legitimate invite from a link someone forwarded you by mistake.

  • On a managed sign-in service — choose Continue to accept, sign in with the invited address, and join from the invitation page you return to.
  • Signed in with another address — the page says which address you are using and which one the invitation is for. Sign out and continue as … signs you out and opens the sign-in for the invitation; sign in with the invited address and you join straight after.
  • On Louvain's own sign-in, with no account yet — set a display name and a password (minimum 12 characters), and you are in.
  • Account already exists — the same link adds your existing account to the new workspace. An invite can never re-key an account that already exists; otherwise inviting a known address would be account takeover.

Invite links expire (a week, by default) and an admin can revoke one before it is used.

Creating a workspace

Only possible where signups are open. The hosted service at louvain.ai is invite-only for now: you join a workspace through an invitation, and a new workspace is set up with you by the Louvain team. Sign in through the method configured for your deployment. With native email sign-in, continue with your work email and a password, then enter the emailed 8-digit code to prove the address and create the account. After your first sign-in, Louvain asks for your name and a workspace name, and creates the workspace.

The workspace's internal identifier (its slug) is derived from that name and fixed at creation — it identifies your tenant in every org-fenced query and in permission subjects, so the Settings page shows it read-only afterwards.

Whoever signs up becomes the workspace owner. That role is set at signup and cannot be handed out by invitation.

Where the hosted service creates a workspace, it opens on Billing to start its 14-day free trial — a card is taken, nothing is charged until the trial ends, and a plan chosen on the pricing page is preselected. Until the trial starts the workspace is a sample: you can look around, and connecting a source, inviting people and asking a question are each waiting on it and say so. See Billing and plans.

More than one workspace

One account can belong to several. Manage workspace → Workspace settings lists them, switches between them, and — where signups are open — creates another (the workspace switcher in the sidebar does the switching too). Each one gives you a separate identity, so what you can see in one says nothing about the other.

4. Invite your teammates

Manage workspace → People → Invite. Pick admin or member.

Two things to get right:

Invite people at the email address their source accounts use. Louvain links the source identities it has seen for that org whose email matches theirs and rebuilds what they can read — when they join, on every sign-in after a source has delivered, and when they press Link my accounts again. Invite p.raman@ when Slack knows them as priya@ and they will join to an empty view. It is not a silent one: Today says "You can't read any sources yet", names the address it matched on, and offers to link their accounts again or connect their own.

Roles gate administration, never visibility. An admin can connect sources, invite people and read the audit log. An admin cannot see a message from a private channel they are not in, and neither can the owner. There is no role in the system that widens what a person can read.

If an invitation's email cannot go out — the deployment has no mail transport configured, or the mail server refused it — the invite dialog says it was saved but not delivered, and offers Resend invite. It is listed under Pending invitations with a Resend button, so once the operator has set up outgoing email you can send it without inviting again; re-sending replaces the earlier link.

5. Connect a first source

Connections → Workspace tab → Add connection. The list you see is whatever the deployment has registered; each type carries its own setup instructions in the form, so there is no separate integration guide to go and find. A source the deployment cannot offer yet says so on its card, and names who can enable it.

The three built-in shapes:

  • Slack — a live feed and its history. Messages, thread replies, edits, deletions, shared files and channel-membership changes stream in as they happen, which is what keeps permissions current rather than a day stale, and every channel's history is read back to the window you choose (a year unless you say otherwise). You will paste a bot token and an app-level token. Public channels are joined automatically; for a private channel you must invite the bot to it explicitly, because nothing else would be a permission you actually granted. Direct messages are off unless you switch them on with the person's own token.
  • Slack export import — a one-shot import of a Slack export .zip (or its unzipped folder) as its own snapshot, including private channels and their membership as of the export. A snapshot is not updated by later edits, deletions or membership changes; to load an export into the live feed's history instead, give it to the Slack connection's Export archive setting.
  • HTTP inbound — a credential and a permission boundary with no runner, for any internal tool that can make an HTTP request. Creating it issues an ingest token, shown once; only its hash is stored. If you lose it, rotate it rather than hunting for it. Rotating stops the previous token immediately.

Credentials are sealed before they touch disk, and each connection gets its own revocable ingest token. A connection made with a credential or an inbound token starts as soon as it is created — the success dialog's one action is Watch it fill, which opens its card with live counters. A source you sign in to at the provider starts as soon as you approve in the provider's window and Louvain confirms the grant exists; a closed or blocked window leaves nothing running and offers a way to try again. Connection status is shown plainly on the card: Starting, Live, Error with the last error text and when it is retried next, or Paused; an errored connection offers Re-authorise (a signed-in source) or Edit credentials (a keyed one) right there. A setting that is not a secret (a plan, a scope) is its own row in the connection's settings, showing its current value, and an admin changes it there: a switch saves as it flips, a value saves from Edit. A secret is never shown, and one left blank under Edit credentials keeps its value. Saving either restarts the feed, so the next pass uses the change. Not running is displayed as not running, and errored is retried until it is paused.

A new member who has connected nothing is offered one source to start with — the provider they signed in with when there is one — with or choose another for the whole catalogue beside it. Connect starts that source's own sign-in at once; a source that has to be set up for the workspace takes an admin to its setup on the Connections page.

While the first source fills, Today shows the wait with a count and a clock — rooms you can read, messages read, facts, and how long ago the last one landed — and the composer is open: a question asked before anything has arrived gets an answer that says exactly what it could and couldn't read. As documents are read it says how many, and names the first people it has met, each a link to what is known about them. Once there is enough to ask about, up to three starter questions appear: each was already asked as a member of the workspace and its answer checked against its sources, and it is shown to you only where you can read every source it rests on (one taken from a person's own correspondence only to that person), so a tap opens the answer straight away. None is shown until one has passed that check, and a starter whose sources you can no longer read is offered as a question to ask yourself instead.

6. Ask your first question

Ask. Type a question in ordinary language, or tap one of the suggestions under the box. They are composed from the entities you can see and your workspace's own vocabulary — so the first question is never a guess, and a colleague with different access sees different chips.

The as of date control is a real point-in-time query, not a filter on timestamps: it answers with what was believed on that date, following supersession.

7. What "good" looks like

On the answer. While it runs, the trace shows each stage with the time it took — searching, the entities it started from, the connections it walked, the sources it read, the check — with a Stop button; after fifteen seconds it says so in words. When it lands, a small label says which path answered, and the receipts button underneath opens every source it cited, expanded, with the sentences the answer rests on marked. How Louvain got here keeps the trace (timed, for a workspace admin) and the plan that ran — direct lookup, aggregate count, point-in-time query, timeline, provenance trace, hybrid retrieval — and keeps it when you leave the conversation and return, because the trace is saved with the turn.

The label is one of two:

  • From recorded facts — the derived state answered. Counts were counted and no language model wrote the sentence.
  • Checked against sources — the planner could not route the question, so a reader composed from retrieved evidence. Every figure, date and name in it was checked against those sources afterwards, sentence by sentence; a sentence with anything unsupported is struck rather than shown, and an answer with nothing left is refused. Prose a model wrote is also marked Written by AI.

A refusal is a result. "Nothing you can see supports an answer to that" is the system working. If the facts exist in a room you are not in, Louvain will not hint that they exist — a correct refusal and a genuine absence look identical from outside, and anything else leaks the shape of what is being hidden.

A degraded-retrieval warning is not a refusal. If a retrieval step genuinely failed — a leg that errored, a reranker that threw rather than merely running late — the answer says so and names what was affected: rows may be missing from that step. It is possibly incomplete, not nothing exists, and the answer keeps its findings and its reason. Ask again. A reranker that simply runs out of its turn ships the fused order without it and says nothing here at all — the search ran whole, only the reordering was late.

On the Louvain health page (Manage workspace). The top row is coverage and sharing: Facts recorded (how many are true today, and about how many people and topics — a corpus the vocabulary has no words for lands in notes and excerpts, not in facts), Last arrival (and how many arrived in the last 14 days), Sharing changes, and Visible to you across the places you can read. The row below is operations: live connections reading all healthy, Failed items at zero, and — for admins — Reading today, the day's model calls. If Waiting to be read appears, the queue is working through behind you; if Sharing changes reads "waiting", changes to who can read what have not taken effect yet and anything they would reveal stays hidden until they do. Admins also get "Answers, last 7 days": refusal and degraded rates, latency and feedback for what the workspace has been asked.

The real test. Have a colleague in a different set of channels ask the same question. Different — correct — answers, from the same deployment, on the same day, is the property everything else here exists to support. Admins get a related view under Manage workspace → Access & permissions, which flags where what the company knows and who can know it have drifted apart.

One thing to check early. Manage workspace → Knowledge model shows the vocabulary this workspace understands: its Vocabulary tab lists the domain templates that install frames, admission policies, state-changing effects and question routes, and says why each one is on. Its Review tab is where suggestions wait for you. If your business talks about things the selected domains have no word for, the answers will be thinner than they need to be.

8. Let your AI ask too

Account settings → Developer access mints a bearer token that carries exactly your access — not more, and not an admin's. It is shown once and stored hashed; revoking it takes effect immediately.

LOUVAIN_URL=https://your-deployment.example.com/api
LOUVAIN_TOKEN=louvain_your_token_here

curl -s -X POST https://<deployment>/api/v1/answer \
  -H "authorization: Bearer $LOUVAIN_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"question":"how many deals are in negotiation?"}'

The same token drives the MCP server, so an AI assistant in your editor asks as you and gets refused where you would be. Most AI assistants need no token at all: paste the URL from the Agents tab under Connections into Claude, Claude Code or Cursor and approve once — see Connecting an AI assistant.

Next

  • Connectors — what each source type needs, and how to push from a system that has no connector yet.
  • Asking — how a question becomes a plan, what the receipts mean, and how to read a refusal.