Clients and infrastructure for bringing Coders.mu meetup data into developer tools.
This repository contains the shared meetup-fetching core, a hosted API, a CLI, a macOS menu bar app, and a Raycast extension. The project is still exploratory, but it is actively used and contributions are welcome, especially around reliability, polish, and developer experience.
src/: installable CLI package exposed ascodersmuandcmupackages/core: shared meetup fetching, cache, calendar, and provider logicapps/api: hosted API used by the shipped clientsapps/macos: native macOS menu bar appapps/raycast: Raycast extension
- prototype codebase, not a stable public platform yet
- GitHub-first distribution, no npm release yet
- the CLI, macOS app, and Raycast extension prefer the hosted API at
https://codersmu.cedpoilly.dev - the public
coders.muAPI remains the upstream data source and shared fallback - CI runs on the shared core, the hosted API, the Raycast extension, and the macOS app
Clone the repo and install dependencies:
pnpm installThen choose the client you want to work on:
pnpm install:cli
pnpm build:macos
pnpm run:macosRun the main repo checks:
pnpm check
npm run check:hosted-apiThe intended developer flow is:
- clone the repository
- run
pnpm install - run one target-specific install command from the repo root
Build the workspace and link the CLI into your local shell:
pnpm install:cli
codersmu next
cmu nextThis builds the shared core plus the CLI and then uses npm link, so the linked command is backed by your locally compiled checkout rather than a watch-mode process.
You need Xcode and xcodegen installed first. Then build the compiled Debug app from the repo root:
pnpm build:macos
pnpm run:macospnpm build:macos generates the Xcode project if needed and produces a local Debug app bundle at apps/macos/.derived-data/Build/Products/Debug/CodersmuMenuBar.app.
pnpm run:macos launches that already-built app bundle. It does not rebuild automatically, so rerun pnpm build:macos after source changes.
If you want to inspect or edit the project in Xcode directly:
pnpm dev:open:macosIf xcodegen is missing, install it first:
brew install xcodegenThe CLI is the most complete client today.
- installable from GitHub
- commands exposed as
codersmuandcmu - uses the hosted API by default, with fallback to upstream data
- suitable for day-to-day use, though the command surface can still evolve
Install from the GitHub repository:
npm install -g github:cedpoilly/codersmu-clients#main
codersmu next
cmu nextInstall from a tagged prototype snapshot:
npm install -g github:cedpoilly/codersmu-clients#v0.0.0-prototype.1
codersmu next
cmu nextGitHub installs compile the CLI from source during installation, so Node >=20.11 is required.
Common commands:
codersmu next
codersmu previous
codersmu list
codersmu ls --short
codersmu past --short
codersmu refresh
codersmu next --refresh
codersmu list --state past --limit 5
codersmu view next
codersmu show next
codersmu view previous
codersmu view 2026-04-18-the-april-meetup
codersmu calendar next --write ./next-meetup.ics
codersmu calendar previous --write ./previous-meetup.ics
codersmu --help
codersmu --version
cmu next
cmu previousThe CLI refreshes meetup data automatically and uses a local cache internally. Users do not need to manage the cache themselves.
Use --short or -s for a more compact human-readable listing.
Use --refresh on read commands to bypass the local cache for that invocation.
Use ls and show as short aliases for list and view.
The macOS app lives in apps/macos.
- native SwiftUI
MenuBarExtraapp - uses the hosted API first
- keeps its own persistence, change detection, and notification flow
- tested in CI, but packaging and distribution are still in progress
To work on it locally:
pnpm build:macos
pnpm run:macosThe Raycast extension lives in apps/raycast.
- local extension prototype
- uses the same shared core as the CLI
- provides
Next MeetupandMeetups - not published to the Raycast Store yet
To run it locally:
cd apps/raycast
npm install
npm run devThe Meetups command groups results into live, upcoming, and past sections and exposes quick actions for RSVP links, recordings, slides, maps, and calendar exports.
The hosted API lives in apps/api and is deployed at codersmu.cedpoilly.dev.
GET /healthGET /meetups?state=all|upcoming|pastGET /meetups/nextGET /meetups/:slug
To smoke-test the live deployment from this repo:
npm run check:hosted-apiThat probe validates:
GET /healthHEAD /healthGET /meetups?state=allGET /meetups?state=upcomingGET /meetups/next- detail lookup by both derived slug and raw meetup id
Set CODERSMU_HOSTED_API_BASE_URL first if you want to check a different deployment target. Use CODERSMU_HOSTED_API_TIMEOUT_SECONDS to tighten or relax the live probe timeout.
The shared core still uses the public coders.mu API at https://coders.mu/api/public/v1/meetups as its default source, but the shipped CLI, macOS app, and Raycast extension opt themselves into the hosted edge at https://codersmu.cedpoilly.dev. The hosted service itself reads from the same upstream JSON contract.
For a diagram-based system overview and per-client fallback documentation, see ARCHITECTURE.md.
For hosted API operations, see apps/api/RUNBOOK.md.
Contributions are welcome. The highest-value work right now is:
- CLI polish and UX consistency
- macOS app reliability and packaging
- Raycast quality, especially the
Next Meetupflow - hosted API resiliency and observability
- tests, fixtures, and contributor-facing docs
Start with CONTRIBUTING.md for setup, workflow, and pull request guidance.
Please also read:
From the repository root:
pnpm install
pnpm build:all
pnpm check
npm run check:hosted-api
pnpm release:checkGitHub Actions run on pushes to main and pull requests. The main CI workflow covers the shared workspace checks, Raycast, macOS, and a deploy-artifact boot test for the hosted API.
The long-term goal of codersmu-clients is not just to mirror website data in different shells. It is to make Coders.mu ambient in the developer workflow, visible at the right time and in the right place.
Current directions:
- new meetup announcement awareness
- RSVP opening and change detection
- richer native clients across platforms
- browser and agent surfaces that reduce manual checking