feature: verified macOS install and launchd service lifecycle

Open
#944 0 comments 0 reactions 1 assignee View on GitHub

@huang195 is already working on this.

Since Sep 10, 2026.

Assessment

This issue has not been assessed yet.

Description

enhancement high priority
Feature Description

The install path is the first thing anyone touches and the easiest place to lose a user. macOS
is its own code path — launchd, plist rendering, launchctl bootstrap — and it is verified ad
hoc today on whatever machine the author had.

Proposed Solution
  • Fresh install via curl | sh on a machine that has never run Cortex, arm64 and amd64
  • Upgrade over an older install: service restarted, config preserved
  • Uninstall leaves no launchd registration, no ~/.cortex, no modified agent settings
  • Re-running install is idempotent
  • Service survives logout/login and a crash
  • abctl service status | start | stop | restart accurate in every state
  • stop tolerates the proxy's ~15s drain — returning before the port is released makes
    the next start fail
  • Plist rendering safe for $HOME and --config paths containing XML metacharacters
Additional Context

Part of the Cortex v0.9.0 release. Gates exit criterion 1 (install works cold). Automated by
the macOS release smoke test.

Dominant language
Go
Stars
13
Forks
40
Avg merge
12h 9m
Merged PRs (30d)
164

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from rossoctl/cortex

All issues in rossoctl/cortex

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.