Using apps

Who makes these apps?

Anyone can publish an app here. Browse what’s listed and add what you like to your library.

Do I need an account?

Not to start. Sign in to sync across devices and play with friends. The same account works in every app.

Does it work on my phone and my laptop?

Yes. Your data syncs across devices.

Add Tinylib to your home screen to use it like an app.

What if I lose signal?

Apps work offline and sync when you reconnect.

Tunnels are where I catch up on sleep.

Can the person who made an app see my data?

No. Apps get your display name and nothing else, and can’t send your data anywhere.

Can I keep something secret, even from Tinylib?

Use a private app. It encrypts your data with your passkey before it leaves your device, and we can’t read it.

Your recovery code restores access if you lose every device.

Can an app use my camera?

No. Apps run in a sandbox with no camera, microphone, location or network access.

Can my roommates and I share one list?

Yes. Changes show up for everyone live, for up to 6 people.

You get notified about invites and when it’s your turn.

Will my friends see my scores?

Only if you allow it. Tinylib asks before an app shares anything with friends or the public, and you can change it on the app’s page.

What if an app sends too many notifications?

Turn them off on the app’s page. You can report the app there too.

Is it free?

Yes, using apps is free.

Can I make my own?

Yes. Write a web page, publish it with one command and share the link.

Making apps

What can I make here?

Small web apps and games. Listed apps show up for everyone browsing Tinylib.

What do I write?

A web page, with any framework or none. Multiplayer games add a server.js with the rules.

What's the API?

host is the whole API. host.data saves per-user data, syncs it across devices and works offline.

host.friends and host.public share data with friends or everyone. host.createRoom starts a live multiplayer room.

// index.html: a win counts on every device
const wins = (await host.data.get('wins')) ?? 0
await host.data.set('wins', wins + 1)

Do I need a server?

No. Tinylib handles accounts, friends, storage, sync, multiplayer and notifications. There’s no database, auth or API key to manage.

How do I keep each player's hand secret?

Put the rules in server.js. Its view decides what each player receives, and the rest of the state stays on the server.

// server.js
view: (state, { player }) => ({
  hand: state.hands[player.id],
  top: state.pile.at(-1),
}),

How do I test it?

Run the dev server with npx tinylib-sdk dev. Each tab can sign in as a different test user, and it rebuilds on every change.

$ npx tinylib-sdk dev

  http://localhost:4141
  Each change builds.

How do I get a link?

Run npx tinylib-sdk publish. It deploys the app and prints the link.

$ npx tinylib-sdk publish
Publishing to https://tinylib.app as @maya ... done
Published Eights as version 1.
https://tinylib.app/app/eights
It is reachable by its link only. List it in the console when it is ready.

Will strangers find my app?

Once you list it in the console. Anyone browsing Tinylib can then add it and upvote it.

What does it cost?

Publishing is free for up to 3 apps, and unlimited apps cost $5 a month or $50 a year.

Can an AI assistant write it?

Yes. Give it llms.txt, the full docs in one file, and the starter app from init.

What won't it do?

Tinylib is built for small apps. Apps get no network access, payments, public matchmaking or fast real-time play.

Use an app or publish one