01What the app is
CTK is a desktop app for observing repository processes, Docker Compose services, SSH processes, Kubernetes namespaces and selected AWS or Azure resources. Cloud connections can be used without a local repository or associated with one. CTK is not a system-wide launchd manager or port scanner.
A reading has five fields: What, When, Why, How and Solution. Why contains source-reported evidence only when available; it is not an AI-generated diagnosis. Solution stays empty until a user links one. CTK does not edit source code or apply a fix.
02What is stored where
The account service handles sign-in, subscription, Team seats and numeric repository/service usage. It does not receive repository contents or operational observations as part of those requests.
Repository paths and names, recorded process information, incidents, topology and history stay on the Mac running CTK. Optional MCP sharing is separate: after explicit consent, a selected AI client can receive approved project observations and relation evidence. Your AI provider may therefore receive that approved data; source code and raw logs are excluded from CTK MCP responses.
03Plans
Free is one seat, one repository, and three services. It opens Already running. It is not sold at checkout.
Developer is one seat, five repositories and twenty services. It includes Already running, Docker Compose, Start with Toolkit and SSH. Developer and Team can also use read-only MCP after explicit project consent.
Team is priced per seat, from one seat to one hundred. It allows twenty repositories and one hundred services. These are shared limits, not multiplied by seat count. Team adds Kubernetes, AWS and Azure. Selected cloud resources consume service capacity; a cloud connection without a repository does not reserve a local repository.
A seat is a person who can sign in. The live prices are on the pricing page.
The buyer invites the other Team seats by email. That person signs in and uses the same plan, including its repository and service counts. Only the buyer changes seats or payment.
04Sign in
Downloading CTK does not require an account. Open the installed app to sign in with your existing account or register through your browser.
If the app has no session, it opens the browser to log in, then takes the session back. Signing out of the app removes that session from the app. The account on the site remains.
05Connect a repository
Connecting a repository means choosing a folder. The path and the name are written locally. They are not uploaded.
Before the folder is saved, the app reserves one repository on the plan. Removing the repository releases that count. If the local save fails after the reserve, the count is released.
A repository can be connected and still not be watched. The status stays Not watching until a watch is running, and then it is Watching.
06Watch
A watch is how the app reads the services. The door you pick has to be on your plan.
Each distinct service the watch sees reserves one service on the plan. Stopping the watch releases that count. Removing the repository stops the watch first.
07Supported watch methods
Already running reads processes whose working directory is the repository, or inside it. Shells and editor helpers are skipped. Stopping the watch does not stop those processes.
Docker reads containers whose Compose project directory is the repository, or inside it. CTK does not run docker compose. It reads the state, the health, the name, the health check, and the restart policy. It does not read environment variables.
Start with Toolkit runs the start script from package.json. A pnpm lockfile uses pnpm, a yarn lockfile uses yarn, and otherwise the script runs with npm. Stopping the watch stops that process.
Kubernetes requires Team. Enter a kubeconfig context and a namespace; an empty Context uses the current one. CTK uses your local kubectl and credentials to read pods, deployments, stateful sets, daemon sets, services and endpoints. The cluster can be local or remote. Namespace is the observation scope, not a source-folder filter. Stopping the watch changes nothing in the cluster.
SSH is available on Developer and Team. Enter a host or trusted OpenSSH alias, an optional user and an absolute remote folder. CTK reads processes whose working directory is that folder or a descendant. It uses your existing SSH configuration and key access, rejects unknown or changed host keys and does not import a password or private key. This method does not inspect remote Docker containers. The folder filter does not restrict the SSH account’s server permissions.
AWS requires Team and an existing local AWS CLI profile. Choose the profile and region, review the account, discover supported resources and explicitly select Lambda functions, EC2 instances or ECS services. CTK reads Lambda invocation/error/throttle metrics, EC2 state/status checks and ECS desired/running/pending counts. Missing metrics or a running resource do not establish application health. CTK does not invoke functions, deploy changes or read source code, environment values or raw logs.
Azure requires Team and an existing local Azure CLI session. Choose a subscription and explicitly select App Service/Function Apps or virtual machines. CTK reads native resource and VM power/provisioning states. Running or successful provisioning does not prove application health. CTK does not create resources, execute VM commands or read application settings, connection strings, source code or raw logs. Both AWS and Azure can be connected from Home without a repository, or associated through repository setup; only the selected resources are watched.
08Coming next
Google Cloud is planned and is not yet available. AWS and Azure support the resource types listed above; other cloud resource types are not implicitly covered by connecting an account.
09A reading
What is the state or the health. When is the time the source gave. How names the door, the service, and the check or the command.
Why reports evidence supplied by the connector: for example a process exit code, an explicit out-of-memory indication, health-check output or a Docker error. Arbitrary application log text is not promoted into a verified cause. A failed probe establishes that the probe failed, not which underlying dependency caused it. If no cause is recorded, Why stays empty.
Solution stays empty. Recommendations shows the effect of a solution only after one is linked. Until then that screen stays empty.
10Green means healthy
A green mark means a health check reported healthy. A service that is running, with no health check, stays a plain Running. It is not painted green.
11The intelligence menu
The Intelligence and Analyze views are available across watch methods. Their conclusions depend on the evidence the connector provides. Cloud views distinguish provider state and diagnostics from missing application-health, dependency or comparison evidence; an empty field is not replaced with an inferred result.
Overview. Which services are under pressure. A row is the name and the mark.
Discover. What exists: the door, where it was found, the containers or commands, and a port or health address when the source stated one. A service is live or not running.
Observe. The full reading, and the only place the cause is written out. A service is observed, partial, or inactive, and a missing side is marked as a gap.
Normalize. Whether state and health were merged into one record, or only one of them is present.
Topology. The links, drawn. If two readings disagree, the node says so. A dependency is drawn only when the source stated it. A dependency the watch did not find stays unresolved.
Knowledge. The same links as a list. Unresolved dependencies are kept apart from the ones the source named.
Insights. Which service is under pressure, why that matters, and the evidence lines copied from the record. Runtime pressure is kept apart from a missing observation.
Timeline. The readings of one service, grouped as a moment: what happened, the supporting readings, and how many services share that minute.
Signals. Which readings are present and which are missing. A missing health reading is its own row.
Incidents. One incident for a service, with the related readings under it. The existing rank is shown as a severity.
Inference. Every service that has a stated cause, cited from the record. Runtime, a missing observation, and configuration are separate kinds.
Consistency. The readings side by side. On Kubernetes, the desired replicas and the ready replicas.
Recommendations. The effect of a linked solution. With nothing linked, the screen is empty, on purpose.
12Stop and remove
Stopping a watch releases its service usage and preserves the connected repository and recorded history. Already running, Docker Compose, SSH and Kubernetes watches leave externally managed workloads running. Stopping Start with Toolkit also stops the process CTK launched. History retains the latest 1,000 recorded changes per repository; it is not a complete capture of every event between polls.
Removing the repository stops the watch, then releases the repository count.
13Read-only AI access with MCP
Open Settings → Integrations in CTK with Developer or Team access. Prepare a named client permission, select the connected projects to share and review the provider disclosure. Plan eligibility alone does not authorize sharing. Install through the chosen client’s confirmation flow or device-specific export, then verify an actual data request in CTK. Installation alone does not prove a successful read; these local packages are not a public marketplace listing.
The five tools list approved repositories and read stored snapshots, history, alarm evidence and relation evidence. They do not read source code or raw logs, run commands, refresh connectors, start or stop watches, edit files or create commits and pull requests. A stored reading is not a fresh probe. The client uses your own AI account and provider.
CTK must be open and signed in. Remembered connections can survive an app restart under the same login and fresh access checks. Sign-out, account change or a fresh login invalidates them. Revoke access in Integrations; this blocks future reads without stopping watches, but cannot retract data already received by the client.