Early access: Ailimu is free while we build to 1.0. We'd love your feedback. Send feedback Get notified at 1.0
Ailimu

The setup wizard

Screenshots (8)

A new connection is set up in four steps: Connect → Data → Tools → Publish. They run along the top of the page, beside the connection's name and a chip that says whether it is Read-only or has Writes on. The steps are numbered, and the ones that need the schema stay greyed until it has been read: point at one to see why. Once a connection is published it has tabs instead: Overview, Data, Tools, Connect Claude and Settings, with a tool budget and a Review and publish button beside them. Data holds Tables and ERD; Tools holds Scripts (Functions on PostgreSQL). The steps and the tabs use the same two names: Data is where you choose what Claude can read, and Tools is where you choose what Claude can run. An area with more than one page shows them as a second row of buttons under the tabs. See Changing a connection that is already published.

The left-hand column is for places only: Connections, Activity, People, Server and My Claude access. To switch to another file, go back to Connections and open it. New connection on that screen adds another. At the foot of the column are your account links, Docs (it opens in a new tab) and a Dark theme switch.

If you leave a connection with changes you have not published, Ailimu asks first.

Nothing is exposed until you publish. Read-only stays on unless you turn it off, using the chip at the top right of the connection (it opens Settings): it applies to that connection alone, not to the whole connector.

People

Everyone who uses the wizard signs in with their own email and password. The first account, created at setup, is the owner. What each person can do depends on their role:

Role Can
Claude user Use Claude with the connections an owner allows, from My Claude access. Cannot open the setup wizard.
Viewer Look at every connection and its settings. Cannot publish, delete, read the schema from FileMaker, see a connection's token, or open the ERD tab. The buttons for those are dimmed, and clicking one says why.
Editor Set up, change and publish connections, and see their tokens.
Owner Everything an editor can, manage people, and use the Server screen: backups, restoring, and the server keys.

Owners open People in the left-hand column to invite someone. Enter their email and choose a role, and a one-time link appears on that person's row with Copy link. Pass it on however you like, by email, Teams or Slack. Ailimu does not send email. The link stays on their row, ready to copy again, until they use it, you cancel it, or it expires after 72 hours. They open it and choose a password.

Someone who forgets their password asks an owner, who clicks Reset password on their row and copies the new link from there. It lasts 24 hours, and using it signs that person out of every other browser. Issuing a new link replaces the old one. Removing someone signs them out at once. There is always at least one owner: the last one cannot be demoted or removed.

Your email and role sit at the foot of the left-hand column, with Change password and Sign out.

Claude access. Each person's row has a Claude access button. It lists every connection with a tick box: tick one to give that person a key of their own for it, and Read only to keep their Claude to reading. The row shows when their Claude last used it, and Reset key replaces their key. Unticking stops their key at once. See Personal access.

My Claude access

Anyone who has been given Claude access sees My Claude access in the left-hand column; for a Claude user it is the only screen. Each connection shows its address, the person's own key (hidden until Show), Download for Claude Desktop, and a button that copies the Claude Code command. Viewing a key or downloading the extension is recorded in the activity log. What that person's Claude does is recorded with their email beside it.

Server

For owners: this server's backups and keys.

Activity

Activity in the left-hand column, for editors and owners, is the record of what happened: every change Claude made and every script it ran, on every connection, and every admin action with who did it. Viewers do not see it, because entries contain real values from your data.

Record reads

By default only changes and scripts are recorded. Record reads, in each connection's Settings beside Read-only, also records every search and lookup Claude makes there: what it asked for and how many rows matched, never the rows themselves.

This can use a lot of disk. On a busy install nearly all of the log is reads, roughly 0.6 MB a day for normal use and 6 MB a day for heavy use, and much more if an agent gets stuck repeating itself. That is why it is off by default, why switching it on asks you to confirm, and why reads are kept for 30 days where changes are kept for a year. The Activity screen shows how much disk the log is using and which connections record reads. Both periods can be changed; see Activity log retention. The switch takes effect when you publish.

Connections

The wizard opens on a list of your connections: FileMaker files and PostgreSQL databases. A small badge beside each name says which it is. One connector can serve several, each with its own address and its own token, so giving somebody access to one connection does not give them the others.

Files can live on different servers. The server address is part of each connection, so one connector can serve https://www5.example.com and https://www6.example.com side by side. The FileMaker account is not set in the wizard: it comes from .env, and a connection that needs its own account needs its own pair of variables there, followed by a restart. The Connect step tells you whether a connection uses its own account or the default one, and names the variables to add. See Credentials for several files.

Each connection is one row. The first column says which database it is, FileMaker or PostgreSQL, each in its own shade of plum. Next is its status: a dot (red when Ailimu cannot reach the database because its credentials are missing, amber when writes are on, green when it is read-only) with its mode underneath. Then comes its name, with under it its file or database and how many tables and scripts it has, followed by two icon columns that read its schema again or delete it, lined up down the list. The rest of the row is a tool budget bar against the roughly 60 tools some clients can list, how many people have a Claude key on it, and who published it last and when. The name opens the connection. A connection that cannot reach its database also appears in a strip above the table, naming the variables to set. Editors and owners also see the latest few changes under the table, with a link to the full log.

1 · Connect

A new connection starts with Connect to: FileMaker or PostgreSQL. A connection keeps its type once it exists; to use another kind of database, make a new connection. The rest of this page describes FileMaker; for PostgreSQL, see Using a PostgreSQL database, which covers the account, the fields (host, port, database, schema, encryption) and what is different.

For FileMaker: host, file, and a display name. After the host is known the wizard lists the files on that server, so pick rather than type.

Run scripts from is for solutions split into a data file and an interface file: a very common FileMaker arrangement where the tables live in one and the business scripts in another. Set it and tables come from the first file while scripts, and the layouts they run against, come from the second. One profile, one endpoint, one token.

If a script you expect is absent from the list, this is almost always the reason. On one production instance the data file held 107 scripts, all of them infrastructure, while the interface file held 831, including every script the business actually uses.

Press Read schema in the footer. On a large file expect roughly seven seconds: the schema itself, the row counts, and the script and layout lists.

Test connection checks the details first. Its answer stays under the buttons until the next attempt, so there is time to read it. When something is wrong, the box at fault is marked and the message says what to change. When Ailimu can tell what you meant, such as a database name one letter out, it offers that as a button, for example Use LEO, and testing again is one click.

2 · Data

This is where you choose what Claude can read: the tables, and which fields of each. Once the connection is published the same page is Data → Tables, and beside it is Data → ERD, which shows how the tables relate (see The ERD tab).

The title row says how many tables are ticked and how many tools that makes. Under it is one bar for everything that acts on tables, with the table list, the open table and a panel of detail below.

The list

The list on the left shows All the tables or only the Exposed ones, and you can arrange it By category, A to Z or by Size. By category groups every table by what Ailimu worked out it is, with the groups collapsed so a file with 231 entity sets does not arrive as a wall. The two categories Ailimu suggests starting with are marked suggested:

Group What it means
Core records Things the business has: customers, employees, trips.
Transactions Dated lines that belong to something: invoices, segments, payments.
Lookups and pick lists Short reference lists behind a dropdown.
Logs and history Audit trails and event logs.
Join tables Links between two other tables, and little else.
Settings Constants and configuration.
Unclassified Nothing in the names, counts or links said anything useful.

Each row is a button that opens the table, with its own checkbox to expose it. Use the arrow keys to move down the list, Enter to open a table and Space to expose or hide it. The box at the top of the list ticks or unticks every table shown. Suggest a starting set at the foot picks core records and transactions, which is what most questions are about. A count badge turns jade on any group you have ticked from, so you can see where your choices are with everything collapsed.

FileMaker adds a table to its relationship graph once per path used to reach it, and OData exposes every occurrence. Those copies hold identical records, so publishing several would make several tools over one set of data. Ailimu keeps the plainest name and hides the rest behind Show repeated tables, under Filters in the bar above.

The bar

How a table starts

What happens when you open a table that has nothing exposed yet is a setting of the connection: tick its Essentials fields, or leave it empty. It lives in Settings, so everyone who edits the connection gets the same behaviour, and it is saved on its own without publishing. A table Ailimu filled in for you says so, and offers an undo; a table you have edited by hand is never overwritten.

One table at a time

The top of the open table names it, says what Ailimu thinks it is (with Why? for the reasoning), and has Identified by, the field that addresses one record. Expose this table is on the right.

The fields are a table, with a column each for Read, Search and Write:

The box in a column's header sets every field shown. Fields Claude can change are tinted. Exposed and Not exposed are two views of the same fields, and a row stays where it is until you switch view, so unticking a field does not make it jump away. Fields FileMaker works out (calculations, totals, globals) cannot be written.

Worth reading twice: the fields you can filter by are also the fields a search hands back. get_ returns everything you exposed; a search returns the short list, and the assistant can ask for more by name.

Each field carries two tags, and the selectors above the table filter by them:

Columns that held nothing in any sampled row (oldest or newest) are counted rather than listed in the Not exposed view, with a link to show them: on one 209-field table that was 82.

Fewer search fields make a better tool. One production table advertised 97 search parameters, 54 of them calculation fields. Calculations, summaries and globals are excluded from search by default, identified from FileMaker's own metadata rather than any naming convention. Essentials never ticks Totals or Shared value fields, and reads calculated fields without making them searchable.

The panel on the right

An accordion of three sections. Open or close each; Ailimu remembers.

Sampling

Opening a table reads a small sample of its rows in the background. The sample takes a few of the oldest records and more of the newest, because a file grows by having fields added to it: a helper field built last year is empty in every old record and filled in every new one, and a sample of the first rows alone would mistake it for an unused column. Two things come back:

Sampled values are shown to you and then discarded. They are never written to the config or the cache. Use Sample ticked tables, in the Preset menu, to do the tables you have chosen in one go, and note that a table you have not opened has not been sampled: no marks means unknown, not clean.

Reading the schema again for a published connection also reads the newest records of its tables, and lists any field you had switched off that now holds data there. It switches nothing on by itself: click Switch on to accept them, or Leave them off if you meant to hide them. Fields whose names look like secrets (passwords, card numbers, salaries) are never offered.

Anything you tick by hand always wins over a later sample.

The ERD tab

It is the second page of the Data area, next to Tables.

An entity-relationship diagram (ERD) shows how the tables in a FileMaker file connect. FileMaker has no screen that draws one for the whole file, and a file with dozens of tables is too much to take in at once, so the ERD tab shows one table at a time.

The table you are on is in the middle. Tables that have a field pointing at it are on the left, and tables it points at are on the right. Each box lists only the table's own key and the fields that link to other tables, with the number of rows. Click any other table to move to it. Back and the trail above the picture take you back, and the search box finds a table or a field by name. A table with many links shows the strongest few as boxes and the rest as a short list of names under Also linked, with Show all to open them.

Reading the lines

FileMaker records that two tables are related. It does not record which fields join them or whether the link is one to many, so the key fields shown come from field names, and every line is drawn as "many" at one end and "one" at the other only where a field name says so. Treat the picture as a map to check against the file, not as the file's own definition.

Getting there from a field. In Data → Tables, open a field's details and choose View in ERD. The ERD tab opens on that table with the field's row highlighted and the lines for that field drawn bold. The same button is on the table's heading.

Download SVG saves what is on screen as one SVG file, with a heading and a legend, in a light style that looks the same in a browser, a document or a slide. It is the table you are on and the tables it links to, not the whole file.

Good to know

3 · Tools

This is where you choose what Claude can run. The page is called Scripts for a FileMaker connection and Functions for a PostgreSQL one. Once the connection is published it is Tools → Scripts.

While Read-only is on, ticked scripts are held back: Ailimu counts every script as a write, so none of them is live. The page says so, each ticked script carries a Held back: read-only note, the tab reads Tools 0 of 3, and the footer, the Overview and Connect Claude all say "0 of 3 scripts live". They stay ticked and go live when you turn Read-only off in Settings and publish. The same applies to the Write column on the Data step.

(For a PostgreSQL connection the page is called Functions. It lists the database's functions and procedures with what each takes and returns, and marks a function that PostgreSQL guarantees cannot change data. See Using a PostgreSQL database.)

Optional, and the part that deserves care. A script can do anything the account is allowed to do, including delete records. FileMaker exposes a script's name and nothing else, not its body, not its parameters, so every label here is read off the name and is a guess. Expose only scripts you have read.

The screen has three columns, like the Data step. Folders on the left (a folder's count includes its subfolders), the script list in the middle, and the details of the script you picked on the right. The bar above has a search over names and folders, a view switch, and the layout the scripts run from.

Layout context is the layout a script runs against, which decides what table and found set it sees. Get it wrong and the script still runs, just somewhere else, so Ailimu will not publish an exposed script until you have chosen one. The button at the right of the bar shows the default and how many scripts override it; it opens the layout list. The list also opens by itself while nothing is chosen, and from Change in a script's details, where it picks a layout for that script only. Most files run everything from a single blank or utility layout: set it as the default and override only the exceptions.

Ailimu reads what it can from the name:

Shown Means
looks destructive / changes data / sends or prints / read-only / navigation A guess from the verb in the name. Navigation, printing and destructive ones are hidden by "Likely useful".
server script PSOS_ or SVR_. Perform Script On Server behaves differently and some will not run through the Data API at all.
duplicate name Two scripts share this name. FileMaker's run-by-name cannot say which, so it cannot be exposed.

Where a file names its parameters: Save Customs Documents {tripID;serial;docType} : they are filled in for you, along with a tool name with the developer prefix and the parameter block stripped. All editable in the script's details.

Saved searches

A saved search is a question you have already worked out, such as "invoices that are still unpaid three days after they were due". Claude gets one tool for it, called search_ and the name you give it. Claude asks the same question the same way every time, reads a small answer, and cannot wander into fields you did not make searchable. It only reads. It is the second page of the Tools area, next to Scripts, for editors and owners. A new connection gets the page once it has been published.

At the top of Tools, a short note says what each page is for: a script is Claude doing something, a saved search is Claude fetching something. Hide it with Got it, hide this.

How the page works

The page has three columns. On the left is the list of saved searches, with New at the top. In the middle is the form. On the right, a column that answers as you type: an In plain words box that reads the saved search back as a sentence (its table, what Claude fills in, what it gives back and how it is sorted, shown as pills), a note of anything still wrong, and Try it.

Start from an example fills in the shape of a common question; you then pick your own table and fields. Each block of the form has a one-line hint and a Help and an example fold with the longer explanation. A tick appears on a block when it is in order, and blocks you can leave alone say Optional.

  1. What it answers. A short name (lowercase letters, digits and underscores), one sentence, and the table. Claude reads the sentence to decide when to use it. The table is one of the tables you have ticked in Data. Only tables read through OData can be used, not layouts.
  2. Always true. Conditions that never change. Each is a field and a test: has this value, is empty or is not empty. Choose the field from a drop-down with its own search box; the fields are listed A to Z, and only fields ticked Search appear. A value is written as in a search: a word matches anywhere in the value, =Paid matches exactly, >=2026-01-01 and 2026-01-01..2026-01-31 work on dates and numbers. On a date you can write today, today-3 or today+7: Ailimu works out the date each time the search runs, using the server's date, so "more than 3 days ago" is right on every run.
  3. Claude fills in. Blanks that change each time. Each has a name, a field and how it is compared (As typed, Exactly, Anywhere in the value, or From and Up to for the two ends of a date or number range), and whether it is required. The right-hand column shows how Claude would call it, such as search_overdue_invoices(customer = Acme).
  4. Gives back. The fields for each row, a sort order and a number of rows. Type in Find a field to narrow the list of fields to tick, and in the sort drop-down to find the field to sort by. With no fields chosen, Claude gets the table's usual search columns. Fewer fields means a smaller, cheaper answer.
  5. Try it (right-hand column). Runs the saved search on your live data, read-only, with sample values for the blanks. It shows exactly what Claude would be sent, and how big it is.

Chaining saved searches

Often the answer comes in stages: one search finds the trips, and the next takes a trip number from them. A saved search stays one table, but a blank can say where its value usually comes from.

On a blank, choose Usually comes from, then the other saved search and the field it returns. Claude is told to run that search first and to use that field, and the page checks that the other search really returns it. If it does not, the problem box says so and you tick the field in Gives back on that search. The id field is always returned, and so are the usual search columns when a search names none.

Each search still runs on its own, one table at a time. Ailimu does not run the chain for Claude. It makes sure Claude knows the order and has what it needs.

You do not have to build one from scratch. Anyone who uses Claude can ask it to draft one, either from searches they have already run in a conversation or from a question they describe.

  1. Choose Paste from Claude above the list and use Copy the prompt. Give the prompt to the person, or paste it into Claude Desktop yourself. Claude uses its Ailimu tools to check the real table and field names, then answers with a block of JSON.
  2. Paste that answer into the box and choose Add to my saved searches. Words around the JSON are fine, and so is a single saved search or a list.
  3. Each one appears in the list as an unpublished draft. The plain-words box reads it back, the page lists anything wrong with it (a field that is not searchable, a table that is not ticked), and Try it runs it on your live data. Fix what needs fixing, then publish as usual.

A name that is already taken gets _2 added. Nothing Claude writes is trusted until you have read it and published it.

Nothing reaches Claude until you use Review and publish. A saved search that has not been published shows an unpublished tag in the list, and one you have edited since shows edited.

A saved search that cannot be asked correctly is not offered to Claude, and the page lists what is wrong: a field that is not searchable, a name used twice, a range limit on a text field. Publishing refuses it with the same reasons, so a question is never quietly dropped.

A saved search only reads. It counts as one tool, it stays available while Read-only is on, and each use appears in the activity log under its own name.

A worked example

Harbour & Finch, a made-up wholesaler, wants to ask often: which invoices have been overdue for more than three days? Their invoices are in a table called invoices, with the fields number, customer, due_date, paid_date and amount.

Step What they choose
1 Name overdue_invoices. It answers: "Invoices that are still unpaid more than 3 days after their due date."
2 The table invoices.
3 paid_date is empty (not paid). due_date has this value <=today-3 (due on or before three days ago).
4 One optional blank, customer, looking in customer and matching anywhere in the value.
5 Returns number, customer, due_date, amount, sorted by due_date.
6 Try it with customer left empty: a short list. With Acme: only Acme's.

The page reads that back as: Claude looks in invoices for rows where paid_date is empty and due_date is on or before 3 days ago, and the blanks below match. It returns number, customer, due_date and amount. Sorted by due_date. Claude fills in customer (contains customer, optional).

Asked "which of Acme's invoices are overdue?", Claude calls search_overdue_invoices(customer = Acme) and reads the answer. Today's date is never typed anywhere: it is worked out each time.

Dates use the server's own clock and time zone. If a container runs in a different time zone from your business, set TZ in docker-compose.yml.

4 · Publish

Publishing writes your choices and the tools go live immediately, with no restart. You get the endpoint, the token and the command to paste into Claude.

An agent that is already connected will not see the change. A client reads the tool list once, when it connects. Start a new session after republishing; you do not need to re-run the setup command.

Changing a connection that is already published

Opening a published connection gives you tabs, not the four steps:

The bar at the top shows a tool budget, such as 38 of ~60 tools · ~9k tokens. Past about sixty tools, an assistant starts choosing the wrong one. The token figure is how much the list of tools costs Claude on every request, measured the way Claude receives it. A table with many searchable fields costs much more than one with a few, so if the figure is high, untick search on fields nobody searches by, or expose fewer tables. The Overview tab says which tool is the biggest.

When nothing has changed, a quiet Published note takes its place. Review and publish shows a count of what has changed since the last publish. It opens a list of those changes: tables added or removed, fields that gained search or write, scripts, Read-only and Record reads, and changed connection details, with the tool count before and after. Each change has Undo, and Discard all throws every change away. If a change lets Claude change more than it could before (a newly writable field, a script, or Read-only turned off), you must tick that you have checked it before Publish works. Publishing from here keeps you where you are. Viewers can read the list but cannot publish.