Limits and requirements
What Alcuin runs on, the sizes and times it works within, and what it does not do yet. Version 0.1 is a public beta: the roadmap says what comes next.
Requirements
Section titled “Requirements”| What | Supported |
|---|---|
| macOS | macOS 13 (Ventura) or later, on Apple silicon. Installed from the .dmg. |
| Linux | 64-bit x86 (x64). An AppImage, or a .deb for Debian, Ubuntu and other Debian-based systems. |
| Windows | Not released yet. It comes in v0.1.x, once its installer is signed. |
| Postgres | Postgres 14 to 18. Supported Postgres versions says what happens outside that range. |
There is no build for Intel Macs or for Linux on Arm, and no rpm, snap or Flatpak package.
Results and memory
Section titled “Results and memory”Alcuin reads a result ahead, then lets go of the database, so a long result never holds a transaction or a lock open while you scroll.
| Limit | Value |
|---|---|
| Read ahead per result | The first 100,000 rows, 32 MB, or 10 seconds (5 seconds on production), whichever comes first |
Read-ahead and statement_timeout |
Reading ahead stops a little before the session’s statement timeout runs out |
| Kept on disk per result | Up to 2 GB, and 4 GB across all open results, in an encrypted temporary file |
| Held in memory per result | About 32 MB of values; the rest is read back from disk as you scroll |
| Rows per page | 100, 200 (the default), 500 or 1000, set in Settings, under Behavior |
| A long value in a cell | Drawn from its first 1,000 characters. Copying it always gives the whole value |
| Editing a long value | A value over 1,024 characters is compared by its SHA-256 hash on the server, not sent back |
When the read-ahead stops early, the result says so, with its own count, for example Showing the first 100,000 rows. The rest weren't read. Read the rest, beside it, reads the remaining rows with no row, size or time limit of its own. One table’s rows in key order carry on after the last row shown; any other query runs again. A query that may change data is never run again, and the message then adds This query may change data, so it isn't run again.
Copying and exporting
Section titled “Copying and exporting”| Limit | Value |
|---|---|
| Copy as CSV, JSON or INSERT | Past 10,000 rows or 20 MB, Alcuin asks Copy more than 10,000 rows? and offers Export to file…, Copy the first 10,000 and Copy all |
| Export to a file | CSV, JSON or INSERT, streamed to the file. It runs read-only and has no row limit of its own |
| Import a CSV file | .csv, .txt or .tsv. For a new table, the column types are worked out from the first 1,000 rows (up to 1 MB) |
| Open a query file | Up to 20 MB |
Connections and windows
Section titled “Connections and windows”| Limit | Value |
|---|---|
| Connect timeout | 15 seconds, for reaching the server, encryption and signing in |
| SSH tunnel | 15 seconds to open it and 15 seconds to open the forwarded channel; a keepalive every 15 seconds |
| Sessions per connection | Up to 8 at once; an idle one closes after 5 minutes |
| Catalog reads and table pages | Given up after 120 seconds |
| Waiting for a lock when committing staged edits | 5 seconds, when the Safety rules set no lock limit |
| Password from command | 30 seconds to print the password; it is reused for 10 minutes by default (1 to 720) |
| Pop-out result windows | Up to 8 |
| Assistant requests | Up to 5 minutes each. The 10 earlier turns of a conversation, and 20 sample rows when you include them |
The time limits that protect production, such as Stop statements after, are Safety rules: Safety rules per environment lists them. Agents have limits of their own, listed in Connect an agent.
Not supported yet
Section titled “Not supported yet”| Not yet | What happens |
|---|---|
| A Windows build | Built and tested, not released until it is signed |
| Intel Macs; Linux on Arm; rpm, snap and Flatpak | No build |
| macOS before 13 | The app does not open |
| Postgres 13 and older | Not supported, though not blocked: see Supported Postgres versions |
~/.ssh/config |
Not read: host aliases, User, Port, IdentityFile and ProxyJump there are not used. Fill in the tunnel’s fields instead |
| Jump hosts | One SSH server per tunnel |
| A TLS client key with a passphrase | Refused. Save a copy without one. SSH keys with a passphrase work |
| Channel binding | Not used. channel_binding in a URL is ignored, and SCRAM signs in without it |
| Kerberos (GSSAPI), SSPI and LDAP sign-in | Not offered. Use a password, a password command or the .pgpass file |
PGPASSWORD, PGHOST and the other PG variables |
Ignored. Only PGPASSFILE is read |
| Several hosts in one connection URL | Refused when they have ports (Invalid URL) |
URL parameters other than sslmode, sslrootcert, sslcert and sslkey |
Ignored |
| Shell syntax in a password command | Refused: Alcuin runs the command without a shell. Put pipes and redirects in a script |
| Sign-in commands that open a browser or ask for input | Refused. Sign in from a terminal first |
| Importing from TablePlus or Postico | Not offered; pgAdmin, DBeaver and .pgpass are |
| Passwords from imported tools | Never imported |
| Export to Excel (XLSX) | Not offered. Export CSV, JSON or INSERT |
Backup and restore (pg_dump, pg_restore) |
Not offered. A checkpoint is a copy on the same server, not a backup |
| Charts from a result | Not offered |
| Sketch on Staging or Production | Never: Sketch is for Local and Development only |
| Agents that write, or that confirm a statement | Never. Agents only read, and a statement that would ask is refused |
| One switch that turns agents off | None: revoke every token instead |
| A switch that turns updates off, or a way back to an older version | None. See Updates |
| Resetting everything from inside the app | None. Start fresh by hand |