Skip to content

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.

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.

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.

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
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 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