Terms

The short, honest version, because terms nobody reads protect nobody. Point a board at unsleep.app, or just use this site, and you’re accepting them. If you’d rather not, don’t — it’s open source, go run your own copy.

Last updated 19 August 2026.

Who runs this

One person, in their spare time. There’s no company behind unsleep, no support desk and nobody on call, so treat it as something useful on a wall rather than something your day depends on.

The software

unsleep is open source under the MIT licence, so you’re welcome to run your own copy, and you probably should if it matters to you. It comes with no warranty. You run it, you own the risk.

The service

unsleep.io and unsleep.app are free, and they are as is and as available. No uptime promise, no support promise, no service level, nothing. They can change, break, forget your layout, or be switched off for good, at any time, without warning. Don’t put anything on a board you’d be upset to lose.

If it gets something wrong

The risk is yours. A train missed, a price read wrong, a coat left at home, a board sitting there blank — that’s the deal you take on by pointing a board at it. The formal version: to the fullest extent the law allows, all warranties are disclaimed, express or implied, including merchantability, fitness for a particular purpose and non-infringement, and neither the maintainer nor any contributor is liable for any loss or damage arising out of unsleep or its use, whether direct, indirect, incidental or consequential. Where a jurisdiction doesn’t allow that, it applies as far as it does.

Where it runs

All of it sits on Cloudflare: Pages for the pages, Workers for the API, their cache and Analytics Engine behind. So Cloudflare’s limits are unsleep’s limits. When they have a bad day, cards go stale or empty and there’s no second provider to fall over to. Requests cross their network too, which terminates TLS, so their terms and privacy policy cover that leg alongside these.

The data on the cards

Almost none of it is unsleep’s. Departures, weather, prices, scores, headlines, artwork: it comes from the free and public APIs and feeds that transit agencies, weather services, exchanges, publishers and museums put out, a couple of them behind a free key. unsleep fetches it, caches it and draws it. It doesn’t check it, doesn’t own it, and can’t promise it’s right. Feeds change shape and disappear without telling anyone. Treat departures as a hint, never as gospel. The agency’s own signage is the record, and unsleep shouldn’t be the last thing you look at before running for a train.

Rights in that data

unsleep displays these feeds; it doesn’t republish them, sell them or pass them on, and what lands on a board is the same public information you could pull up on the agency’s own site. Using it doesn’t give you any rights to that data, though. Most of them are free for any use; the weather, air quality and surf data, and the location search, come from Open-Meteo’s free non-commercial API.

What it keeps

No accounts, no logins, no passwords. Your layout lives in that board’s own browser storage, or inside the signage URL you pasted into the device. A setup code holds widget choices and nothing else, and it dies after an hour. The only personal thing anywhere in it is the first name you can type in for the greeting, and that never leaves the board.

What it counts

Once an hour a board sends a small heartbeat: a random id the board makes up for itself, which widgets are on it, its display mode, its build version, its time zone, which cards are currently broken, and a few counters about how it’s running. It describes a screen, not a person — no name, no account, no location beyond the time zone, and nothing off the cards themselves. It’s how anyone knows which widgets are worth keeping, and how a widget that broke on every board at once gets noticed. The data points go to Cloudflare Analytics Engine. It’s on by default and you can switch it off on the board at Settings → Diagnostics → Anonymous usage ping. The id is random, generated on the board and stored only there; clearing web storage gives it a new one.

The macro

Worth knowing before you paste it: the macro reconfigures the device. It turns on the web engine and interactive signage, sets the signage URL and the standby delay, enables macro autostart, changes wake-at-meeting-start, and puts a button on the Control Panel. It also restarts the web engine when the device’s time zone changes. It’s short and commented and it’s on GitHub, so read it first — and if your Cisco devices are managed centrally, this is the part to run past whoever manages them.

Security

There are no accounts, no logins and no passwords anywhere in unsleep, so there’s nothing to breach and nothing to phish. Boards only read: every feed is public, nothing is written back to them, and the only things a board sends out are the requests it needs to fill a card — which station, which ticker — plus the heartbeat above. Every page ships a strict Content-Security-Policy, every string that arrives from a feed is escaped before it’s drawn, and API keys stay server-side. If you find a hole, report it privately through GitHub’s security advisories rather than a public issue.

Fair use

Don’t use unsleep or its API to attack, abuse or harm anyone, or to break the law. And don’t hammer the API: it’s a free proxy sitting in front of other people’s rate limits, so abusing it throttles every board, not just yours.

No affiliation

unsleep isn’t affiliated with, endorsed by, or sponsored by Cisco, or by any of the transit agencies, exchanges, publishers or museums whose data it shows. Their names and marks are theirs, and they appear here only to say whose data you’re looking at.

Changes

These will change as unsleep does. The date up top says when they last did, and carrying on using it after a change means you’re fine with the new version. There’s no mailing list to warn you, because there’s no mailing list.

Contact

Open an issue at github.com/scotty83/unsleep. If you’re on Webex, there’s a feedback space you’re welcome to join.