What Tilari is
Tilari is a bookkeeping program you use in the browser. You record expenses, income and transfers, attach receipts, browse the balance sheet and profit and loss, and close the year. The books live in a file or a locker that you control — not in a Tilari cloud account.
You do not need Kitsas to use Tilari. You can create a new Finnish business book in the browser and keep the books from there.
If you already use desktop Kitsas (open-source bookkeeping), this version opens and
writes the same .kitsas file. You can switch a saved file between the two;
that may change in a later Tilari. Tilari is not a Kitsas Oy product, and Kitsas Oy
does not support it.
Start by trying it: open Tilari, create a book, post a voucher. Below is what the program does and who it is for. Ways to run it (HTML, this computer, a locker) come later on the page.
Why Tilari
- Try it now: one HTML file — on start you create a new book.
- Fully working in the browser — or as a normal web app.
- Reports you can click through to a voucher; in-session change log.
- Fiscal statement (tilinpäätös) is in. No archive yet.
- The book in your file or your own locker (Supabase / VPS).
What Tilari adds
Tilari is full bookkeeping in the browser, not a viewer. For day-to-day use it brings things desktop programs rarely put in the same place — useful even if you have never used Kitsas.
- Browser, no install: one HTML file, a local server, or your own locker. Try it now; keep the books on a phone or a USB stick.
- Time navigation: Month / financial year / all and prev/next on reports and ledgers. A month at a time is a natural way to see how the period looks.
- Reports you can follow: balance sheet → account → voucher, plus monthly charts (turnover, profit, tax).
- Running balance on the account ledger — the account total row by row.
- In-session change log: what you changed before you saved.
- Save when you choose: work can stay in the tab; Chromium can also write the file you opened.
- Optional locker: your Supabase (encrypted in the browser) or your own VPS — not a Tilari cloud.
- Linux, Windows, and macOS packs if you want a program on this computer.
If you already know Kitsas: these are things desktop Kitsas does not present the same
way. Desktop Kitsas remains the reference for what Tilari has not copied yet
(associations and housing companies, chart editor, archive). In this version the same
.kitsas file works in both.
Who this is for
Tilari is useful for anyone who wants to keep Finnish double-entry books themselves: a freelancer, a sole trader, a small limited company, or a bookkeeper who wants a browser instead of a separate desktop program. You do not need a Kitsas background — a new business book is created on start.
It is especially natural if you already know Kitsas: the same file, the same posting rules, a browser UI, and Tilari’s own views (time, click-through reports, change log).
The author has tested Tilari in his own use: a Finnish osakeyhtiö (limited company) with relatively few vouchers (typical for freelancers). Large ledgers, associations, housing companies, sole traders, and other VAT setups have not been a daily test bed. Files should still open; behaviour there is not guaranteed. Say so if you use Tilari on a different kind of book — that helps prioritise.
What is in and what is not
For day-to-day books you usually need: open or create a book, post expense / income / transfer, attach a receipt, read reports, and close the year. The table is this version. There is no published schedule — ask in GitHub Discussions.
| Area | Status | Notes |
|---|---|---|
Open an existing .kitsas |
In | |
| Create a new empty book | In | On start. Business chart: name, business id, first financial year, VAT, practice. Associations and housing companies still start in desktop Kitsas |
| Expense / income / transfer / other | In | Daily posting |
| Bank statement (tiliote) | Partial | Edit and split a line to its own voucher. No bank-file import |
| Attachments | Partial | Upload and preview. No OCR / parse, no auto-shrink |
| Chart of accounts (tililuettelo) | Not yet | Accounts are read from the file; no editor |
| VAT (ALV) | Partial | HTML declaration; no OmaVero submit |
| Fiscal statement (tilinpäätös) | In | |
| Archive (arkisto) | Not yet | |
| Invoicing / workflow / payroll | Not yet |
Request features
Tilari grows by what people actually use. If you miss a function (something familiar from Kitsas, or a new idea), open a thread in GitHub Discussions. You do not need a Kitsas background: say what day-to-day bookkeeping needs.
Things to remember
- The book is your file. Save it. Tilari does not keep a cloud copy for you unless the locker is yours.
-
A saved
.kitsasfile is interchangeable with desktop Kitsas in this version. Quit desktop Kitsas before Tilari writes the same path. - A save meant for desktop Kitsas reassembles attachments into the file. The locker’s internal working copy can be “lean” and will not open in Kitsas as-is.
- Billing and workflow are not in this version.
Choose a setup
The book always opens in the browser. Pick where the file lives and who uses it.
| You want | Use |
|---|---|
| A trial, a USB stick, no install | One HTML file |
| Daily bookkeeping on one machine | Local server and browser |
| The same locker at home, in the office, or on a phone, with no public URL | Server on a VPN |
| The book in your own Supabase project | Supabase locker |
A .kitsas file inside Dropbox or Drive |
Synced folder (desktop: Chrome/Edge) |
| A public hostname and a login gate | Your own VPS; this page does not replace the admin’s deploy |
In every setup the book opens in the browser. The default engine is In this browser: posting runs on your device. On the server appears only when a Tilari server is running (not with a Supabase locker).
Two processing modes
Use Tilari as a normal web app (each action is a request to the server) or work locally in the tab and save when you choose. The UI always runs in the browser. When a Tilari Node backend is connected, opening a book asks:
- In this browser (default) — client-side: SQLite runs in this tab. The server can still store the file in a locker, but it does not interpret vouchers.
- On the server — server-side: the same math runs in the Node process. Every click goes through the API.
Without a Node backend (one HTML file, this site, a Supabase locker) only In this browser exists. The locker (where the file sits) is not the same as the engine: you can keep a book on the server locker and still process it in the tab.
| In this browser (client) | On the server | |
|---|---|---|
| Advantages | The book is interpreted only in this tab. Several tabs or people can open books (locker save uses ETag conflicts). Once the file is in the tab, work can continue if the network drops. A Node restart does not wipe the working copy. | A heavy book on a weak phone: SQLite moves to the host. Same posting rules as the browser. Reopening can be faster while the process still has a session. |
| Disadvantages | A large book on a weak device can be slow. The whole book is loaded into the browser. Unsaved edits live in this tab until you save. | One open book per server process. A second open replaces the first — not multi-user. Every action needs the network. A restart clears the session. The server sees the ledger. Not available with a Supabase locker. |
For daily work and a shared locker, keep In this browser. On the server is for one operator on a private host when the book is too heavy for the device.
One HTML file
The same program as a single file (about 1.7 MB). On this site it is
tilari.html —
open it here. You can also save the file and open it offline.
On this URL (https)
The browser treats the page as a secure context: the working copy survives a refresh, Chrome/Edge can save in place, and optional BYO storage works if you connect your Supabase or a Tilari locker on your VPS (CORS must allow this origin). Tilari’s site does not host books: the file is never sent to any server you did not provide. There is no same-origin Node process, so no On the server processing.
A file on disk (USB, email)
- Save
tilari.htmland double-click it. - Choose Valitse uusi tiedosto… and pick a
.kitsas. - Save with Tallenna nimellä… — the browser downloads a new file.
On file:// the working copy usually dies on refresh, in-place overwrite
fails, and you should not trust encryption (Supabase). Fine for a demo. For real books
use the local install or the
https copy.
Server and client on this computer
This is the usual setup for one machine: the Tilari program (AppImage,
Tilari.exe, Tilari.app, or a local server your admin starts)
opens a browser at http://127.0.0.1:8000.
What is the advantage over a single HTML file?
| One HTML file | Server on this computer | |
|---|---|---|
| Edits survive a page refresh | No | Yes (browser working copy) |
| Save into the file you opened | Rarely | Yes, on Chrome/Edge desktop |
| Books in a Tilari locker on this machine | No | Yes (Avaa omasta säilytyksestä…) |
| Heavy book: process on the server | No | Yes, if you pick On the server |
| Same book from a phone on the same Wi-Fi | No | Yes, if the server listens on the LAN |
| Install | One file | An application pack |
How to use it
- Start Tilari. A browser tab opens on its own.
- Open a book from disk (Valitse uusi tiedosto…) or from the locker (Avaa omasta säilytyksestä…).
-
On Chrome or Edge desktop, Tallenna writes the same
.kitsasif the file is linked. In other browsers use Tallenna nimellä….
Quit desktop Kitsas before opening the same file in Tilari. Kitsas keeps an exclusive lock.
Server and client on a VPN
The same program as on your own computer, running on a machine that is on a VPN
(Tailscale, WireGuard, a company VPN). Other VPN devices open that address in a browser,
for example http://100.x.x.x:8000. You do not need a public website.
Tilari has no user accounts. Anyone who can reach the address can see the locker books and save to them. VPN membership is the access control. Do not share the address on open Wi-Fi.
For the person who installs it
- Install Tilari on a machine that stays on (NAS, home server, office PC).
- Join that machine to the same VPN as the people who will use it.
-
Start the server so it listens on the VPN address (LAN bind, e.g.
--lan, printsTILARI_LAN_URL=). - Open that URL on the other devices. Books live in that machine’s locker; save with Tallenna säilytykseen.
If two people edit the same book at once, the second save can be rejected (“the file changed”). Then use Tallenna säilytykseen nimellä… instead of overwriting the other person’s work.
On the server processing keeps one book open for one operator. In an office keep the default In this browser and share through the locker.
Your own VPS
A public hostname and a login gate. The server keeps books in a locker. Use Tilari as a normal web app, or process the book in the browser and save to the locker. Setup is for the admin; this page does not replace that.
Which browsers save the file in place
Header Tallenna tries to write the same path you opened. That works only
in some browsers, and only when the page is https:// or
localhost (not a lone HTML file).
| Browser | Overwrite the opened file | In practice |
|---|---|---|
| Chrome, Edge, Opera, Brave (Windows, macOS, Linux) | Yes | Valitse uusi tiedosto… links the file. Tallenna updates it. A Dropbox folder works if it is a real directory on disk. |
| Firefox | No | The working copy in the browser still survives. On disk, use Tallenna nimellä…. |
| Safari (Mac, iPhone, iPad) | No | Same as Firefox: download a copy. |
| Chrome on Android | Not reliably | Open from Dropbox or Drive with the Android document picker. Save is a copy (Downloads or “Save to”). |
| iPhone / iPad, other browsers | No | Share or Tallenna nimellä…. A locker (VPN or Supabase) is often easier. |
If the browser cannot write in place, the menu tells you to use Tallenna nimellä…. You can also Yhdistä alkuperäistiedostoon… (link to the original file) when the API exists but the book was opened without write permission.
Supabase as a locker
You can keep books in your own Supabase project. You do not need a Tilari server: open Tilari from a static host (or a local install) and connect the locker in the browser. Posting stays In this browser. On the server is not offered.
One-time setup (Supabase dashboard)
- Create a project at supabase.com and open Project Settings → API.
-
Copy the Project URL and the anon public key. Never
paste the
service_rolekey into Tilari — that key is for a backend only. -
In Storage, create a private bucket named
tilari(not a public CDN). -
Storage policies (RLS) on that bucket for the prefix
tilari/(anon role, select / insert / update / delete). -
Storage CORS: the Tilari https origin, methods GET, POST, PUT, DELETE, headers
authorization,apikey,content-type,x-upsert. Afile://HTML file will not work reliably.
Example RLS policies:
create policy "tilari_locker_select"
on storage.objects for select to anon
using (bucket_id = 'tilari' and name like 'tilari/%');
create policy "tilari_locker_insert"
on storage.objects for insert to anon
with check (bucket_id = 'tilari' and name like 'tilari/%');
create policy "tilari_locker_update"
on storage.objects for update to anon
using (bucket_id = 'tilari' and name like 'tilari/%');
create policy "tilari_locker_delete"
on storage.objects for delete to anon
using (bucket_id = 'tilari' and name like 'tilari/%');
Connect in Tilari
- Avaa omasta säilytyksestä… → Oma Supabase (BYO).
-
Paste Project URL, anon key, bucket (default
tilari), and the salaava avain (encryption secret, at least 8 characters). You can Luo a secret — copy it somewhere else immediately. - Yhdistä. Books appear in the list; save to the locker as usual.
Files are encrypted in the browser before upload. The URL and anon key open the bucket; the secret opens the files. A lost secret means lost books. Settings stay in this tab only; closing the tab drops the connection.
Dropbox folder and Android (Drive / Dropbox)
Desktop: mounted Dropbox or Google Drive
Tilari has no Dropbox or Drive login. Use the folder the desktop client syncs to disk.
- Install Dropbox or Google Drive so the book is a real folder on the machine.
- Open the book with Chrome or Edge from that folder so Tallenna writes the same file.
- The vendor client uploads the new bytes to other devices.
Firefox and Safari download a copy: put it back in the synced folder yourself, or you will fork files. Do not leave desktop Kitsas open on the same path. If two people save at once, the cloud keeps the last write — Tilari’s locker conflict warning does not apply.
Android: open and save from Dropbox or Drive
The phone does not get the same “write this path” link as Chrome on the desktop.
- Open: Valitse uusi tiedosto… → Android document picker → Dropbox, Google Drive, or Files. Tilari reads the bytes.
- Save: Tallenna nimellä… puts a copy in Downloads or in the browser’s location sheet. Upload it to Drive or Dropbox from there, or use the system “Save to” target if the browser shows one.
If the same book moves between a phone and a PC all the time, a VPN locker or Supabase is less error-prone than the Downloads folder.