Elyra
Elyra The coding agent eTerm The terminal that knows where each command ends Huskarl AI colleagues on your own Mac Starf An activity monitor for Apple silicon that never invents a number etrans An SSH and SFTP client for macOS Elyra VM Virtual machines for macOS, Linux and Windows on your Mac Litr A small, native web browser for macOS Notr A notebook for macOS e The native code editor Elyra Grove Native local development environment Askr The real server for Laravel & PHP Elyra Framework Rust + Svelte 5 framework for desktop apps Elyra Conductor Local project conductor Refr Local-first PDF workspace for macOS Elyra Workspace A desktop workspace for coding agents Elyra SQL Server MySQL-compatible SQL server in Rust Elyra Félagi Agents as teammates on one board Elyra SQL Client Native desktop SQL workbench Elyra SQL Anywhere Replication-ready SQL engine Elyra Sjá SEO & GEO workspace for macOS Elyra DataGrid Server-driven data grid for Laravel
Licence & updates
Licensing
Updates
Elyra

Limits

What Starf does not do. Some of these are the reference implementation's deliberate refusals, kept; the rest is work not yet done.

Refused on purpose

Apple's per-process Energy Impact. A private metric computed from counters no unprivileged process can read. Not implemented, and nothing is dressed up as it.

Total system power draw. The battery reports its own charge and discharge power. On mains that falls to zero while the machine keeps drawing from the adapter. Measuring the real figure needs SMC keys or powermetrics, neither available without elevated privileges. Starf reports the battery's flow and says what it is.

Apple's Battery Health percentage. Starf shows the controller's own maximum charge against design capacity. Apple computes its figure differently; showing ours under their name would be wrong.

Temperatures and fan speeds. Apple silicon's sensors are behind SMC keys and private HID services that need elevated privileges or undocumented interfaces. Starf shows macOS's thermal pressure level instead — the state the system itself acts on — and does not estimate a temperature from it.

Calling growth a leak. Nothing the kernel reports tells a leak from a cache that is still filling. The growing tag gives the measurements and leaves the verdict to you.

App Nap state, 12-hour power, per-process packet counts. No generally available equivalent.

Emptying the Trash, or deleting anything. Sweep moves what you choose to the Trash and stops there. The Trash holds whatever else you put in it, and emptying it would destroy that too; the space comes back when you empty it yourself.

Matching an app's leftovers by vendor or by a similar name. Arc and Dia share the prefix company.thebrowser; Conductor and Elyra Conductor share a word. Only an exact identifier, the app's own extensions, or its whole name counts. A folder in the home folder named like the app is shown as likely and never selected, and one without a dot — ~/Code for an app called Code — is never offered at all.

Looking in Documents, Desktop or Downloads by default. Walking them makes macOS ask for permission. Sweep looks in the project folders that exist, and in any folder added through the open panel.

Guessing what the driver did not say. A processor slot claimed by two device-tree nodes keeps a neutral label instead of a guessed one. A bundle whose Dock presence is set at runtime rather than declared is classified by what it declared.

Not built

Nothing from the original plan. What follows is what a future version could reasonably add.

Another process's environment. KERN_PROCARGS2 returns it only to the calling process. This was checked rather than assumed: a probe reading its own buffer got 3,495 bytes of variables, and the same probe reading a child it owned got none. The Environment report says this instead of showing an empty list.

Keys in starf top. It redraws and stops with Ctrl-C; sorting and filtering are options on the command line, not keys pressed while it runs. Reading keys would mean putting the terminal in raw mode and restoring it on every way out.

History beyond fifteen minutes. Charts, moments, growth and the diagnostic bundle all cover the retained fifteen minutes. Nothing is written to disk between runs.

More kinds of build output in Sweep. PHP's vendor, Python virtual environments and Gradle's per-project build are not recognised. A vendor folder is committed in some projects, and a virtual environment can hold what was installed by hand, so each needs a test as certain as Cargo's tag before it is offered.

Sweeping on a schedule. Sweep runs when asked. Moving files while nobody is looking would need rules for what is selected that are safer than the ones a person reviews.

Not yet observed

Raised thermal pressure. Only the nominal level has been seen on the machine this was built on; it agreed with pmset -g therm and ProcessInfo.thermalState. The higher levels, and the alert for them, follow the public header and have not been seen to fire.

Sweep in the signed app. The whole path — find, measure, move to the Trash, take it back out — has been run from a terminal: the tests, and starf sweep --apply on a scratch project whose size matched du and which went to the Trash and came back. The bundled .app has its own privacy permissions, and whether macOS lets it take an item back out of the Trash for Undo has not been checked there. Put Back in Finder works either way.

A protected container refusing to move. macOS refused to move a sandboxed app's container by hand. Sweep reports that per item and moves the rest; the wording for that refusal has been tested for the error codes, not seen on that folder.

Notification delivery. The alert rules are tested as logic — a snapshot in, alerts out. That macOS shows the notification has not been checked yet, and a development build run from a terminal may not be allowed to post at all. Check with the bundled .app.

Known inaccuracies

Application classification. Read from LSUIElement and LSBackgroundOnly in the bundle's Info.plist. A bundle that sets its activation policy at runtime cannot be seen this way. On the machine this was built on, AppSSOAgent, UserNotificationCenter and privatecloudcomputed declare neither key and so appear under Applications. Excluding them by path would be a guess, and guessing is what the rest of this code refuses to do.

Region counts against vmmap. PROC_PIDREGIONPATHINFO coalesces adjacent mappings with identical attributes; vmmap runs with access Starf does not have and splits differently. The counts differ. See Verification for the comparison that shows the totals agreeing with the kernel's own figure.

Platform

Apple silicon is what this was built and checked on. The x86_64 paths exist — the Rosetta timebase correction, the Intel SMT note, the alternate GPU utilisation key — but have not run on Intel hardware. Nothing has been checked against an external GPU.