periskopos
Health Warn
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Fail
- exec() — Shell command execution in desktop/daemon-log.ts
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Every app you ship, watched from one window. A desktop app for uptime, deploys, misconfigurations, errors and expiring certificates across Vercel, Render, Cloudflare, Supabase, GitHub and more. Runs on your PC; your keys never leave it.
Periskopos
Every app you ship, watched from one window.
A desktop app that tells you what's down, what's live and what's about to break, across every service your apps run on.
Website · Docs · Download · Discussions
Each app you run in production lives across a host, a database, a domain,
CI, maybe a payments account and an error tracker, each with its own
dashboard. Periskopos is a desktop app that reads them all and tells you, in
one window, what's down, whether your last push actually went live, what's
misconfigured and what's about to expire, before a user does.
You connect each account (Cloudflare, GitHub, Render, Supabase, Vercel,
Stripe…) once with a key you create, and Periskopos suggests what to watch
for each app. Nothing changes in your apps.
It runs entirely on your computer. Your keys never leave it, it only reads
unless you switch on actions for an account, and AI assistants can ask it
questions through MCP without ever seeing a key.
The name is coined from the Greek peri (around) and skopos (lookout):
the one who keeps watch all around. It was called Ground Control until
0.3.0.
Features
| Is it up, and is it live? | Uptime checks with 30 days of history, commits and CI, deploys, and whether the last push is what's serving. |
| Dependencies watched for you | TLS certificates, domain registrations, databases, email domains, payment webhooks, and the status pages of the providers your apps use, counting only the parts they actually use. |
| Configuration checks | Missing security headers, unsafe DNS, branch protection, Supabase row level security, Cloudflare SSL settings and more, each with why it matters and exactly how to fix it. |
| Errors and logs | Recent runtime errors from your host's logs and unresolved issues from Sentry, with an alert when errors spike. |
| Traffic, search and revenue | Cloudflare analytics, Google Search Console, Google Analytics, Stripe and Paddle, on each app's overview. |
| The World | Your own Silicon Valley, drawn from your real data: a campus for each app, the services they rely on behind them, and the watcher's dish on a hill. Lights only when the state is known, smoke when one's down, fog when it isn't known, real checks and deploys on the road, a key that takes you to what needs a look, and a slider to replay the last 24 hours. It grows as your apps do. |
| Notifications | On the desktop and on your phone (ntfy, Telegram or email), only when something actually changes. |
| Actions with a confirmation | Redeploy, purge cache, or your app's own buttons, every run recorded with who started it. |
| AI assistants (MCP) | Claude, Cursor, VS Code and others can ask "is my last push live?" or "why is CI failing?", and can only ask to run an action: you approve each one. |
| A small protocol | Your app can implement it to show its own numbers and offer its own buttons. Periskopos generates the code. |
| No change to your apps | Everything else works from the outside, through the providers' APIs. |
Supported services
| Kind | Services |
|---|---|
| Hosting | Cloudflare Workers & Pages, Render, Vercel, Netlify, Fly.io, Railway, DigitalOcean App Platform, AWS Amplify, Supabase Edge Functions |
| Source and CI | GitHub (including Dependabot and secret scanning alerts), GitLab |
| Databases | Supabase, Neon, MongoDB Atlas |
| Domains and DNS | Cloudflare, any domain (RDAP registration, certificates, SPF/DMARC/CAA) |
| Errors and logs | Sentry; runtime logs from Vercel, Render, Railway, Cloudflare Workers, Supabase, DigitalOcean and Fly.io |
| Analytics | Cloudflare analytics, Google Search Console, Google Analytics |
| Payments | Stripe, Paddle |
| Resend, SendGrid | |
| Other | Clerk, OpenAI spend |
Each is set up with a key you create, read-only wherever the provider allows
it. Providers lists the exact permissions for
each one. New providers are welcome: see CONTRIBUTING.md.
Install
Download the latest installer from
Releases. The
installed app keeps itself up to date.
- Windows:
Periskopos-Setup-<version>-x64.exe. The installer is
unsigned, so SmartScreen says "unknown publisher": choose More info, then
Run anyway. - macOS:
Periskopos-macOS-<version>-arm64.dmg(Apple silicon) or-x64.dmg(Intel). The app is unsigned, so the first time macOS won't
open it: choose Done, then System Settings → Privacy & Security → Open
Anyway. Unsigned, it can't update itself; it tells you when there's a new
version and opens the download. - Linux:
Periskopos-<version>-x86_64.AppImage. Make it executable
(chmod +x) and run it; it updates itself.
Getting started
- Open Periskopos and add your first app from its address. Its site,
certificate, domain and configuration are checked at once, before any
account is connected. - On Accounts, choose Connect an account and paste a key for a
service you use. The setup lists the permissions it needs. - On the app's page, Get more from this app suggests what each
connected account can add, and connects the obvious ones in one click.
Keys are saved to .env.local in your profile's Periskopos folder,
encrypted by the installed app, and never in the database, a backup or the
browser. See
Keys.
AI assistants
Switch on Settings → AI assistants → Let AI assistants use
Periskopos, then copy the command from Connect an assistant. For Claude
Code it looks like:
claude mcp add --scope user periskopos node "<install folder>/resources/app/mcp/main.ts"
Assistants get nine read-only tools (list_apps, get_app, check_app,get_failure_log, get_configuration, get_history, get_traffic,list_services, list_actions) and run_action, which always waits for
your approval in Periskopos. Each assistant can be limited to some apps,
to reading only, or to specific actions. See Connecting an assistant
and Limits and approvals.
How it keeps your accounts safe
- The server listens on
127.0.0.1only, and opens only in its own window:
each launch makes a key that exists only in memory. - Keys never leave your PC except to the provider they belong to, and no
tool or page ever returns one. - Everything is read-only by default. Actions are opted into per account and
always confirmed; dangerous ones ask you to type the app's name. - AI assistants can read and ask, never act on their own.
The security model is the threat model: what
this protects against and what it doesn't. Its full design record is
docs/AGENT-SAFETY.md.
Running from source
Needs Node.js 24 or newer. Nothing else is installed
system-wide.
git clone https://github.com/periskopos/periskopos.git
cd periskopos
npm install
npm run dev
npm run dev opens the desktop app from your checkout with its own data
folder, beside any installed copy. npm run check type-checks, runs the
tests and builds the UI. CONTRIBUTING.md has the rest.
Documentation
The docs for using Periskopos are at periskopos.com/docs:
| Getting started | Install, add an app, connect an account |
| Watching your apps | Checks, configuration, runtime errors, status pages, notifications |
| The World | Your apps as a valley, and how to read it |
| Providers | Each account's key and what it watches |
| AI assistants | Connecting an assistant and setting its limits |
| Security model | What assistants can and can't do, and why |
| The protocol | Letting an app report its own numbers and actions |
| The desktop app | The tray, updates, backups, where things live |
For working on Periskopos itself, this repository keeps:
| Agent safety | The security design record, cited throughout the code |
| Design | The design system: its rules, tokens and components |
| Releasing | For maintainers |
Star-Map, Moon-Base and the other apps in the examples, tests and screenshots are made up.
Free, and what will cost money
Periskopos is free and open source (Apache-2.0), all of it: everything that
runs on your computer, for as many apps as you run, with no account. Nothing
in the app will move behind a payment.
Later, Watchtower will be an optional paid service for what needs a
server running all the time: checking your sites while your computer is off,
phone alerts whenever something breaks, and cloud AI agents reaching
Periskopos with approvals on your phone. It will never hold your provider
keys.
Contributing
Contributions are welcome, new hosts and providers especially. Read
CONTRIBUTING.md first, and the
code of conduct. Found a security problem? Please
report it privately, as SECURITY.md explains.
Licence
Apache License 2.0. Free to use, change, self-host and build on,
commercially too, as long as the copyright and licence notices (and
NOTICE) are kept. The licence doesn't cover the name or logo.
Service logos are their owners' trademarks; see
web/src/logos/README.md.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found