Legal

Privacy Policy

What we collect, why, and for how long. In brief: your email address, which you sign in with, and a record of who did what, which is your workspace's audit log. We use nothing for advertising.

Last updated 21 October 2026

1. Who this covers

This policy says how Assessly Pte. Ltd. (UEN 202613864N), trading as Forculus, handles personal data when you visit forculuslabs.tech, sign in to the dashboard at app.forculuslabs.tech, use the CLI or the API, or open an app someone has shared with you on forculuslabs-apps.tech.

Assessly Pte. Ltd. UEN 202613864N 31 Pasir Ris Drive 3, #11-06 Eastvale, Singapore 519491 Contact: privacy@forculuslabs.tech

We are a Singapore company, and Singapore's Personal Data Protection Act 2012 (the PDPA) applies to everything we do with personal data. Where the GDPR or the UK GDPR applies too, this policy covers what they require.

For the account data described below, we are the organisation responsible for it under the PDPA, and its controller under the GDPR. For the data inside our customers' apps, such as what an app stores about the people who use it, the customer who deployed the app is responsible for it. We are their data intermediary under the PDPA, and their processor under the GDPR, under the Data Processing Addendum. If you have a question about an app's data, ask the app's owner. The dashboard shows their email address to everyone the app is shared with.

You can write to our Data Protection Officer at dpo@forculuslabs.tech.

2. What we collect

Account

Sign-in and sessions

Workspaces and apps

Audit log

Usage

Billing

Support

Status page updates

The website

We don't buy data about you, add to your profile from other sources, or track you across other sites.

3. Why, and on what basis

We collect, use and disclose personal data only for the purposes below. If we want to use it for a new purpose, we tell you first, and ask for your consent where the law needs it.

PurposeDataBasis (PDPA)Basis (GDPR)
Signing you in, and keeping your account yoursEmail, sign-in metadata, sessions, links to a Google or Microsoft accountDeemed consent, since we need it to give you the Service you signed up for. Legitimate interests, in preventing account takeoverPerformance of the contract. Our legitimate interest in preventing account takeover
Running the platform: deploying, serving and sharing appsWorkspace and app data, your contentDeemed consent, since we need it to give you the ServicePerformance of the contract
Signing a workspace's people in through its own identity provider, and keeping its members in step with that provider over SCIMWhat the workspace's provider sends usDeemed consent, since the workspace asked for itPerformance of the contract. The customer's legitimate interest in managing who works in its workspace
The audit log: showing a workspace's owners and admins who did whatAudit events, request logsWe keep it for the workspace, as its data intermediary, under the DPAWe keep it for the workspace, as its processor, under the DPA
Usage insights: showing a workspace's owners and admins, members whose role can view the audit log, and each app's owners for their own app, who opens which app, and how oftenCounts of visits and requests per person, app and day, made from the audit logWe keep them for the workspace, as its data intermediary, under the DPAWe keep them for the workspace, as its processor, under the DPA
Keeping our own record of account and workspace events: terms accepted, an account or workspace deleted, a workspace suspendedThe event, when it happened and whose account it wasDeemed consent. Legitimate interests, in being able to show what was agreed and what happenedOur legitimate interest in being able to show what was agreed and what happened. Legal obligation
Letting an AI client you approve use an app as youThe client's details, which apps you let it use, its tokensDeemed consent, since you asked to connect itPerformance of the contract
Deploying an app from GitHubThe repository, branch, and each run's id and commitDeemed consent, since the app's owner set it upPerformance of the contract
Billing and taxBilling recordsDeemed consent. Required by Singapore tax and company lawPerformance of the contract. Legal obligation under tax and accounting law
Emailing people who subscribed to the status page when we post an incident or schedule maintenanceThe subscriber's email addressConsent: you confirm by opening the link we email you, and you can withdraw it from any of the emailsConsent, given and withdrawn the same way
Answering youSupport emailsDeemed consent, since you wrote to us for an answerPerformance of the contract. Legitimate interest
Security: detecting abuse, attacks and fraud, and reporting illegal contentSign-in metadata, request logs, account detailsLegitimate interests, in keeping the Service and its customers safe. Investigations, and disclosures the law requiresLegitimate interest in keeping the Service and its customers safe. Legal obligation
Handling copyright notices and counter-noticesThe notice or counter-notice and the contact details in itLegitimate interests, in keeping the protection the Copyright Act 2021 gives network service providersLegitimate interest in keeping the protection the Copyright Act 2021 gives network service providers. Legal obligation
Telling a workspace's owners what is happening to it: a payment failing, the move to Free that follows, the Free request allowance running out, a suspension, audit-log entries about to be deletedOwners' email addresses, and the workspace's plan, billing status and request countsDeemed consentPerformance of the contract
Telling a workspace's owners that it was deleted, deleted for good or restored, and by whom, and telling you that your account was deleted and what became of the workspaces you ownedOwners' email addresses, the workspace's name and short name, the email address of the owner who made the change, and the names of the workspaces you ownedDeemed consentPerformance of the contract
Measuring and billing usage: requests, CPU time and database rowsUsage counts per app and hour, and Cloudflare's record of each request to a Worker app, received briefly and not storedDeemed consentPerformance of the contract
Telling a workspace's owners about its usage: allowances, usage charges, the usage limit, an invoice during the billing month that failed, a creditOwners' email addresses, and the workspace's plan and usage countsDeemed consentPerformance of the contract
Understanding how the Service is used, so that we can improve itDaily totals per workspace: counts and sums, never contentBusiness improvementLegitimate interest in improving the Service
Telling you about changes to the Service, the terms or the pricesEmailDeemed consent. Required by law where a change needs noticePerformance of the contract. Legal obligation

Deemed consent means the PDPA treats you as agreeing, because you gave us the data for that purpose or we need it to provide what you asked for. Where we rely on legitimate interests under the PDPA, we have assessed that the benefit outweighs any adverse effect on you. You can ask us about that assessment.

We don't use your data for advertising, we don't send marketing email, and we don't make automated decisions about you that have legal or similarly significant effects. If we ever send marketing email, it will go only to people who agreed to get it, each one will have a working way to unsubscribe, and we will follow the Spam Control Act 2007 and the PDPA in sending it.

4. Cookies

The dashboard and the apps use four cookies, and all of them exist only to sign you in. None is used for tracking, and there are no third-party cookies.

CookieSet byWhat it doesLasts
__Host-forculus_sessionapp.forculuslabs.tech, and each app's own address once you open itYour signed-in session. We sign it, and the platform checks the signature on every request.12 hours, or until you sign out or revoke it
__Host-forculus_stateAn app's address, during sign-inTies the redirect back from the dashboard to the browser that started it, so a sign-in link can't be replayed elsewhere.Minutes. It is deleted once the sign-in completes
__Host-forculus_signed_inapp.forculuslabs.tech, with your sessionHolds only the number 1, so the dashboard's page can tell you are signed in without asking our servers. It says nothing about who you are and lets nobody in.As long as your session. It is deleted when you sign out
__Host-forculus_oauthapp.forculuslabs.tech, when you start signing in with an account at another providerTies the provider's answer to the browser that started the sign-in, so it can't be used from anywhere else.10 minutes at most. It is deleted once the sign-in completes or fails

These cookies are strictly necessary to provide the service you asked for, so they need no consent banner. The website at forculuslabs.tech sets none. Apps deployed by our customers may set their own cookies, and those are the app owner's responsibility.

The Cookie Notice says the same on a page of its own.

5. Who we share it with

We share personal data only with:

We don't sell personal data, and we don't share it with advertisers or data brokers.

6. Where it is processed

The platform runs on Cloudflare's global network, so a request is handled at the Cloudflare location nearest the person making it. The control plane, which runs the dashboard and the API, runs on Cloudflare in the Asia-Pacific region. Its database, which holds accounts, workspaces and the recent audit log, is with Neon in AWS ap-southeast-1 (Singapore). Most audit-log entries older than 30 days are kept in Cloudflare R2 object storage, which Cloudflare is asked to keep in the Asia-Pacific region. Each app's database and files are made in the Cloudflare region nearest where the person who created the app was, as a hint Cloudflare follows where it can. They stay where they were made. Billing data is with Stripe in the United States. The platform's email, meaning sign-in codes, invitations, notices to workspace owners and status page updates, is sent through Resend from ap-northeast-1 (Tokyo), and Resend also processes it in the United States. The email you send us is held by Proton in Switzerland, Germany or Norway. The Subprocessors page has the detail.

When we send personal data out of Singapore, we do it as the PDPA's transfer limitation obligation and the Personal Data Protection Regulations 2021 require. Each recipient is bound by a legally enforceable contract to protect the data to a standard comparable to the PDPA.

Where data about people in the European Economic Area, the United Kingdom or Switzerland goes to a country without an adequacy decision, we rely on the Standard Contractual Clauses and the UK Addendum in each provider's data processing terms with Assessly Pte. Ltd., together with the safeguards in section 9. You can ask us for a copy of the clauses we have in place.

7. How long we keep it

We keep personal data only as long as a purpose in section 3, or a legal or business reason, needs it. After that we delete it or make it anonymous. The table says when that is.

DataKept
Account (email, terms acceptance, links to a Google or Microsoft account)Until you delete your account, then removed within 30 days
Sign-in codes10 minutes, or until used. The record that one was sent stays an hour longer, for rate limiting
Browser sessions and their metadataUntil they expire after 12 hours, or are revoked. The record of the session is kept for 30 days after it ends, for security
PasskeysUntil you remove them or delete your account
CLI sessions and their metadataUntil they expire after 30 days, or are revoked. The record of the session is kept for 90 days after it ends, for security
What a workspace's identity provider sends over SCIMWhile the workspace exists, unless the provider removes the person first. It goes with the workspace's other records
Apps and your content (code, files, databases, containers)Until the app or the workspace is deleted. We may keep a deleted app or workspace for up to 30 days so that it can be restored, and then delete it for good. Deleted for good, it is removed from Cloudflare at once. That is permanent, and nothing is restorable
The control plane's records of a deleted appIts configuration, versions, sharing grants, secrets and environment variables are kept with the app while it can be restored, and removed when it is deleted for good. Its tokens are revoked at once. Its entries in the workspace's audit log, including the one that records the deletion, stay there. The workspace's owners and admins can still see them, and its owners can export them. They are deleted with the rest of the log, as below
The emails about a deleted or restored workspace, or a deleted account, while they wait to be sentThe email address, the workspace's name and who made the change until the email is sent, or until we stop trying after 3 days. Then only a one-way hash of the address and of who made the change, so nobody gets the same email twice or too many in a day, removed 30 days after the change. Once you delete your account, your address is taken out of the ones still waiting
The control plane's records of a deleted workspace (names, members, configuration, billing status)30 days after the deletion, then removed. While the workspace can be restored they come back with it. Once it is deleted for good they are kept only for accounting, and can't be restored
Audit log3 months on Free and Team, 12 months on Business and Enterprise, measured from the event, then deleted within two days. Most entries older than 30 days are kept in Cloudflare R2 object storage, which Cloudflare is asked to keep in the Asia-Pacific region, encrypted with a key that belongs to the workspace, and are shown, exported and deleted like the rest. After any change of plan, events older than the new plan's retention are deleted 30 days after the plan changed. A deleted workspace's log goes with its other records, 30 days after the deletion. A workspace owner can export it on every plan
Usage insightsAs long as the audit log they are counted from, as above. An app's counts go when it is deleted for good
App logs: what your apps print, the exceptions they throw and a container's outputKept by Cloudflare for 7 days, then deleted. They can be read back for 1 day on Free and 7 days on Team, Business and Enterprise
Log lines waiting to go to a log drainDeleted once the destination takes them. A batch that fails for a day is kept up to 7 days so it can be sent again, then deleted
AI clients connected to an appAccess tokens last an hour, and a connection 30 days at most. Tokens are deleted a day after they end, and the record of a connection within 60 days of its end. A client nobody connects is deleted after a day, and any other 90 days after its last use, once no connection holds it
GitHub deploysThe repository and branch, until an owner changes them or the app is deleted. Each run's id and commit, a day after the run's 15-minute deploy credential ends
A hash of a webhook delivery's signature, on a verified public path, so a replayed copy can be refusedDeleted within an hour
Usage countsWhile the workspace exists. They go with its other records
Billing records7 years after the transaction. Singapore's Income Tax Act 1947 and Companies Act 1967 require us to keep them for at least 5, and we keep them 2 years more for audits and disputes. Stripe keeps its own records under its policy
Support email2 years after the last message in the thread
Status page subscriptionsUntil you unsubscribe, when we delete the address. An address never confirmed is deleted within an hour of its link expiring, 48 hours after we sent it. The hashes kept to limit asks are deleted after a day
Copyright notices and counter-notices3 years after the last notice about the same account, so that we can tell a repeat infringer
Security and access logs at the edgeUp to 30 days
Our own record of account and workspace events: terms accepted, an account or workspace deleted, a workspace suspended7 years, like billing records. Once you delete your account, your email address in these records, and in our log of your sign-ins and sessions, is replaced by a one-way hash of it
Backups of the control-plane databaseNeon's point-in-time restore keeps up to 7 days of history. A deletion is gone from it within that time. The restore history is for disaster recovery, and is never used to restore a deleted workspace or app
Point-in-time history of each app's databaseA Workers app's database is Cloudflare D1, which keeps a point-in-time history of the last 30 days. Cloudflare maintains it, it is always on and it cannot be switched off, so a row an app deletes or overwrites stays in that history for up to 30 days. A workspace owner can put the database back as it was at a moment in that history. Nothing else restores from it

Where a legal hold, a dispute or an investigation requires it, we keep the relevant data for as long as that requires, and no longer. A report to the authorities, and what it covers, is kept for one year after we make it, or longer if the authorities ask us to keep it.

8. Your rights, and how to use them

Wherever you are, you can ask us what personal data we hold about you and how we have used or disclosed it in the past year, and ask us to correct or delete it. Under the PDPA, these are your rights of access and correction. If you are in the EEA, the UK, Switzerland or another place with similar law, you also have the rights to restrict or object to processing, to data portability, and to complain to your supervisory authority. You can do most of this yourself, straight away, in the dashboard:

For anything you can't do yourself, write to privacy@forculuslabs.tech from the address on your account, or to our Data Protection Officer at dpo@forculuslabs.tech. We answer within 30 days. If we need longer, we tell you within those 30 days when we will answer. We don't charge for it unless a request is plainly unfounded or repetitive.

If you are unhappy with our answer, you can complain to Singapore's Personal Data Protection Commission (PDPC), at pdpc.gov.sg. If you are in the EEA, the UK or Switzerland, you can also complain to the supervisory authority where you live. We would rather you told us first.

9. Security

The Security page says how the platform is built to protect your data: every app behind one door, signed identity on every request, row-level isolation between workspaces, secrets encrypted with a platform key, and revocation within a minute. Data is encrypted in transit, and the providers that store it encrypt it at rest. Our staff's access to production is limited to what operating the service needs, and is logged.

If we learn of a breach affecting your personal data, we tell you without undue delay, and the affected workspace owners within 72 hours of confirming it, with what we know and what we are doing about it.

For data we are responsible for, we also follow the PDPA's rules on data breaches. We assess a suspected breach quickly, and within 30 days of first learning of it. If it is likely to cause significant harm to the people it affects, or affects 500 or more people, we notify the PDPC as soon as we can, and no later than 3 calendar days after we find that it must be notified. If it is likely to cause you significant harm, we tell you directly, at the same time or soon after. For data inside a customer's app, we tell the customer, who then decides what to notify, as the DPA says.

10. Children

The Service is for businesses and professional use, and is not directed at children. We don't knowingly collect data about anyone under 18. If you think we have, tell us and we will delete it.

11. Changes

When this policy changes in a way that affects you, we email workspace owners at least 30 days before it takes effect, and the date at the top changes. Clarifications take effect when published.

12. Contact

Privacy questions and requests: privacy@forculuslabs.tech. Our Data Protection Officer: dpo@forculuslabs.tech. Everything else: support@forculuslabs.tech, or by post to the address above.