Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .github/workflows/project-status.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: 📋 Project status

on:
workflow_dispatch: # Manual
push:
branches: [main]
paths: ['status.json']
schedule:
# Saturday 07:00 AEST (08:00 AEDT over summer) — lands before the weekend
# so there's time to act on it.
- cron: '0 21 * * 5'

jobs:
status:
uses: privacykey/gh-workflows/.github/workflows/project-status.yml@v1
with:
target: profile/README.md
collapsed: false
secrets:
# Read-only, scoped to privacykey alone. Without it the drift check is
# skipped and says so, rather than reporting private repos as healthy.
status-token: ${{ secrets.STATUS_TOKEN }}
90 changes: 90 additions & 0 deletions STATUS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Project status

What I promise for each privacykey project, and what I don't. Every repo's
status badge links here.

**Tiers last reviewed: 2026-08-08.** Set by hand — it's when I last actually
looked, not when a script last ran.

| Tier | What it means |
| --- | --- |
| 🟢 **Active** | I'm in this most weeks. Features are landing, so expect breaking changes between releases — read the changelog before you upgrade. I read issues and generally act on them quickly. |
| 🚧 **Building** | Being built. Nothing is released, nothing is supported, and it can change shape or disappear without notice. Don't build on it — watch the repo if you want to know when it ships. |
| 🛡️ **Maintained** | I'm not adding features here. It still gets security patches, dependency bumps and fixes for anything that breaks. Safe to depend on for exactly what it does today. |
| 📦 **Parked** | Finished or paused. It does what the README says and I left it working, but nothing is watching it, so it could rot quietly. I'll answer a question. I'm not promising a fix or a release. |
| ⚠️ **Unmaintained** | I'm not watching this one. Something it advertises may already be broken, and bugs won't be fixed on a schedule. Read it, fork it, vendor it — this says nothing about whether the code is any good. |
| 📁 **Archived** | Archived on GitHub and read-only. Kept so links don't rot. |

Private and pre-announcement projects aren't listed here.

---

## privacy tools

### mantis

🟢 **Active** — shipping now; installable today and still gaining capability

I'm in this most weeks. Features are landing, so expect breaking changes between releases — read the changelog before you upgrade. I read issues and generally act on them quickly.

<https://github.com/privacykey/mantis>

### privacycommand

🟢 **Active** — shipping now; installable today and still gaining capability

I'm in this most weeks. Features are landing, so expect breaking changes between releases — read the changelog before you upgrade. I read issues and generally act on them quickly.

<https://github.com/privacykey/privacycommand>

### privacytracker

🟢 **Active** — shipping now; installable today and still gaining capability

I'm in this most weeks. Features are landing, so expect breaking changes between releases — read the changelog before you upgrade. I read issues and generally act on them quickly.

<https://github.com/privacykey/privacytracker>

## shared infrastructure

### gh-workflows

🛡️ **Maintained** — feature-complete; kept working and patched, not grown

I'm not adding features here. It still gets security patches, dependency bumps and fixes for anything that breaks. Safe to depend on for exactly what it does today.

<https://github.com/privacykey/gh-workflows>

### homebrew-tap

🛡️ **Maintained** — feature-complete; kept working and patched, not grown

I'm not adding features here. It still gets security patches, dependency bumps and fixes for anything that breaks. Safe to depend on for exactly what it does today.

<https://github.com/privacykey/homebrew-tap>

### renovate-config

🛡️ **Maintained** — feature-complete; kept working and patched, not grown

I'm not adding features here. It still gets security patches, dependency bumps and fixes for anything that breaks. Safe to depend on for exactly what it does today.

<https://github.com/privacykey/renovate-config>

## sites & docs

### docs-mantis

🛡️ **Maintained** — feature-complete; kept working and patched, not grown

I'm not adding features here. It still gets security patches, dependency bumps and fixes for anything that breaks. Safe to depend on for exactly what it does today.

<https://github.com/privacykey/docs-mantis>

### website-privacykey

📦 **Parked** — done or paused; it works, nothing is watching it

Finished or paused. It does what the README says and I left it working, but nothing is watching it, so it could rot quietly. I'll answer a question. I'm not promising a fix or a release.

<https://github.com/privacykey/website-privacykey>
8 changes: 8 additions & 0 deletions badges/docs-mantis.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"schemaVersion": 1,
"label": "status",
"message": "Maintained",
"color": "1f6feb",
"style": "flat",
"cacheSeconds": 3600
}
8 changes: 8 additions & 0 deletions badges/gh-workflows.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"schemaVersion": 1,
"label": "status",
"message": "Maintained",
"color": "1f6feb",
"style": "flat",
"cacheSeconds": 3600
}
8 changes: 8 additions & 0 deletions badges/homebrew-tap.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"schemaVersion": 1,
"label": "status",
"message": "Maintained",
"color": "1f6feb",
"style": "flat",
"cacheSeconds": 3600
}
8 changes: 8 additions & 0 deletions badges/mantis.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"schemaVersion": 1,
"label": "status",
"message": "Active",
"color": "2ea043",
"style": "flat",
"cacheSeconds": 3600
}
8 changes: 8 additions & 0 deletions badges/privacycommand.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"schemaVersion": 1,
"label": "status",
"message": "Active",
"color": "2ea043",
"style": "flat",
"cacheSeconds": 3600
}
8 changes: 8 additions & 0 deletions badges/privacytracker.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"schemaVersion": 1,
"label": "status",
"message": "Active",
"color": "2ea043",
"style": "flat",
"cacheSeconds": 3600
}
8 changes: 8 additions & 0 deletions badges/renovate-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"schemaVersion": 1,
"label": "status",
"message": "Maintained",
"color": "1f6feb",
"style": "flat",
"cacheSeconds": 3600
}
8 changes: 8 additions & 0 deletions badges/website-privacykey.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"schemaVersion": 1,
"label": "status",
"message": "Parked",
"color": "8b949e",
"style": "flat",
"cacheSeconds": 3600
}
39 changes: 35 additions & 4 deletions profile/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,44 @@

privacykey builds open-source tools that help people understand, protect, and take control of their personal data — small, specific apps built around a shared identity.

<!-- STATUS:START -->
## Projects

- [**privacytracker**](https://github.com/privacykey/privacytracker) — track how App Store privacy labels and policies change over time, with historical imports and scheduled syncs.
- [**Mantis**](https://github.com/privacykey/mantis) — open-source serverless tripwires for detecting unwanted access.
- [**privacycommand**](https://github.com/privacykey/privacycommand) — static and basic dynamic forensics on macOS apps: see bundled telemetry, requested permissions, and preview updates before they land.
What I promise for every privacykey project, and what I don't. Reviewed 2026-08-08.

More tools are in development — watch this organization to follow along.
Each badge links to the full promise. Private and pre-announcement projects aren't listed.

| | Tier | What it means |
| - | - | - |
| 🟢 | **Active** | shipping now; installable today and still gaining capability |
| 🛡️ | **Maintained** | feature-complete; kept working and patched, not grown |
| 📦 | **Parked** | done or paused; it works, nothing is watching it |

**privacy tools**

| Project | Status | |
| - | - | - |
| [mantis](https://github.com/privacykey/mantis) | 🟢 Active | |
| [privacycommand](https://github.com/privacykey/privacycommand) | 🟢 Active | |
| [privacytracker](https://github.com/privacykey/privacytracker) | 🟢 Active | |

**shared infrastructure**

| Project | Status | |
| - | - | - |
| [gh-workflows](https://github.com/privacykey/gh-workflows) | 🛡️ Maintained | |
| [homebrew-tap](https://github.com/privacykey/homebrew-tap) | 🛡️ Maintained | |
| [renovate-config](https://github.com/privacykey/renovate-config) | 🛡️ Maintained | |

**sites & docs**

| Project | Status | |
| - | - | - |
| [docs-mantis](https://github.com/privacykey/docs-mantis) | 🛡️ Maintained | |
| [website-privacykey](https://github.com/privacykey/website-privacykey) | 📦 Parked | |

See [STATUS.md](STATUS.md) for what each tier promises.
<!-- STATUS:END -->

## Links

Expand Down
153 changes: 153 additions & 0 deletions status.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
{
"owner": "privacykey",
"reviewed": "2026-08-08",
"repos": {
"privacytracker": {
"tier": "Active",
"group": "privacy",
"public": true,
"listed": true,
"distribution": "open-source"
},
"mantis": {
"tier": "Active",
"group": "privacy",
"public": true,
"listed": true,
"distribution": "open-source"
},
"privacycommand": {
"tier": "Active",
"group": "privacy",
"public": true,
"listed": true,
"distribution": "open-source"
},
"pt-mcp": {
"tier": "Building",
"group": "privacy",
"public": false,
"listed": false,
"distribution": "private",
"note": "Went private on 2026-08-07 after the initial audit. Flip back to public/listed when it ships."
},
"privacysentinel": {
"tier": "Building",
"group": "privacy",
"public": false,
"listed": false,
"distribution": "private"
},
"handseal": {
"tier": "Building",
"group": "privacy",
"public": false,
"listed": false,
"distribution": "private"
},
"on-country": {
"tier": "Building",
"group": "apps",
"public": false,
"listed": false,
"distribution": "private",
"note": "Zero-byte README — nowhere to paste a disclosure yet."
},
"sentinelcatalogue": {
"tier": "Parked",
"group": "privacy",
"public": false,
"listed": false,
"distribution": "private"
},
"iOSauditor": {
"tier": "Archived",
"group": "archive",
"public": false,
"listed": false,
"distribution": "private"
},
"gh-workflows": {
"tier": "Maintained",
"group": "infra",
"public": true,
"listed": true,
"distribution": "open-source"
},
"renovate-config": {
"tier": "Maintained",
"group": "infra",
"public": true,
"listed": true,
"distribution": "open-source"
},
"homebrew-tap": {
"tier": "Maintained",
"group": "infra",
"public": true,
"listed": true,
"distribution": "open-source"
},
".github": {
"tier": "Maintained",
"group": "infra",
"public": true,
"listed": false,
"distribution": "open-source",
"note": "Supplies SECURITY.md, CONTRIBUTING.md and CODE_OF_CONDUCT.md to every privacykey repo, plus the org profile page."
},
"docs-privacytracker": {
"tier": "Building",
"group": "sites",
"public": false,
"listed": false,
"distribution": "private",
"note": "Mintlify source. Site not live — no DNS, not connected."
},
"docs-privacysentinel": {
"tier": "Building",
"group": "sites",
"public": false,
"listed": false,
"distribution": "private",
"note": "Mintlify source. Both declared hosts are NXDOMAIN."
},
"docs-mantis": {
"tier": "Maintained",
"group": "sites",
"public": true,
"listed": true,
"distribution": "open-source"
},
"website-privacykey": {
"tier": "Parked",
"group": "sites",
"public": true,
"listed": true,
"distribution": "open-source"
},
"website-mantis": {
"tier": "Parked",
"group": "sites",
"public": false,
"listed": false,
"distribution": "private"
},
"website-privacytracker": {
"tier": "Unmaintained",
"group": "sites",
"public": false,
"listed": false,
"distribution": "private",
"note": "Empty git repo. Push something or delete it."
},
"website-privacycommand": {
"tier": "Unmaintained",
"group": "sites",
"public": false,
"listed": false,
"distribution": "private",
"note": "Empty git repo. Push something or delete it."
}
}
}