Automatic reports send once per problem. With "Send these automatically" on, Bloomkeeper sends the same problem at most once a day, the same kind of problem at most every six hours, and no more than three reports a day. The limit now holds across the Mac window, your phone and restarts, so one ongoing problem no longer sends a report every hour. Reports you send yourself are never held back.
Bloom is now Bloomkeeper, and open source. Same app, new name, and its source is now public under the MIT license at github.com/cookder/bloomkeeper. Your history, settings, optimizer plan and phone link carry over unchanged, and updates keep arriving as before. If you installed from the website, the app in your Applications folder may keep its old name until you reinstall; that's fine.
Pace in cents or dollars. The Pulse meter now shows your pace in cents per hour (20.53¢) by default. Tap the number, or use the meter's settings, to switch to dollars ($0.21); Bloomkeeper remembers your choice.
Only Tailscale can reach the phone view. Bloomkeeper's phone connection now answers only requests that come through Tailscale, so other programs and other accounts on your Mac can't reach it directly. If phone access is already on, Bloomkeeper updates its Tailscale setting by itself and your phone link stays the same.
New support address. Help & feedback now offers support@bloomkeeper.io and the Bloomkeeper Slack channel. Problem reports work as before.
Stall recovery gives the switch time. When work stops and Bloomkeeper lets the optimizer try another model, it now waits up to 20 minutes for that switch (the optimizer confirms a move for 5 minutes first) instead of giving up after 5.
Dashboard settings stick. Your dashboard layout, graph style and dismissed notices are now kept when Bloomkeeper restarts.
Model variants are told apart. Models with the same name, like the three Gemma 4 26B variants, now show their quantization (8-bit, QAT 4-bit) in model lists.
One odd record no longer blanks the optimizer page. A history entry the page doesn’t expect is now skipped instead of stopping the whole page from loading.
Earnings in half-hour time zones. In time zones like India or Adelaide, live earnings now land in the same hours as Darkbloom Monitor’s, and this hour’s total shows correctly.
Accurate switching text. With Darkbloom 0.9.9 or later, switches let accepted requests finish first; the app now says so instead of warning that requests may be interrupted.
Cleaner problem reports. Reports no longer include a switch failure from more than a day ago.
Memory checks count the file cache Bloomkeeper clears. Bloomkeeper clears the macOS file cache before every switch, but automatic switching judged memory before that cleanup, so larger models could be ruled out even when they would fit. The check now counts the file cache Bloomkeeper will clear. If a model still does not fit after cleanup, Bloomkeeper keeps the current model and does not count the cache for that model for an hour.
A pointer to cache cleanup. Without cache cleanup permission, a model that would fit after cleanup now says so, with where to turn it on: Manual model controls → Enable cache cleanup (one macOS administrator approval).
Learning time counts correctly after a failed switch
1 changes · view details
Learning time counts correctly after a failed switch. If a switch away from a learning run failed, the run kept counting against learning time until the provider changed models, which could block learning for a day. A run now stops counting at the next switch attempt.
"What’s included" opens on click. The problem-report prompt’s "What’s included" link looked clickable but did nothing. It now shows exactly what a report contains.
Fewer repeat automatic reports. With automatic reports on, the same problem now sends at most once every six hours instead of every 30 minutes.
Optimizer page no longer stuck on "reconnecting". After stall recovery restarted the provider, the optimizer page stayed on "Your plan is reconnecting" because the restart has no switching estimate in the run history. The page now loads and lists it as a stall recovery restart.
Switches wait for Darkbloom to finish. Darkbloom 0.9.9 finishes the requests a Mac has accepted before it restarts on another model, which can take several minutes. Bloomkeeper stopped waiting after one minute, which could leave the provider online but serving nothing until someone restarted it. Bloomkeeper now waits for Darkbloom to finish.
Manual switches start right away. With Darkbloom 0.9.9 or later, a manual switch no longer waits up to five minutes for an idle moment. Darkbloom stops taking new work and finishes what it has, so nothing is cut off.
A stuck provider is restarted. If a failed switch still leaves Darkbloom drained and serving nothing for two minutes, Bloomkeeper restarts the model it is set to serve. Automatic switching stays paused until you turn it back on.
Learning time is the only limit. Learning runs were capped at two a day (eight during a learning boost), so learning time above about an hour went unused. Now runs use the learning time you set, measuring each model at most once every four hours. When today's learning time is used up, the optimizer says so and shows when the next run can start.
Learning time Off works. Setting learning time to Off used to leave the optimizer page stuck on "The optimizer response is incomplete". It now shows normally.
A clearer Overview, steadier readings, safer controls
5 changes · view details
Steadier live readings. The Pulse and Traffic charts no longer pause Bloomkeeper's once-a-second readings while they load, and Bloomkeeper writes far less to disk. Fine-grained history is kept for 90 days, the longest chart range, so the database stops growing without limit.
One pace, clearer Overview. Overview now opens with one plain sentence: what you're earning, on which model, today's total and what the optimizer is doing. Pace means the same thing everywhere (confirmed pay over the last five warm minutes, shown in dollars), so My Macs no longer shows $0.0000 while a Mac is serving. The phone view uses much less data, and the stall card shows only the latest episode.
Smarter stall recovery. Time your Mac was asleep or Bloomkeeper was closed no longer counts as a stall, missing network data no longer triggers a model switch, and the recovery steps can't get stuck after a restart. The optimizer also recovers by itself if its hardware readings stop or a save fails mid-switch, and Bloomkeeper now keeps a small log for troubleshooting.
Starting estimates that know your hardware. Bloomkeeper's starting pay estimates now record which kind of Mac they came from. When they were measured on different hardware from yours, the estimate shows a wider range until your Mac has measured the model itself; as people share summaries, Macs like yours get estimates from Macs like theirs.
Only Bloomkeeper's window can change settings. Other programs and other accounts on your Mac can no longer change Bloomkeeper's settings or switch models through its local connection. Opening the dashboard in a web browser on your Mac is now view-only; use Bloomkeeper's window to make changes. Phone access is unchanged.
A clearer optimizer, live demand and ways to stay in touch
9 changes · view details
See stall recovery as it happens. When steady work stops while network demand holds, the optimizer page shows how long it has been quiet and each recovery step: the test request and its result, a restart on the same model, trying another model, and stopping to notify you. After work resumes, the steps stay visible for a day.
Shadow estimates in the model table. What Bloomkeeper knows about each model has a Shadow estimate column: what the new demand-curve method predicts each model would pay right now. It is labelled as a test, is not used for switching, and shows how far its scoring has come toward the week-long accuracy check.
Network demand on the Pulse meter. A thin outer arc on the Pulse meter shows how busy the network is for your current model compared with its usual level over the past week, on the same scale as the earnings needle. If demand is normal but pay is low, Bloomkeeper says work may not be reaching this Mac; if demand is low too, it says so.
More models on the demand chart. The dashboard's Model demand card now shows the model you're serving and any model Bloomkeeper is trialling, proposing or considering, next to the three busiest, so you can see why it might switch.
Stay in touch (optional). More → About Bloomkeeper has an optional field for your email or Slack handle, so Andrew can reach you about updates, fixes and the beta. Nothing is sent unless you fill it in and tick the box, and Remove deletes it from bloomformac.com.
A plain explanation when you turn the optimizer on. The first time you choose Optimizer on, Bloomkeeper explains what it does (runs your best earner, catches demand spikes, keeps a fallback model) and why it learns, and offers a one-tap 3-day Learning boost for a Mac that's new to Bloomkeeper. What it does on the optimizer card opens it again. Help & feedback also links to the new Bloomkeeper channel on the Darkbloom Slack.
Starting estimates for every model. Bloomkeeper now ships with starting pay estimates for the common models, so the test estimates in What Bloomkeeper knows about each model aren't blank on a new Mac. You can also choose to share a weekly, anonymous summary of your Mac's per-model pay curves (More → About Bloomkeeper → Improve starting estimates, off by default) to make them better for everyone.
A better My Macs view. My Macs now connects up to ten Macs and shows their combined live pace, a table of which models each Mac is serving with their pace and how busy each model is versus its usual week, and step-by-step setup for adding another Mac.
See which model is running at a glance. The Pulse meter on Earnings → Overview now shows the model this Mac is serving (or both models of a pair) right above the gauge, in the same colour as its credits.
Protect good earnings. On the optimizer card, set Protect earnings above (default $0.20/hour). While the current model pays at least that, Bloomkeeper never interrupts it to learn. Confident upgrades to a model that clearly pays more can still switch. The earnings target no longer changes switching; set it under Fine-tune for the Earnings → Target report.
Learning time instead of waiting for bad hours. Choose how much time a day Bloomkeeper may spend measuring other models (default 1 hour). Learning runs happen whenever pace is below your protect level, not only when earnings are near zero, so Bloomkeeper learns what other models pay at ordinary times too. Runs go to the model measured least recently, and only to models with real demand: at least 10 requests on the network and about 0.3 per warm provider.
See what Bloomkeeper knows about each model. On the optimizer page, What Bloomkeeper knows about each model shows each model's expected pay, how much has been measured, when, and whether Bloomkeeper can switch to it confidently.
Trials judged fairly. A trial must beat what your current model normally earns at today's demand, not just its pace at the moment it was interrupted. The keep-or-return review uses the trial model's pay after its first work arrives, so loading and the wait for traffic don't count against it. If a finished trial can't return to the previous model (for example, you deselected it), Bloomkeeper resumes normal checks instead of holding every alternative.
Gets work going again when it stops. If steady work suddenly stops while the network still has demand, Bloomkeeper acts within minutes instead of waiting 20. It sends a test request at 5 minutes, restarts the provider on the same model at 8, then tries another model. If nothing works, it stops and sends you a notification. To use the test request that goes through Darkbloom, store an API key from your Darkbloom account with: security add-generic-password -U -a bloom -s bloom-darkbloom-api-key -w
Passive to aggressive in one slider. Choose how actively Bloomkeeper switches, from Very passive to Very aggressive. Each step sets trial length, idle wait, gain needed, confirmation time and daily limits together. Under Fine-tune, every value is a number you can type, with its allowed range shown; change one and the slider shows Custom. Memory headroom and safety checks are unchanged.
Model demand on the dashboard. A Model demand card on Earnings → Overview shows the three busiest models over 1 hour, 24 hours, 7 days or 30 days. All models and metrics opens the full demand view.
Bloomkeeper starts predicting every model. Every 5 minutes Bloomkeeper now estimates what each model would pay this Mac at today's demand, including models it has never run, and checks those estimates against what actually happens. It runs in the background only: switching keeps using the current method until the new estimates prove more accurate over at least a week.
Steadier live readings. Reading a month of model history took about 12 seconds and paused live readings twice a minute, which made the optimizer flicker to 'Waiting for fresh local readings'. It now takes a fraction of a second. Readings that arrive a little late also no longer drop a minute of warm time, which caused frequent 'waiting for fresh covered earnings' pauses.
Learning boost keeps your saved limits. Data gathering is now Learning boost: at least 3 hours of learning a day for 24 hours, 3 days or 7 days, without waiting for low earnings. Saving the plan while it runs keeps your own switch and downtime limits instead of the temporary ones.
Large models switch more reliably. With cache cleanup permission, Bloomkeeper clears the macOS file cache before every model switch, so large models like the bigger Qwens have room to load. It never blocks a switch if cleanup fails.
One card for the optimizer. Manual and Optimizer on, the models Bloomkeeper can use, your earnings target and data gathering now sit on one card. Changes save while the optimizer keeps running.
Data gathering for new Macs. Choose 24 hours, 3 days or 7 days to run more short learning trials and build this Mac's paid-work history faster. Safety checks and the high-earnings hold still apply.
One-tap problem reports and a Guide. Send a short report with one tap, or choose to send them automatically. More → Guide walks through every feature and common setup fixes.
One clearer status indicator. A single status light replaces competing badges. Brief interruptions no longer cause rapid flicker; stale earnings and clock problems still show attention.
More reliable connection status. Returning to Bloomkeeper refreshes visible readings. Unavailable or delayed status shows a clear explanation while control safety checks remain unchanged.
Bloomkeeper website links on Mac and phone. Open the website, setup guide, support and full changelog from More or Help & feedback. Native links open in your default browser.
Clearer model setup guidance. Use Optimizer → Overview and its model controls. Prepare configures the current model on the Mac; Start or Switch prepares your selection when needed.
Included optimizer. Automatic model selection is included with reporting, manual controls and private phone access. Optimizer access works offline, needs no activation step and has no scheduled expiration.
Your choices are preserved. Updating does not enable automation, resume a paused plan or start Darkbloom. Your saved settings, dashboard layouts, history and privacy choices remain in place.
Evaluating the benefit. We’re evaluating whether Bloomkeeper improves earnings over using Darkbloom alone. Improvement has not been established; results depend on hardware, demand and uptime.
Customizable Earnings dashboard. Move, hide or restore cards and resize desktop cards. Save separate phone and desktop layouts in each browser, cancel edits or reset to the default.
Experimental Earnings Outlook. A next-hour baseline combines recent paid pace with complete historical hours. Forecasts stay on your Mac for later accuracy checks. They assume the model is already warm, do not predict changing demand and do not drive automatic switches.
Start the selected model. Manual controls name the model you selected when starting or switching. Optimizer on shows preparation progress; choosing Manual cancels remaining activation. A provider command already sent may still finish.
Optional cache cleanup. An eligible start can attempt one bounded cleanup, then remeasure memory before loading. You can enable or remove the limited permission through macOS administrator approval in the Mac app; phone controls use the permission already configured there.
Clearer model evaluations. Ordinary comparisons need a supported earnings benchmark. Unresolved reviews end as inconclusive at their deadline, and weak model tests need new evidence before repeating. The optimizer explains which alternative is holding up a switch.
Steadier earnings confirmation. Current demand is checked separately from alert refreshes. Brief data gaps can pause confirmation without discarding valid progress or counting time that wasn’t observed.
Report delivery. Fixed requests that could be blocked before reaching Bloomkeeper’s reporting service. The adjacent optional usage-sharing request path was corrected too.
Earlier unconfirmed reports. Previously failed reports were not recovered or automatically retried. After updating, review and send the report again if you still want to share it. A preview report ID alone is not a delivery receipt.
Consent stays separate. Reports still require explicit Send. Sending a report does not turn on optional usage sharing, and updating does not change your model or optimizer settings.
Manual or Optimizer on. Two main choices replace the older control flow. Optimizer on can start a stopped provider and wait for verified readiness. Manual pauses automatic switching while the current model keeps serving.
Responsive controls. Model controls and a compact live optimizer panel load separately from historical charts. See the current comparison, proposed model and reason for staying or switching without waiting for the full history view.
Model-colored Pulse bars. Pulse opens on the last hour of confirmed inference earnings, colored by model. Inspect intervals, change the time range or choose a saved pace graph. The bars use elapsed time; the live meter keeps its separate warm-time pace.
Richer model comparisons. Manual choices show recorded earnings per warm hour, output size, historical demand over the next eight hours and conditional income estimates. Missing evidence stays unknown.
Credit and network history. Sort and filter confirmed credits by model or reward category. Compare model activity, completed network traffic and this Mac’s inference earnings over one hour to 30 days, without inventing model-level traffic or network revenue.
Your current local hour. Weekly traffic highlights the current hour in your timezone and offers a way back after you inspect another period.
More consistent optimizer evidence. Recent earnings comparisons align to completed minutes. Model evaluations distinguish receiving a payment from outperforming the alternative, with explicit review outcomes.
Multi-model continuity and release notes. Normal online/serving transitions no longer unnecessarily interrupt verified reporting sessions. Bundled What’s new notices explain changes in the installed build and can be reopened from Help & feedback.
Clearer daily totals. The earnings calendar adds color bands for confirmed daily amounts, while gaps remain visibly unknown.
Today’s outlook. A separate card combines confirmed earnings today with a conditional estimate through local midnight. Inference and base-reward estimates stay separate, follow the model filter and are withheld when evidence is insufficient.
Notification reliability. Prevented the notification helper from writing cache files inside the signed app bundle.
First-run readiness. Refined how optimizer setup distinguishes preparation from an enabled, verified-ready automatic run, while preserving saved plans, history and intentional pauses.
Current access. The access rules introduced in this version have since been superseded by beta26: the optimizer is included, with no activation step or scheduled expiration.
Multi-model pulses. Fixed matching for a Mac already serving three or more models. Live earnings and traffic can stay visible once the selected models are warm and fresh serving output is verified.
Monitor is optional. Live reporting no longer depends on Darkbloom Monitor or a successful optimizer-panel refresh. Its older history can still supplement reports.
Reporting is not portfolio optimization. The dashboard labels these setups Managed by Darkbloom. This did not add automatic optimization of three-plus-model portfolios, and missed live samples cannot be recreated.
Guarded runtime verification. Fixed a circular restriction where a model had to be advertised as currently selected before a manual switch could be attempted. Eligible M5 Macs gained an explicit verification path for supported downloaded models.
Safety checks retained. Manual attempts still check device identity, readiness and resources, then verify the new model. Automatic selection does not bypass eligibility checks, and manual switching pauses automation.
Current state versus previous commands. Separated provider readiness, prior command results and automatic-switching status so an old failure is not mistaken for the current state.
Configuration compatibility. Recognized Darkbloom’s standard memory-reserve setting without treating it as an unsupported custom configuration.
Intentional resumption. Made saved-plan review and resumption discoverable after an outside model change, preserving the model pool, settings and history. Resumption still requires a deliberate user choice.
Optional usage invitation. An eligible Mac can show a small invitation after setup. Share optional usage is an explicit choice; No thanks stays local.
Respecting your choice. Prior opt-outs, active sharing and pending deletion suppress the invitation. Relaunches and updates do not repeatedly ask, and phone users are not prompted to grant consent.
Start, stop and choose models. Added visible provider controls on the Mac and authenticated phone dashboard, with model-availability explanations and protection against duplicate or stale commands.
Authenticated model preparation. Added Mac-only setup for the local endpoint used to prepare models while retaining Darkbloom’s network connection. The control layout was later simplified in beta23 and beta25.
Native shortcuts. Added familiar Hide, Close Window, editing and Window-menu actions. Closing or hiding the window keeps Bloomkeeper’s monitoring running.
In-app problem reports. Added Report a problem on the Mac and private phone dashboard, plus optional prompts after certain persistent failures. Review a readable summary and exact contents before choosing Send.
Private by default. Notes and reply contact are optional. Detection and dismissal stay local; raw logs, credentials, private phone links and earnings are excluded from the automatic report fields.
Later delivery repair. Beta24 repaired a transport issue affecting delivery. A report that was never confirmed is not automatically recovered; review and resend it if needed.
Update preferences. Added update-check settings to setup and Help, including check status and errors. Optional checks run about every six hours while Bloomkeeper is open; downloading and installing still require approval.
Safer installation timing. Updates defer while model switching or warm-up is active, and a retry issue in the updater was corrected.
Connection clarity. Distinguished expired logins from network/API gaps and made phone setup recover more clearly from timeouts or uncertain replies.
Serving work can verify readiness. Fixed a race where work arriving during a warm-up check could be mistaken for a failed switch. Temporary busy states can be rechecked within the existing deadline.
More useful failure details. Separated the original switch failure from any recovery result, without treating every problem as a memory shortage or recommending routine cache cleanup.
Check for Updates. Added signed in-app update delivery, optional automatic checks and approval before installation and relaunch. Early beta5–7 installations need one manual replacement to gain the updater.
Help & feedback. Made support and reviewed diagnostics easier to reach from the Mac and phone. Opening a contact link does not send a message or report.
Local setup. Simplified the earlier optimizer setup process. Current users should follow beta26’s included-access policy and the latest setup guide.
Discover phone access and the optimizer at your pace
2 changes · view details
Optional feature tips. After about two hours of healthy monitoring, Bloomkeeper can introduce phone access and optimizer setup. Opening a suggestion does not start automation.
Snooze or dismiss. Postpone a tip for a day or dismiss it permanently. These preferences stay on your Mac, persist across updates and do not depend on usage sharing.
Opt in on your Mac. Added limited setup and feature-use reporting to help improve Bloomkeeper. Sharing starts off and is not required to use features.
Clear exclusions and deletion. Usage reports exclude earnings, account identifiers, prompts, raw logs and private phone URLs. Turning sharing off stops reports and requests deletion, with a visible pending state when offline.
Signed download. The first publicly downloadable Bloomkeeper beta was Developer ID signed and notarized by Apple, with a drag-to-Applications installer for Apple Silicon Macs on macOS 14 or later.
The core dashboard. Brought local earnings history, demand and hardware monitoring, manual model controls and optional optimization into one Mac app.
Private phone and multi-Mac access. Included guided first launch, customer-owned Tailscale phone access, My Macs reporting and a tester kit. Initial setup stays on the Mac; each Mac’s optimizer remains independent.