The site is still being built — nothing on it is final yet.Write to hi@perly.io to hear things first, or wait for the announcement.

Perly

Security

Last updated: September 2026

Perly's security model starts from what it refuses to hold. There are no exchange API keys, no wallet connections, no seed phrases and no private keys anywhere in the system — not encrypted, not hashed, simply absent. A database that does not contain a thing cannot leak it, and a service that cannot touch funds cannot be made to move them.

Row-level security, enabled and forced

Every user-owned table carries PostgreSQL row-level security, and it is forced — the strict mode that applies even to the table's owner. Every policy is keyed to the authenticated account, so a query made from any other account returns nothing at all: not an error, not a permission prompt, an empty result. The database itself refuses to serve rows to anyone but their owner, which means the isolation does not depend on application code remembering to add a WHERE clause.

What is encrypted today

Everything in transit is TLS. Everything at rest is encrypted disk. Your password is stored only as a hash nobody can reverse, so nobody at Perly can read it or sign in as you. This is strong, and it is also the honest boundary of today's claim: the operator of the database could, in principle, read the stored rows of your portfolios in full if you have not set up encryption. We treat that as a flaw to remove, not a fact to hide.

Encrypted portfolios

Your portfolios can be encrypted in your own browser, all of them at once, with a key only you hold. An encrypted portfolio's amounts, prices, fees, totals, notes, tags, description and target reach the server only as ciphertext we cannot open. The key itself is never sent to us: what is stored is the key wrapped by each way you open it — a passphrase, a recovery code, a passkey. Every figure Perly shows is computed by a pure accounting engine, so for an encrypted portfolio that computation runs in your browser over the decrypted rows — most products cannot do end-to-end encryption because their server computes; ours does not have to. What stays readable is what lists and sorting need: the portfolio's name, each entry's coin and time, and fingerprints that spot a duplicate import. Alerts, plans and watched addresses you set on it are stored in the clear, because the server has to read them to act on them.

The marketing site

This site sets no cookies unless you allow the one analytics cookie, and its only backend is an anonymous scroll-depth log: a depth in metres and a timestamp, with no name, session, identifier or IP stored beside it. Details in the privacy policy.

Found something? We want to know: hi@perly.io.

← Back to perly.io

© 2026 Perly. All rights reserved.