Skip to content
CAI
Software that uses CAICheck a score

Planetable/Planet

47.1

Weak · 1 October 2026

64.6k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a decentralized content management platform called Planet, built with Swift for macOS and iOS, that enables users to create, manage, and aggregate articles and media. It features a primary desktop application alongside a lightweight companion app, Croptop, for drag-and-drop posting, and includes a command-line utility, 'pn', for library management. The platform integrates with IPFS for storage and Nostr for notifications, while supporting monetization via blockchain networks and offering tools for AI session archiving and automated release management.

How it got here

2022 — Project restructuring and tooling setup

7 changes.

The project underwent significant structural reorganization, including the addition of AI and IPFS components, new Xcode schemes, and updated dependencies. Development workflows were standardized through the introduction of linting, formatting configurations, and automated versioning hooks.

2023 — Croptop Lite app and IPFS monitoring

4 changes.

This period focused on introducing the Croptop Lite app, a lightweight SwiftUI interface for managing sites and creating posts with drag-and-drop media support. It also added comprehensive aggregation and monetization settings within the app, alongside a new Python tool for monitoring IPFS peer connectivity via Nostr notifications.

2026 — Planet CLI and session archiving tools

5 changes.

This period focused on expanding the Planet ecosystem with new tooling, including a CLI utility for managing libraries and content, and skills for archiving AI coding sessions. It also introduced an automated release notes generator and comprehensive test coverage for the new command-line interface components.

Features

Add IPFS peer monitoring tool with Nostr notifications

A new Python script (\tools/monitor-ipfs-peers/monitor.py\) has been added to monitor the connectivity of IPFS peers listed in \peers.txt\. The tool checks the status of each peer and sends the results, including emoji indicators for success or failure, to multiple Nostr relays using a configured private key. This provides a new way to receive alerts about IPFS peer availability via the Nostr network.

tools/monitor-ipfs-peers · high confidence

Added Xcode schemes for Croptop, PlanetDockPlugIn, and pn

New shared Xcode schemes have been added to the project to support building and launching additional targets. The Croptop scheme allows building and running the Croptop.app. The Planet scheme now includes build entries for the bundled 'pn' command-line utility and its associated tests (pnTests), alongside the main Planet.app. Additionally, a scheme for the PlanetDockPlugIn.docktileplugin has been added, enabling it to be built, profiled, and analyzed within Xcode.

Planet.xcodeproj/xcshareddata · high confidence

Introduce 'pn', a bundled CLI for managing Planet libraries and content

Adds the 'pn' command-line utility, providing users with a new way to manage their Planet library and content via the command line. The tool supports two data sources: 'api' mode for interacting with the running Planet app's API, and 'disk' mode for direct local file-system operations. Key capabilities include creating, updating, and deleting planets and articles, handling article attachments (with replace or append modes), managing templates, and performing library diagnostics. It also includes an 'install' command to place the binary in \~/.local/bin and integrates with the app via a custom URL scheme for API lifecycle management.

PlanetCLI · high confidence

Introduce /save-session skill to archive Claude Code sessions to Planet

A new /save-session skill has been added to Claude Code, allowing users to save session summaries as articles in a Planet instance for later review. The skill generates a structured HTML summary (including tasks, decisions, and file changes) and posts it to the configured Planet server. It uses the CLAUDE\_SESSION\_ID to deduplicate entries, ensuring that multiple save commands within the same session update the same article rather than creating duplicates. Users must configure their Planet server URL and project-to-planet mappings in a local config.json file, which is now untracked via .gitignore to keep credentials out of version control.

tools/claude-code-skill · high confidence

Introduce Croptop Lite app with drag-and-drop posting and media support

The PlanetLite target introduces a new lightweight app called Croptop, providing a dedicated SwiftUI interface for managing sites and creating posts. Users can now drag and drop images, PDFs, videos, and MP3 audio files directly into the content view to create new posts, with the app handling file preparation and quick-share workflows. The interface features a sidebar for site navigation, a grid view for content display, and settings for API control and general configuration. The app registers custom file types for site and post data, supports the planet:// URL scheme, and includes background tasks for aggregation and IPFS status monitoring.

PlanetLite · high confidence

New Aggregation and Monetization settings for Croptop

Users can now configure content aggregation and monetization directly within the Croptop settings. The new AggregationSettings view allows users to specify source sites (via ENS, IPNS, or RSS/Atom/JSON URLs) and choose whether to trust and reuse original post IDs to maintain URL consistency, with an option to trigger aggregation immediately. Additionally, the new MintSettings view provides a 'Monetization' tab for configuring collection addresses across multiple networks (Ethereum, Optimism, Arbitrum, Base) and an 'Advanced' tab for custom RPC endpoints, replacing the previous CPN/Mint settings interface.

PlanetLite/Croptop · high confidence

New Codex skill to save session summaries to Planet

A new 'save-session' skill has been added for Codex, enabling users to archive their current session summaries as articles in Planet. This change introduces a Python script that constructs an HTML summary of the session (including tasks, decisions, and file changes) and posts it to the Planet API, either creating a new article or updating an existing one identified by the Codex thread ID. The skill is configured via a local JSON file mapping project paths to Planet UUIDs and is exposed to the agent through an OpenAI YAML interface.

tools/save-session · high confidence

New Sparkle release notes generation tool

Added a new Flask-based application in tools/generate-sparkle-notes that automates the creation and publishing of release notes. The tool filters git commits to include only user-facing changes in the Planet app, generates Markdown notes, and syncs them to GitHub releases. It also includes a client for the Planet API to manage planets and articles, supporting periodic tag discovery and note generation.

tools/generate-sparkle-notes · high confidence

Behavioural changes

19 commits (2 fixes) modifying Planet.xcodeproj/project.xcworkspace/xcuserdata

A change to existing behaviour in Planet.xcodeproj/project.xcworkspace/xcuserdata — 19 commits (2 fixs), 1 file.

Planet, Planet.xcodeproj/project.xcworkspace/xcuserdata · medium confidence · unverified

Added empty Info.plist for English localization

An empty Info.plist file has been added to the PlanetLite/en.lproj directory. This file currently contains no configuration keys or values, serving only as a placeholder in the localization bundle.

PlanetLite/en.lproj · high confidence

Automated build number versioning via pre-commit hook

A new pre-commit hook has been added to automatically manage the iOS build number. The script calculates the current commit count and updates the \Planet/versioning.xcconfig\ file with the \CURRENT\_PROJECT\_VERSION\ value. It ensures the version file is staged with every commit, including cases where a previous commit attempt failed but the file was already modified, preventing version drift.

git-hooks · high confidence

Removed user-specific Xcode scheme configuration

The shared scheme management file for the 'kai' user has been removed from the project. This eliminates local Xcode scheme settings, such as the visibility and order of the 'Planet' and 'Spectre (Playground)' schemes, ensuring that these personal configurations no longer affect the project state.

Planet.xcodeproj/xcuserdata · high confidence

Xcode project restructured with new source files and frameworks

The Xcode project file has been updated to include a large number of new source files and frameworks, reflecting significant additions to the application's codebase. New files include AI-related components (PlanetAIMemory, ArticleAIChatWindowManager), IPFS management tools (IPFSGateway, IPFSStatusView), and template browser views (TemplateBrowserView, TemplatePreviewView). The project now links against several new frameworks, including CoreSpotlight, NaturalLanguage, and XCTest, and introduces new build targets for features like the dock tile plugin and published folders dashboard.

Planet.xcodeproj · high confidence

Test coverage

Added tests for PN disk store operations

Added comprehensive test coverage for the \PNDiskStore\ component in the \PlanetCLITests\ suite. The new tests verify planet creation and avatar updates (including PNG and ICO generation), article lifecycle management (creation, search, updates, and deletion), public metadata synchronization (including Plausible, Juicebox, donation, social, and podcast fields), and attachment handling (append, replace, clear, and delete operations).

PlanetCLITests · high confidence

Dependencies

Updated Swift and Python dependencies

The project has updated its dependency manifests. The Swift Package Manager lock file (Package.resolved) now includes newer versions of libraries such as AsyncKit, CryptoSwift, FeedKit, GRDB.swift, and Mediaview, alongside new additions like AsyncHTTPClient, BigInt, ConsoleKit, MultipartKit, and QRCode. Additionally, a new requirements file for the Sparkle release notes generation tool specifies Flask, Redis, and Requests.

(dependencies) · high confidence

Housekeeping

Added development tooling and configuration files

The repository now includes configuration files for code formatting and linting, specifically \.editorconfig\ for consistent indentation and line endings across HTML and Swift files, and \.swiftlint.yml\ to enforce Swift style guidelines. A \.swift-version\ file specifies Swift 5.7 as the target version. Additionally, a \.gitignore\ file has been added to exclude IDE settings, local configuration overrides (\local.xcconfig\), and generated files, while \.gitattributes\ configures Git LFS for binary files. Helper shell scripts (\progress.sh\, \tag.sh\, \what.sh\) were added to assist with git operations, and documentation files (\AGENTS.md\, \CLAUDE.md\, \README.md\, \LICENSE\, \FUNDING.json\) were introduced to guide development and describe the project.

(repo-wide) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 47 → 47 (+0.2)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 78 → 75 (-2.9)
  • Architecture 91 → 81 (-9.7)
  • Maturity 58 → 59 (+0.7)
  • Readiness 41 → 36 (-4.7)
  • Security 42 → 56 (+14.6)
  • Accessibility 51 → 51 (+0.0)

Resolved (10)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (12 lines × 2) (Planet/IPFS/IPFSDaemon.swift)
  • Hotspot: Planet/Entities/DraftModel.swift (Planet/Entities/DraftModel.swift)
  • Hotspot: Planet/Entities/MyPlanetModel.swift (Planet/Entities/MyPlanetModel.swift)
  • Hotspot: Planet/Entities/PlanetStore.swift (Planet/Entities/PlanetStore.swift)
  • Hotspot: Planet/Views/Articles/ArticleAIChatView.swift (Planet/Views/Articles/ArticleAIChatView.swift)
  • Hotspot: Planet/Views/Articles/ArticleAIOnDeviceTools.swift (Planet/Views/Articles/ArticleAIOnDeviceTools.swift)
  • Hotspot: PlanetCLI/PNCommandRunner.swift (PlanetCLI/PNCommandRunner.swift)
  • Off-boarding risk: anonymized user #1

New (153)

  • AppContentView.body (cognitive 18) (PlanetLite/AppContentView.swift)
  • AppSidebarItemView.body (cognitive 18) (PlanetLite/AppSidebarItemView.swift)
  • AppSidebarItemView.body (cyclomatic 17) (PlanetLite/AppSidebarItemView.swift)
  • ArticleAIChatView.body (cognitive 32) (Planet/Views/Articles/ArticleAIChatView.swift)
  • ArticleAIChatView.body (cyclomatic 29) (Planet/Views/Articles/ArticleAIChatView.swift)
  • ArticleAIChatView.chatMessageList (cognitive 30) (Planet/Views/Articles/ArticleAIChatView.swift)
  • ArticleAIChatView.chatMessageList (cyclomatic 21) (Planet/Views/Articles/ArticleAIChatView.swift)
  • ArticleListView.body (cognitive 33) (Planet/Views/Articles/ArticleListView.swift)
  • ArticleListView.body (cyclomatic 20) (Planet/Views/Articles/ArticleListView.swift)
  • ArticleListView.swift.filteredArticles (cognitive 24) (Planet/Views/Articles/ArticleListView.swift)
  • ArticleListView.swift.filteredArticles (cyclomatic 32) (Planet/Views/Articles/ArticleListView.swift)
  • ArticleView.body (cognitive 38) (Planet/Views/Articles/ArticleView.swift)
  • ArticleView.body (cyclomatic 27) (Planet/Views/Articles/ArticleView.swift)
  • AvatarPickerView.body (cognitive 25) (Planet/Views/My/AvatarPickerView.swift)
  • AvatarPickerView.body (cyclomatic 18) (Planet/Views/My/AvatarPickerView.swift)
  • DockIconPreviewView.body (cognitive 22) (Planet/Labs/Icon Gallery/IconManager.swift)
  • Duplicated block (10 lines × 2) (Planet/Views/PlanetMainView.swift)
  • Duplicated block (10 lines × 2) (Planet/Views/PlanetMainView.swift)
  • Duplicated block (10 lines × 3) (Planet/Views/Create & Follow Planet/CreatePlanetView.swift)
  • Duplicated block (10 lines × 4) (Planet/Views/Components/IndicatorViews.swift)
  • …and 133 more

Changes since last survey

  • 1 commits — 0 feature/other, 1 fixes

By area

  • Planet/Entities — 1 commit

Notable commits

  • fix: Fix Xcode 27 compatibility and sidebar icon sizing

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

Planetable/Planet was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 11cfe5bc0d03be2bfa3910874a3261060c0ed78d — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.