Curia — Privacy Policy
The short version
Curia has no Curia accounts and no cloud storage. Everything you save stays on your device. Curia still has to talk to some servers to work. When you save a post, these requests leave your device:
- The link you give us, sent to Curia's resolver so it can find the media on that link. The resolver does not keep it. A Threads link, an Instagram Highlight link and an Instagram Story link are exceptions. Your device opens that public page itself, and the link never reaches Curia's resolver (see Links your device reads itself).
- A request to the platform's own media servers, to download the media itself.
- Ad requests, if you are using the free version.
If you check an Instagram Source, that public profile loads in Instagram's own page on your device; signing in, if you do, happens on that page, and Curia does not see your password. If you check an X Source, the handle you added is sent to Curia's resolver, which reads that public profile page and sends back a few recent public posts. There is no sign-in for an X check, and the resolver does not keep the handle.
If you save an Instagram Story, or a public Instagram post that Curia's resolver can't read, Curia can open that page on your device using your own Instagram sign-in, if you have signed in to Instagram inside Curia. Curia never sees your password. Your Instagram sign-in stays with Instagram, on your device, and is never sent to us. Instagram may count this as you viewing the Story or post.
The app also fetches a configuration document from the same resolver, so it knows which features are on. That request carries no link and no account.
It also asks Google Firebase Remote Config which features are switched on. That request carries an ID Firebase assigns to this copy of the app (a Firebase installation ID), which app and SDK version it is, and your device's OS version, language, region and time zone. It never carries a link, a handle or anything from your Library.
Crash reports are off unless you turn them on. Curia includes Google Firebase Crashlytics; you choose under Settings → Privacy & Data → Send crash reports. See Crash reports below.
We do not ship an analytics SDK. Google's advertising SDK, and on Android the Play Billing library, include Google's own service components. We do not have your email address, because we never asked for it.
This policy explains how HMB Software LLC (“HMB Software,” “we”) handles information in the Curia apps for iPhone and Android (the “App”).
What we collect
Links you paste or share into Curia, and X handles you check
When you give Curia a link, it is sent over HTTPS to Curia's resolver service so the service can look up the public media on that post. When you check an X Source, the handle you added is sent to the same resolver in the same way. Everything in this section applies to both.
- The link or handle is used to answer that one request and is not retained afterwards.
- Server logs record the request path and not the link or handle. Curia's resolver does not log full supplied links, handles you check, signed media URLs, captions, or the text of anything you share into the app.
- Your IP address necessarily reaches our server, as it does with any internet request. It is used to serve the response and to enforce rate limits against abuse.
- Our web server keeps standard logs. The access log records your IP address, the time, the request method, path and protocol version, the response status and size, and how long it took. An error log records the IP address and request details when something goes wrong. The link or handle you supplied is in neither of them. It travels in the request body, which is never logged, and requests carrying a query string are rejected before they are processed so that one cannot end up in a log either. These logs are kept for normal server operation and security, and rotate on the usual schedule.
- Operational counters (request volume, error rates, response times) are kept so the service can be run. They are aggregate figures and are not tied to you or to any device.
We do not build a profile, a history, or a record of what you have looked up.
Media you save
Media downloads directly from the platform's own content servers to your device. It is stored in Curia's private storage on your device.
- It is never uploaded to us.
- We never see it, store it, or have any copy of it.
- It is not backed up to any Curia server, because none exists.
Android backup and device transfer of the app are turned off. If you back up an iPhone, that backup is Apple's and can include the app's files.
Your Library, Collections, and edits
Saved media, captions, Collections, edits, collages, and settings are stored locally on your device only.
Photos you take in Curia. If you take a photo from the Library, it is saved to the Library like any other item. Curia removes the photo's location before keeping it. On Android, Curia hands the shot to your camera app and holds no camera permission of its own.
Backups you export. Settings → Backup & Restore can export your Library as a single archive file. The file goes only where you choose to put it, such as your device's storage, a files app, or another app you pick in the share sheet. Curia does not upload it anywhere. Anything that place then does with the file is up to that place. Importing reads an archive file you pick.
Links your device reads itself: Threads posts, Instagram Highlights, Stories, and posts our server can't read
Threads posts and Instagram Highlights. A Threads link or an Instagram Highlight link is not sent to Curia's resolver. Your device requests that public page directly from Threads or Instagram over HTTPS, reads the media from it on the device, and downloads what you choose from the platform's content servers. The request uses no sign-in and no cookies. Threads or Instagram receives your IP address and a user agent naming Curia, just as it would if you opened the link yourself. Curia saves these only from public accounts.
Saving a Story. If you paste or share a link to an Instagram Story, Curia opens that Story's page in Instagram's own view on your device, using your Instagram sign-in there. Instagram shows Stories only to signed-in accounts, so saving a Story needs you to be signed in to Instagram inside Curia; without that, Curia asks you to sign in and reads nothing. Curia reads the page once to find the photos and videos, then downloads the ones you choose from Instagram's content servers. Curia saves Stories only from accounts Instagram shows as public. A Story link is not sent to Curia's resolver.
Saving a post our server couldn't read. When you paste or share an Instagram post or Reel link, Curia first asks its own resolver, which reads public pages without any sign-in. If the resolver can't read it, for example because the account limits who can see its posts, Curia can open that post's page on your device instead, as your browser would. If you have signed in to Instagram inside Curia, the page opens with your sign-in. Before the first time it uses your sign-in for this, Curia tells you and asks. Curia saves only from public accounts, and only what Instagram itself shows your account.
Your Instagram sign-in. You sign in on Instagram's own page, inside the app. Your password goes only to Instagram. The sign-in is kept by that Instagram page in your device's web view, the way a browser keeps one. Curia's own code only checks whether you are signed in. It never copies your sign-in into storage of its own, logs it, or sends it to us. Instagram may record that your account viewed a Story or post Curia opened this way, just as it would in a browser. These reads happen only when you give Curia a link or tap to check a Source, never in the background.
Checking a profile for new posts
Instagram. If you add an Instagram Source, Curia opens that public profile in Instagram's own page on your device. If you sign in, you sign in on Instagram's own page. Curia does not see your password, and it does not copy Instagram's login cookies into storage of its own. Curia reads the posts shown on that page so it can tell you which ones are new. Those reads happen when you ask, not in the background.
X. If you add an X Source, checking it sends the handle over HTTPS to Curia's resolver. The resolver requests that public profile page from X, identifying itself as Curia's own service — the profile request comes from our server, carries no account and no cookies, and X sees our server, not your device. The resolver answers with a few of the profile's recent public posts and keeps neither the handle nor the result. Post thumbnails on the results screen, and anything you choose to save, download to your device from X's content servers, like any other save. There is no X sign-in anywhere in Curia. Everything said above about server logs for links applies to the handle in the same way: it travels in the request body and appears in no log.
Advertising (free version)
The free version of Curia shows ads through Google AdMob. Google's ad SDK collects data for advertising, which may include advertising identifiers, device information, approximate location derived from an IP address, app and ad interaction data, and diagnostic information about how the app performs — Google lists app launch time, hang rate, and energy usage. That collection is governed by Google's policies:
Where required by law, including in the European Economic Area, the United Kingdom, and Switzerland, the app asks for your consent before requesting any ad, using Google's User Messaging Platform. Curia's ad SDK does not start until that consent has been resolved. You can review or change the choice later in Curia's Settings.
On iOS, Apple additionally asks whether you allow tracking across apps and websites. Declining does not change what Curia does. You still see ads, and they are less targeted. You can change the choice in iOS Settings → Privacy & Security → Tracking.
Purchases
Curia Pro is a one-time purchase that removes Curia's ads permanently for the store account that buys it. Where a store completes that purchase, the store handles the payment. We never see your payment details. The app stores only whether the purchase is owned, on your device.
Feature configuration (Google Firebase Remote Config)
When the app starts, and while it is open, it asks Google Firebase Remote Config whether particular features are switched on. Firebase uses a Firebase installation ID — a random ID for this copy of the app, created by Firebase Installations — to answer, together with which app and SDK version is asking and your device's OS version, language, region and time zone. On your device the ID lasts until you delete Curia or clear its data; a fresh install gets a new, unrelated ID. Firebase keeps installation IDs it has received until the app's developer asks Firebase to delete one, and then removes the data tied to it within 180 days. Curia does not make that request. The answer can only switch features off, or choose which of the ad networks already built into the app serves an ad (today that is only Google AdMob); it cannot turn on anything else, add an ad network or start new collection, and it is never used to profile you. The request never carries a link, a handle or anything from your Library.
Crash reports (Google Firebase Crashlytics) — off unless you turn them on
Curia includes Google Firebase Crashlytics. Crash reports are off by default. You can turn them on or off at any time under Settings → Privacy & Data → Send crash reports.
- While reports are off, the Crashlytics library still writes a record of a crash on your device. It is not sent. Curia deletes it the next time it opens, and turning reports on later never sends it.
- When reports are on, a crash is sent to Google — on iPhone and iPad the next time Curia opens; on Android it is queued straight away and usually sent the next time Curia opens with a connection, though Firebase may also send it in the background. A report contains where in the app it failed (the error's type and the code path), the app's state, and basic device details (such as model, OS version and free memory and storage), with IDs Crashlytics and Firebase assign to this copy of the app. On Android, Curia removes the text of error messages before the report is made, except for a crash in the first moment of start-up, before Curia's own code is running. On iPhone and iPad, a crash inside one of Apple's own frameworks can include that framework's description of the error. A crash report never includes your Library, and Curia adds nothing to it except which build of the app it is.
- Turning reports off means no later crash is sent, and records still waiting on your device are deleted. A crash that happened while reports were on is already queued to be sent, and may still be sent after you turn reports off — for example, if your device was offline when it happened.
- Google keeps crash reports for 90 days.
What we do not collect
- No Curia account, no sign-up, no email address, no name.
- No Instagram password and no X password. Instagram sign-in, when you use it, happens on Instagram's own page; an X check has no sign-in at all. Saving a Story, or a post our server couldn't read, uses your Instagram sign-in on your device and sends nothing about it to us. An Instagram Source check reads the posts Instagram's page shows for the profile you asked about; an X Source check reads only the profile's public posts.
- No analytics SDK, and no attribution SDK of our own. Curia uses Google Firebase Remote Config and, only if you turn crash reports on, Google Firebase Crashlytics, both described above. Google's advertising SDK, and on Android the billing library, include Google's own service components — the ad SDK's share of that is described under Advertising above, and it runs only in the free version, only after consent is resolved.
- No contacts, no calendar, no precise location, no microphone.
- No browsing history, and no record of the links you have used.
Permissions Curia asks for, and why
| Permission | Why |
|---|---|
| Internet / network | To resolve a link and download the media. |
| Camera (iOS) | Only when you take a photo from the Library. On Android, Curia uses your camera app and asks for no camera permission. |
| Photos (iOS) | iOS asks for access to your photo library the first time Curia adds a copy to Photos: when you use “Add to Photos” on an item or a selection, or, if you have turned on “Also save to Photos” in Settings, when your next save finishes. Curia explains why before iOS asks. The request is for read and write access, which Curia needs to create and find its Curia album. Curia uses this access only to add the copies you ask for to that album, and does not browse or read the rest of your photos. Android needs no permission for this. |
| Notifications | Not requested. Curia sends no notifications. |
| Location | Not requested. |
Curia's own Android manifest requests internet access and nothing else. The libraries it ships add theirs, including an advertising identifier, a Play billing permission, and network-state access.
Curia itself does no background work. It does not monitor accounts, poll for new posts, run on a schedule, or wake up after a reboot. It does something only when you ask it to. On Android, Google's billing library schedules some of its own work, and if you have crash reports on, Firebase's upload library can schedule a system job to send a crash report it is still holding.
Where your data goes
| Data | Leaves your device? | Who receives it |
|---|---|---|
| Link you paste or share | Yes, once per request | Curia resolver (resolve.hmb-software.com) |
| A Threads link or an Instagram Highlight link | Yes, once per request, from your device | Threads or Instagram (Meta), directly. Curia's resolver does not see the link. The platform sees your IP address and that the request comes from Curia. |
| An Instagram Story link, or a post the resolver couldn't read | The page loads in Instagram's own view on your device, with your Instagram sign-in if you have one | Instagram, in that view. Nothing about your sign-in goes to Curia. |
| Media files | Downloaded to your device | The platform's own content servers |
| Saved Library, Collections, edits | No | — |
| A backup archive you export | Only where you choose to put it | The place you pick, such as device storage, a files app or a share target. Curia uploads it nowhere. |
| Settings and preferences | No | — |
| Ad requests (free version) | Yes | Google AdMob |
| An Instagram profile you ask Curia to check | The page loads in Instagram's own view on your device | Instagram, in that view |
| An X handle you ask Curia to check | Yes, once per check | Curia resolver (resolve.hmb-software.com), which requests the public profile from X — that request comes from our server, not your device. Thumbnails and media you then view or save download to your device from X's content servers. |
| Which features are on | Yes, a configuration check | Curia resolver (resolve.hmb-software.com). No link and no account. |
| Which features are switched on (Firebase) | Yes, a configuration check | Google Firebase Remote Config: a Firebase installation ID, the app and SDK version, and your device's OS version, language, region and time zone. No link and no account. |
| Crash reports | Only if you turn them on (see Crash reports) | Google Firebase Crashlytics: where the app failed, app state, basic device details and installation IDs. Never your Library. A crash that happened while reports were on may still be sent after you turn them off. |
Deleting your data
- Individual items: delete them in the Library.
- Saved items and collections: Settings → Clear Library & data. That does not remove an Instagram sign-in kept by the platform page on this device, and it does not revoke a Curia Pro purchase.
- The sign-in as well: uninstall the app. Because Curia keeps no account on a server, uninstalling removes everything Curia holds about you on that device.
Media you exported to Photos is yours and stays in Photos. Curia keeps no handle on exported copies and cannot delete them.
A Curia Pro purchase, when a store has completed one, is owned by that store account, not by Curia. Clearing local data does not revoke it.
Your rights
Because Curia holds no account and keeps no server-side record tied to you, there is in practice almost nothing for us to retrieve, correct, or delete on request. All of it is already under your control on your device. The exceptions are the web-server logs described above, which contain IP addresses and rotate on a normal schedule — if you want us to check for and remove entries relating to you, contact us at the address below — and what Google Firebase holds: the installation ID Remote Config uses, and crash reports if you turned them on. Neither carries a name, an account or contact details, so we cannot tell which belong to you; Google keeps crash reports for 90 days. Deleting Curia removes the installation ID from your device, but not Firebase's record of it, which is kept as described under Feature configuration above.
For advertising data collected by Google, exercise your rights through the Google links above.
If you are in the EEA, the UK, or a jurisdiction with comparable law and you believe we hold data about you, contact us and we will respond.
Children
Curia is not directed at children and we do not knowingly collect data from children. Curia saves publicly posted media from third-party platforms, and that content is not moderated or curated by us.
Third-party content
Curia helps you save media from public posts on other platforms. That media belongs to whoever created it. Curia does not grant you any rights to it, and you are responsible for respecting the rights of the people whose content you save, including copyright and the terms of the platform it came from.
Changes
If this policy changes materially, the updated version is posted here with a new “Last updated” date. The current version lives at https://www.hmb-software.com/curia/privacy.
Contact
HMB Software LLC
Email: privacy@hmb-software.com
Product help: Curia support
Site: https://www.hmb-software.com