Security
Last updated 19 September 2026
wunel lets people and AI assistants work in the same pages, so two things matter most: that only the right people and assistants can get in, and that you can always see and undo what anyone did. This page describes the safeguards that are in place today.
1. Hosting in the EU
The wunel app, the agent server, the database and file storage run on Hetzner servers in Helsinki, Finland. Your pages and files are stored there, not with a US cloud provider. The providers we use for sign-in, email and analytics are listed in our privacy policy.
2. Encryption in transit
- All traffic to app.wunel.com and mcp.wunel.com uses HTTPS (TLS), with certificates managed automatically by our Caddy web server.
- HTTP Strict Transport Security is set for one year, including subdomains, so browsers refuse to connect over plain HTTP.
- Real-time collaboration runs over a secure WebSocket on the same connection.
3. Signing in without a password
- You sign in with your email address and a one-time 6-digit code. There is no password to choose, reuse or leak. The codes are issued and checked by WorkOS, and expire after 10 minutes.
- Sign-in is rate limited: a few codes per address per 15 minutes and per day, a cap per network address, and after 5 wrong codes for an address you must wait 15 minutes before trying again.
- Deleting your account needs a fresh emailed code, so a stolen session or assistant key is not enough to delete it.
- Sign-ins and other security-relevant events are written to your account activity, with the time, IP address and device, which you can review under Settings → Security.
4. Sessions
- The session cookie is HttpOnly (scripts on the page cannot read it), Secure (only sent over HTTPS) and SameSite=Lax.
- Sign out everywhere in Settings → Security ends every browser session on your account at once.
5. Assistant access
- Each assistant you connect gets its own keys, tied to your account, and everything it writes is recorded as that assistant acting on your behalf.
- We store only a hash of each key, not the key itself.
- Keys expire after one year. Under Settings → Security you can see each assistant’s keys, when they were created and last used, and revoke one key or all of an assistant’s keys at once.
6. Every edit attributed, every edit reversible
- Every block of text records who wrote it: a person, or which assistant on whose behalf, and when.
- Edits made by assistants, and by people who came in through a share link, wait for review in the page, where you can keep or revert them.
- Changes can be reverted block by block, back to the text from before a person’s or assistant’s edit.
7. Who can see what
- Workspaces have an owner, and members are editors or viewers. Viewers cannot change content.
- A page can be shared by link with view, comment or edit access. The owner can change the access level, rotate the link (the old link stops working) or revoke it at any time.
- Shared pages are kept out of search engines, and share-link tokens are stripped from our analytics.
- Guests on a share link are rate limited, and have smaller upload limits than members.
8. Files and images
- Uploads are capped at 25 MB per file (10 MB for guests) and 1 GB per workspace. Oversized uploads are refused before they are read into memory.
- Executable files are refused, checked both by file name and by the file’s actual content.
- Only images (PNG, JPEG, GIF, WebP), PDFs and plain text are shown in the browser, and only when the file’s content matches its declared type. Everything else, including HTML and SVG, is served as a download that cannot run as a page.
- Downloads and previews are served with a sandboxing Content-Security-Policy and
X-Content-Type-Options: nosniff, so the browser does not guess a file’s type or run anything inside it. - Files are stored as uploaded, including metadata such as photo location. See the privacy policy.
9. Web app hardening
- The web app runs under a strict Content-Security-Policy: no inline scripts, and connections only to wunel itself and our EU analytics endpoint.
- The app cannot be embedded in other sites (
X-Frame-Options: DENY,frame-ancestors 'none'). - Internal headers that the agent server uses to say which person an assistant acts for are stripped from every request that arrives from the internet, so they cannot be forged from outside.
- Public endpoints, such as shared pages, are rate limited per network address.
10. Backups
We back up the database and file storage every night and keep backups for 14 days.
11. How we build
- We scan our code and dependencies with Snyk as we develop, and fix what it finds.
- Changes are covered by automated tests, including end-to-end tests in a real browser.
- wunel is a young product. We do not hold third-party security certifications, and we will not claim any until we do.
12. Reporting a vulnerability
If you think you have found a security problem in wunel, email support@wunel.com with “Security” in the subject. Please include what you found and how to reproduce it.
Please give us a reasonable time to fix it before telling anyone else, and do not access or change other people’s data while testing. Use your own account and workspaces. We will confirm we received your report and keep you updated.