TINO: A collaborative, self-hosted editing platform around Typst

Hello there

We’re a small IT company from Switzerland and ve been using Typst internally. We’ve been looking for a collaboration platform based on Typst for quite some time, but couldn’t find something that fit our needs – so we decided to start developing our own project.

Over the last couple of weeks, we’ve been busy and created Typarr, a web-based editor for teams that want to write, review, and publish Typst documents together — entirely self-hosted.

Because we love OSS, we’ve decided to publish it today.

What it does:

  • Live preview — edit Typst in the browser with a real-time rendered preview side by side
  • Collaboration — multiple users can work on the same document simultaneously
  • Git-backed — every bucket (project) is a Git repo under the hood, with commit history, diffs, and file restore built into the UI
  • Typst Universe templates — search and initialize projects from Universe templates directly, or create your own local templates
  • Local packages — ship reusable @local/ packages across all your documents
  • Custom fonts — upload and manage fonts through the UI, available to all compilations via --font-path
  • Access control — SSO via OIDC (Keycloak, Authentik, etc.) with group-based roles (viewer, editor, committer) per bucket
  • Easy deployment — single Docker image, works read-only with tmpfs

Who it’s for:

Teams and organizations that want the power of Typst but need a shared, self-hosted platform — think internal documentation, contracts, reports, or any workflow where multiple people touch the same documents.

Feel free to check it out:

Authentication is currently baked in via OpenID connect (as we’ve a Keycloak), but can be disabled for testing (or if anyone wants to provide auth with a reverse proxy).

It’s not perfect yet, but it starts making fun :slight_smile:

I’d be happy if you can give me some feedback.

Cheers
Dominique

4 Likes

Hi, thanks for sharing! I haven’t looked at the software itself yet, so I can’t comment on that.

The documentation states:

Typst’s own editor comes close, but it’s a hosted service — our documents had to stay on our own infrastructure.

This isn’t completely true, a payed on-premises option is available.

And I have to comment on the name of the project, Typarr instantly made me think of *arr software.

Hi, thanks for sharing! I’m curious why you built your own solution rather than using the official Typst On-Premises Webappp (which also funds Typst’s development). It sounds like the features you focus on are very similar.

1 Like

You’re right, this was misleading. There’s actually an on-prem option, sorry for that!

You’re right, didn’t struck my mind.
Thanks for the feedback, I just rebranded it to TINO, as you can read here.

Good question!

I tried to explain it in the rationale, but I can try to explain it here more detailed:

Most of our processes are automated – deployments, documentation, and even CI/CD (corporate identity & design, not the pipeline thingy). We generate all the required colour asset fully automatically, and reference / distribute them where required. Basically 99% is treated as code – which makes things awesome, reproducible, transparent, and mostly maintainable. Even accounting is automated to 98-99%.

However, one last thing wasn’t: The whole document generation & authoring stuff. We’re a “mac company”, and thus we used Apple Pages – which I think is more usable than the crap O365. However, it’s still not very good to automate.

So we started researching different solutions and we came across Typst. We immediately loved it (as probably most users). The compiler is amazing, the web editor just works, and the community provides an extraordinary value. Thus we’ve decided we want to use Typst.

However, the official web editor didn’t meet our requirements in a few points:

  • We were looking for a full open-source solution.
  • We love to understand what’s going on behind the scenes.
  • Most of our services authenticate against an SSO via OIDC (Keycloak). Typst supports LDAP – which is amazing – but this is not what we were looking for.
  • Most of our services are protected by mTLS and we didn’t knew if we can use it for Typst.

Because we’re going to integrate Typst into our workflows and automation processes, these requirements become crucial:

  • We’re going to automate letters, contracts, quotes, and much more.
  • We need a clean API to automate these processes.
  • We also need a proper history & audit trail to see «who» did «what» & «when».

Now in our product & services web app, I can select the services I want for a customer, and it automatically generates a template contract for me.

Apart from that, we also have a vision where users can interact with different systems via AI. We already have a working prototype, but basically I want to be able to say:

Hey, create a new maintenance contract for customer X and product Y, starting at 01.06.2026. Use the customers standard discount.

Because we’ve connected the ERP and our billable services / products (different system, also handled as code) in a PoC, the AI is already capable of getting the required information. However, the missing part was the generation of the document itself. Product metadata, sales orders are fine, but the shiny document was missing. I got a generic Markdown, txt or a f* Word file.

This is where Typst comes into play. Since I’ve all the metadata, and thanks to Typst genius encapsulation model of packages (split the layout from the content), we can easily create new documents, with full CI/CD conformity.

Designing this «layer on top of Typst» cleverly means that Typst just becomes another «AI tool» (tool like an AI-specific tool like in an MCP or similar). Users can now add many other tools (web crawlers, ERPs, product databases, monitoring systems) and can suddenly create these amazing documents and reports. For example:

  • A customer asks for an uptime report, and the AI has already access to the metrics? Easy, just fetch the metrics, then create a new shiny report with Typst.
  • A customer asks for a change in a contract? Just tell the AI what to change, and it will do it, and commit it as a new version – diff included.
  • A customer of a lawyer asks for a prenup? No problem, just fetch all the customer data from the systems, add the missing parts (e.g. assets), and create the template.

Typst was really the missing piece in all of that, because Pages or O365 were not made for automation (crap proprietary format), Markdown & ReST don’t support layouting, and the learning curve of LaTeX is quite high ;)

These are some reasons why we chose Typst, and why we were looking for that «layer on top», which we can use for further automation.

3 Likes

Btw we never intended to cannibalise the business model of Typst. I update the docs and made it more clear:

TINO is not affiliated with Typst.

Typst develops both the open-source compiler and its own commercial web editor at typst.app. TINO would not exist without their open-source compiler — we are grateful for their work and the ecosystem they have created :clap:t2:.

Their editor is more polished, more feature-rich, and backed by commercial support — in many ways it is the better product. If you don’t need self-hosting or deep integration with your own infrastructure, we genuinely recommend it — and using it directly supports the people who make the language we all benefit from. TINO exists for teams that require full control over where their documents live.

This looks like a really cool, and well done, option for working with Typst. It was also very interesting to read the motivation your company had for creating it in the first place. It seems like spending the time to make this is well worth it for your workflow.
And thank you for taking the time to release it to the world. I’ve never done it, but I imagine it’s a lot of work to take an internal tool and prepare it for the general public.