Skip to main content

SeatPrune: Zero-Config License Reclamation (Worker & MCP Server)

Landing Page Hook: "SeatPrune: The zero-config Cloudflare Worker that audits GitHub, Copilot, and Slack to recover €500+/month in dormant developer licenses."

SeatPrune implements a standardized context-sharing protocol between an Identity Provider (like Okta) and SaaS application utilization logs to audit, reclaim, and downgrade unused or dormant developer seats in real time.


📐 Architecture Flow

sequenceDiagram
    autonumber
    participant CLI as @seatprune/cli (CLI Client)
    participant Worker as seatprune-worker / ghostseat-mcp (Worker)
    participant DB as JSON Mock Database (Okta + SaaS Logs)
    participant Dashboard as SeatPrune Visual Dashboard

    CLI->>Worker: Run npx seatprune audit
    Worker->>DB: Query get_okta_users()
    DB-->>Worker: Return developer profiles (Active / Suspended)
    
    loop For each developer app (github, copilot, slack)
        Worker->>DB: Query get_app_utilization(app_name)
        DB-->>Worker: Return usage metadata
    end

    Note over Worker: Cross-references employee status & activity.<br/>Threshold: Inactive >= 45 days or status == Suspended.

    alt Slack License Dormant
        Worker->>DB: Call downgrade_profile(slack, email, "Free")
        Note over DB: Set Slack tier to "Free" (cost €0/mo)
    else GitHub or Copilot License Dormant
        Worker->>DB: Call reclaim_license(app, email)
        Note over DB: Set seat to "Suspended" (cost €0/mo)
    end

    Worker->>DB: Call update_financial_registry(app, email, cost, action)
    Note over DB: Log savings in Euro (€) & add audit log entry

    Note over Dashboard: Dashboard polls seatprune_db.json every 1s
    Dashboard->>DB: Fetch database status
    DB-->>Dashboard: Return updated DB status
    Note over Dashboard: Updates realized savings metrics and log in real time!

🚀 Key Architectural Features

  • Standardized Context-Sharing Protocol: Structured JSON schema that maps Okta identity groups (statuses, names, departments) directly to developer tool logs (last active date, cost, tier).
  • Worker & MCP Server (ghostseat-mcp): Runs a FastMCP server exposing database query and reclamation endpoints while hosting the dashboard on port 8085.
  • Package & CLI (@seatprune/cli): Packaged command execution via seatprune_cli.py audit implementing the Antigravity Agent and rule-based fallback controller.
  • Premium Landing Dashboard: A dark-mode HTML visualizer polling database changes, demonstrating savings (>€500/mo), seat state grids, and real-time audit logs in Euros (€).

🛠️ Exposed MCP Tools & Resources

Tools

  • get_okta_users(): Returns Okta directories.
  • get_app_utilization(app_name): Returns logs for github, copilot, or slack.
  • reclaim_license(app_name, user_email): Deprovisions a user seat (Suspended/€0.00).
  • downgrade_profile(app_name, user_email, target_role): Downgrades user seat (Free/€0.00).
  • update_financial_registry(app_name, user_email, monthly_cost, action_type): Logs monthly and annualized savings.

Resources

  • seatprune://logs/savings: Retrieves savings registry details.
  • seatprune://audit/summary: Retrieves active seat count and detection summary.

⚡ Running the Simulation

1. Run Scenario Tests

PYTHONPATH=seatprune venv/bin/pytest seatprune/tests/test_seatprune.py

2. Run Scenario Simulation

Run the full scenario validator which resets the database, starts the server, executes the audit CLI command, and checks all savings assertions:

venv/bin/python seatprune/validate_seatprune_scenario.py

3. Start Dashboard Server

Start the server in background:

venv/bin/python seatprune/ghostseat_mcp.py

Open http://localhost:8085 in your browser to view the live dashboard and landing page.

Release files for seatprune 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for seatprune 0.1.0
File Size Uploaded
seatprune-0.1.0.tar.gz 204.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for seatprune 0.1.0
File Interpreter ABI Platform
seatprune-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 221.1 kB

Release files / seatprune-0.1.0.tar.gz

Download URL seatprune-0.1.0.tar.gz
Size 204.0 kB
Tags Source
SHA-256 checksum
How to use checksums
33b32e2ea9ea5f6e6074e5823e46967e4870c5e9708f5ab2a7a18d30b19076ce
BLAKE2b-256 checksum
How to use checksums
65bbc0bba1a4fd164b06acf293f634469a5b1c8362cc4b358633e4cd64c7f45c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / seatprune-0.1.0-py3-none-any.whl

Download URL seatprune-0.1.0-py3-none-any.whl
Size 17.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
811099b72abf93bbb80cb10baffdc6fce797f1a8794bca09bb0c592ee2a70b3e
BLAKE2b-256 checksum
How to use checksums
b650409a7283e07359e1103c665329c9d8eec1cc6964fd73a1839e1974ed8fb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page