Legal
Privacy Policy
What information Refino handles, why, and what you can do about it. In plain English, and specific to what the product actually does.
Who operates Refino
Refino is operated by Smarter Foundry LLC, a California limited liability company. “We”, “us” and “Refino” in this policy mean Smarter Foundry LLC. You can reach us about anything in this policy at hello@refino.dev.
This policy covers two things: the refino.dev website you are reading now, and the Refino product — the accounts, connected sites and copy editor that the website describes. They behave quite differently, so they are described separately below. The rules for using Refino are in the Terms of Service.
The refino.dev website
This website is a set of static pages. It has no accounts, no forms, no sign-up and no database. It sets no cookies and stores nothing in your browser. There is no analytics product on it, no tag manager, no advertising or tracking pixels, and no third-party scripts of any kind. Its fonts are served from the site itself rather than from another company.
The site is hosted on Cloudflare, which handles the request as hosting providers do and may keep short-lived operational records of it, including the IP address the request came from. Signing up happens in the Refino product, not on this site, and every email link here opens a message in your own mail program; nothing is submitted to a server here. If you write to us, we keep your message and your email address so we can answer you.
Signing in to the product with GitHub
Refino accounts are created by signing in with GitHub. When you do, GitHub asks for your permission and then tells us your GitHub account identifier, your name or username, your primary verified email address, and the URL of your avatar image. We store those to create and identify your account.
You sign in through the Refino GitHub App. The access token GitHub issues when you sign in can reach only what the App itself may reach, and only in repositories you have installed the App on. Refino uses it during that single request — to read your profile details and the App installations you can access, and, when you connect a site, to list the repositories you can connect and check that you can push to the one you choose — and then discards it. We do not store it.
Connecting a site, and what Refino does in your repository
Repository access is a separate, deliberate step. It happens only when you connect a site, and only for the repository you choose.
To connect a site you install the Refino GitHub App on your GitHub account or organization and choose which repositories it may use; you can choose just one. GitHub shows you the App’s permissions before you install it: read and write access to repository contents; read access to repository metadata and to deployments; and read access to your account’s email addresses. GitHub grants the contents permission for whole repositories, not for single files: it covers every file in the repositories you choose. Which files Refino actually reads and writes is limited by Refino’s own software, to those described below. In an organization, an owner may have to approve the installation. You do not create or paste any token.
Refino then confirms the branch your site deploys from — from your host’s deployment records when they name it, otherwise by asking you — and the address your website is published at, which it reads from your repository when it can and otherwise asks you for.
When Refino needs to read or write your repository, it asks GitHub for a short-lived token for that installation, limited to the one repository of that site. These tokens expire within an hour. Refino keeps them only in server memory, reusing one until shortly before it expires, and never writes them to storage.
Sites connected before Refino offered the GitHub App use a fine-grained personal access token their owner created and pasted in, limited to that one repository. Refino keeps using that token, encrypted at rest, until the owner switches the site to the App from its page. Switching first checks that the App can reach the repository, and only then deletes the stored token. The token itself remains valid at GitHub until you revoke it there.
What Refino reads and writes
Refino reads the copy file on your site’s branch. That file is a flat list of text identifiers and their words, and it is what the editor shows you. When you save, Refino writes a new version of that same file back to the same branch as a single commit. Only the entries you changed are changed. If your site has articles you edit with Refino, it reads and writes those article files in the same way.
To set up and run the site, Refino also reads: the repository’s name, default branch, homepage address and whether it is private; its own configuration file, refino.config.json; the names of the repository’s branches and the rules GitHub applies to the site’s branch, to tell you whether saving there is possible; and your repository’s deployment records, comparing commits to tell whether a production deployment includes a saved change. When you press Update Refino, it reads the list of files in the repository and the Refino files, package manifest and lockfile it updates, and writes those changes as a single commit.
What the installer sends
When you or your coding agent run Refino’s installer in your repository, it sends Refino the repository’s name, the branch it is working on, the copy file path, the framework and package manager, and any website addresses it found in the repository, so that you can approve the connection in your browser. After checking the installation, it reports whether the check passed, the Refino version, which routes are editable, and how many strings are editable or left in code. It never sends your website’s words or its source code.
We should be plain about the two halves of that. To show you your website’s words and save your edits, Refino necessarily reads and writes content from your repository — that is the service. But the product’s requests go to the files and records described above and nowhere else; it does not browse, clone, index or search the rest of the repository, and it does not read your source code for any other purpose. GitHub’s permission is broader than that, because it covers the whole repository; the limit is in Refino’s own software, which makes only the requests this page describes.
Reading and writing your content to provide the service is not a claim on it. Your website, its source code and its words remain yours. Refino does not acquire ownership of anything in your repository. That is set out in the Terms of Service.
Turning it off
You control this access and can end it at any time. Uninstall the Refino GitHub App, or remove a repository from it, in your GitHub installation settings and Refino can no longer reach that repository. For a site still using a token you created, revoke it in your GitHub token settings. Disconnect the site in Refino and we delete its record, including any stored token. Revoke Refino under Authorized GitHub Apps in your GitHub settings and the sign-in connection ends too. While Refino cannot reach a site’s repository, its editor cannot load or save, and the site’s page offers to reconnect.
What Refino stores about a connected site
For each site you connect we store:
- the name you give it, and the repository, branch and copy file path;
- the web address your published site is served from, which is the only address the editor is allowed to run on;
- which Refino GitHub App installation it uses, or, for a site connected before the App, the token you supplied, encrypted before it is written down;
- what Refino has observed while setting it up and running it: whether and how its production branch was confirmed, and the branch your host deploys production from; the installer’s report described above; whether the integration was found on the branch and whether that branch accepts saves; how it was installed (the installer used, the framework, the host and the Refino version); when its live editor last loaded copy; and when it was last saved, with that save’s commit identifier;
- which account the site belongs to, which site is the active one, and when the record was created and last changed.
For your account, we also store:
- each Refino GitHub App installation you have shown you can access: its identifier, the user or organization it is installed on, whether it covers all or selected repositories, and whether it is active, suspended or removed;
- while you connect a site from the dashboard, the list of repositories you can connect (their names, default branch, homepage address and whether they are private), which is replaced each time and not used after fifteen minutes;
- each installer request described above, until it is approved, cancelled or seven days have passed.
We do not store your website’s copy. There is no content database, no mirror and no sync job. The copy file stays in your repository; Refino reads the current version when you open the editor and writes your changes back. Its history is your repository’s history, held by you and by GitHub. Removing Refino leaves your content exactly where it was.
Billing
Refino has a Free plan and a paid Pro plan; the pricing page has the current details. Nothing below applies unless you subscribe to a paid plan.
When you do, payments are processed by Stripe. You enter your card details on a page Stripe hosts, and your full card number does not reach Refino’s servers. From Stripe we receive and store a customer identifier, a subscription identifier, the plan and billing interval, the subscription’s status and when the current period ends. Stripe handles the payment itself, including whatever billing and tax information it needs to collect from you, under Stripe’s privacy policy.
Technical and log information
Our servers and our hosting providers produce ordinary operational records of requests: the IP address, the time, what was requested, and browser and device information sent by your browser. The product also writes error logs when something fails, so we can fix it. We take care to keep credentials out of those logs.
We use PostHog, a product analytics service, to understand how Refino is used. There are three separate parts, and they carry different information.
Events from Refino’s servers. Refino’s servers record a small number of product events — for example that an account was created, a site was connected or reached a setup stage, an editor was opened, an edit was started, undone or saved, an upgrade was viewed or started, or a subscription started or ended — and send them to PostHog. Each event carries Refino’s own identifiers for your account and site, your plan, counts, and fixed categories such as your framework, your host, a setup stage or the reason something failed. These events never carry your email address, your name, your GitHub username, repository names, file paths, your website’s address, its words or your edits. They are sent from our servers, so they do not carry your IP address, and PostHog’s location lookup is turned off for them.
Usage events from the editor on your website. When you edit, the editor on your own website tells Refino’s servers when it opens, when you start editing (and whether that is text on the page or an article), and when you undo one edit or all of them. That is all it sends. No analytics code runs on your website: the editor sends these to Refino, and Refino records them as server events, as described above.
Browser analytics on the Refino dashboard. The dashboard at app.refino.dev loads PostHog’s browser library, which records the pages you view and when you leave them. As with any request your browser makes, these records include your IP address, which PostHog uses to estimate your approximate location; your browser, device type and screen size; the address of each page, which can include Refino’s identifiers for your sites and short status codes; the address of the page you came from; and, once you are signed in, your Refino account identifier and plan. It does not record your clicks or what you type, does not record your screen, and is not given your email address, your name or your GitHub username.
The refino.dev website loads no analytics code. We do not build profiles of visitors.
Cookies and browser storage
The refino.dev website sets no cookies. The product sets these:
- A session cookie. Signed, marked HttpOnly and same-site, and valid for thirty days. It names your account so you stay signed in.
- An analytics cookie on the dashboard. PostHog’s browser library on app.refino.dev keeps an identifier in a first-party cookie and in your browser’s local storage, for up to a year, so that it can tell one visit from the next. It is not used for advertising.
- A GitHub connection cookie. While you connect, switch or reconnect a site, a signed cookie of up to thirty minutes remembers what you were doing, so that the return from GitHub can be checked. It is discarded when that finishes.
- Two short-lived sign-in cookies. One protects the GitHub sign-in against interference; the other remembers where you were heading so you land there afterwards. Both are discarded once sign-in finishes.
- Session storage on your own website. When you edit, your browser holds a twelve-hour editing credential for that one site in session storage on your site’s own domain. It is cleared when you exit editing or close the tab. Edits you have not saved yet are kept there too, so that a reload or signing in again does not lose them, until you save or discard them or close the tab.
There are no advertising cookies, here or in the product. The dashboard’s analytics cookie described above is the only analytics cookie, and refino.dev sets none.
How we use information
- To provide Refino: signing you in, connecting your sites, loading your copy and saving your edits as commits.
- To keep accounts and sites separate and secure, and to investigate abuse or misuse.
- To answer you when you write to us, and to tell you about things that affect your account or your sites.
- To find and fix faults and keep the service working.
- To take payment and manage subscriptions, if you are on a paid plan.
- To meet legal obligations, and to establish or defend legal claims.
Who we share information with
We do not sell your information and we do not share it for anyone else’s marketing. We use a small number of service providers to run Refino, and they receive only what their part of the job requires:
- GitHub — sign-in, and reading and writing in the repository you connect, as described above.
- Stripe — payment processing and subscription management, for paid plans.
- PostHog — product analytics: events from Refino’s servers and page views on the Refino dashboard, as described above.
- Cloudflare — hosting for the refino.dev website.
- Cloud infrastructure providers — the servers and storage the Refino product runs on.
We may also disclose information if the law requires it, or where we reasonably need to in order to protect the rights, safety or property of our users, the public or ourselves. If the business or the product changes hands, account information would transfer with it, and this policy would continue to apply to it until it is replaced.
We do not sell your information or advertise to you
We do not sell personal information. We do not share it for cross-context behavioural advertising. Refino runs no ads and buys none, and there is no advertising or ad-measurement technology on this website or in the product.
How long we keep information
We keep information for as long as we reasonably need it to provide Refino, and afterwards for as long as we need it to meet legal and accounting obligations, resolve disputes, enforce our agreements and keep the service secure.
Disconnecting a site deletes that site’s record, including any stored GitHub token. To close an account entirely, write to hello@refino.dev and we will delete it and its sites; there is no self-service delete button in the product today. Some traces persist for a while after deletion in the ordinary course of running software — operational logs and backups, for instance — and records Stripe holds about payments are kept under Stripe’s own retention rules. Nothing we delete affects your repository: your content and its history stay with you and GitHub.
Security
We use reasonable technical and organisational measures intended to protect the information we hold. Traffic is served over HTTPS. Repository tokens for the Refino GitHub App are short-lived, limited to one repository, held only in server memory and never stored. A token you gave us for a site connected before the App is encrypted before it is stored and is decrypted only when a request of yours needs it. Session cookies are signed so they cannot be forged, and every request to load or save copy re-checks that the account asking owns that site.
No online service can guarantee absolute security, and we do not claim to. If you believe an account has been compromised, or you find a security problem in Refino, please write to hello@refino.dev.
Your choices
- Browse refino.dev without giving us anything. It asks for nothing.
- Disconnect a site in Refino, which deletes its record and any stored token.
- Uninstall the Refino GitHub App or remove repositories from it, revoke a token you created, or revoke Refino’s sign-in access, in your GitHub settings.
- Sign out, or stop using Refino at any time. Your site keeps working; the editor simply stops.
- Manage or cancel a paid subscription from the billing area of the product.
- Write to us to ask what we hold about you, correct it, or delete your account.
Depending on where you live, you may have additional rights over your personal information. Write to us and we will do our best to help, whatever your location.
Children
Refino is a tool for building and running websites, meant for adults using it for themselves or for a business. It is not directed to children, and we do not knowingly collect information from them. If you believe a child has given us information, write to us and we will remove it.
Where information is processed
Smarter Foundry LLC is in the United States, and information is processed there. Our service providers operate internationally, so information may be processed in other countries as well. If you use Refino from outside the United States, you are sending information to it.
Changes to this policy
We may update this policy as Refino changes. When we do, we change the effective date at the top of this page. If a change materially affects how we handle your information, we will make a reasonable effort to tell account holders about it rather than relying on the date alone.
Contact
Questions about this policy, or about information we hold, go to hello@refino.dev. Refino is a product of Smarter Foundry; the operator is Smarter Foundry LLC.