One account for a whole library of mini-apps.
One sign-in works for every app on every device you use.
What Tinylib gives you
One account
One sign-in works for every app in the library.
Your data on every device
What you save in an app is on your phone, your laptop, and any other device you sign in on.
Works offline
An app you have opened works with no connection, and it catches up when you are back.
Security
All data flows through Tinylib. Apps have no internet access of their own.
Privacy
App developers never get your data. Apps only see the display name you choose.
Encrypted apps
Private apps secure data with passkey unlocks and encryption at rest.
Who are you?
App developers never get your data.
What you do in an app is kept in your account on Tinylib. The app has no way to send it anywhere else, and it only sees your display name and an id that no other app shares.
- Name
- Robin
- robin@gmail.com
- Handle
- @robin
- Saved in the app
- 212 trips
- Name
- Robin
- Id
- u_7f3a9c21
- Not shared
- Saved in the app
- 212 trips
Private apps are encrypted and unlocked with your passkey.
A private app encrypts everything on your device before sending it, and Tinylib stores data it cannot read. If you lose every device, your recovery code unlocks it.
Journal is locked
Use a recovery code insteadSecurity through Tinylib.
All data flows through Tinylib. An app has no internet access of its own, and it cannot use your camera, microphone, or location. Apps cannot see each other.
It works without a connection.
An app you have opened once is on your phone. What you add offline is sent when you reconnect, and your other devices have it from then on.
Games with friends.
Games can show your friends' best scores next to yours. A game asks before it shares anything, and it only sees what it asked for.
Friends who have this game can see: your best scores
- 1Maya5,020
- 2You4,210
- 3Sam3,100
- 4Jo2,480
Your home for mini-apps.
A small API in place of a backend.
host gives your app the person using it, their data on every device, notifications, and their friends. "private": true encrypts everything the app saves with the person's passkey. There is no server, auth, or database to run.
const { user } = await host.ready()
await host.data.set('trips', trips)
const saved = await host.data.get('trips')
// Another device of theirs saved something.
host.data.onChange((keys) => render())Saved for this person, on every device they use.
What you do not build.
An app is one HTML document and a host.json.
- Sign-in
- Everybody using your app has an account.
host.ready()gives you their id and display name. - A backend for data
host.datakeeps each person's data on their devices and in their account, and it works offline.- Encryption
"private": trueencrypts every value on the device, and only the person's passkey opens it.- Push notifications
host.notifications.schedule()sends them in your app's name, even with the app closed.- A friends list
host.friends.inApp()gives the friends who share with your app.- Updates
- The next open runs the newest publish. Nobody picks a version.
The name, tagline, and icon live in host.json.
Discover draws your app's card from this file, and publishing refuses any field Tinylib does not know. This editor runs the same check as the command line.
What it does, in one line.
Ready to publish.
Publishing is one command.
Run npx tinylib-sdk publish in the folder, or drop the folder on Publish in the console. Every publish is numbered, and you choose which one is current.
- host.json
- index.html
- style.css
- app.js
- icon.svg
$ npx tinylib-sdk publish Publishing to https://tinylib.app as @you ... done Published Your App as version 1.
Start with a host.json.
init writes one in the folder you are in. check runs the build and every rule with no account and no network.