0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカルLLMを回したままMacのフタを閉じたくて、スリープを防ぐmacOSアプリを個人開発した

0
Posted at

きっかけ:フタを閉じるとローカルLLMが止まる

Mac(Apple Silicon)でローカルLLMを回すのが当たり前になってきました。Ollama や LM Studio、MLX で長時間の推論・学習・バッチ処理を流す。ところが困るのが、**「実行中にMacBookのフタを閉じると強制スリープしてジョブが止まる」**問題です。

外部ディスプレイをつなげばクラムシェルで動きますが、モニタもケーブルも無い外出先・就寝時はそうもいかない。「AIを回したまま、フタを閉じて持ち運びたい/放置したい」——この地味だけど切実な要求を満たすために、macOSアプリを個人開発しました。

なぜフタを閉じると寝てしまうのか

macOSは、外部ディスプレイを接続していない状態でフタを閉じると、システムレベルで強制スリープします(クラムシェルスリープ)。アプリ側の IOPMAssertioncaffeinate 相当)でアイドルスリープは防げますが、フタ閉じによる強制スリープはこれでは止まりません

低レベルで効くのが以下です。

sudo pmset -a disablesleep 1   # スリープ全体を無効化(フタ閉じでも起きたまま)
sudo pmset -a disablesleep 0   # 元に戻す

SleepDisabled 1 にすると、外部ディスプレイなし・電源なし(バッテリー駆動)でもフタを閉じたまま動作します。これがコアの仕組みです。

pmset 直叩きの問題点

ただ、これを手動運用するのはつらい。

  • オールオアナッシング:スリープ全体が無効。切り戻し(0)を忘れると電池が溶ける
  • sudo必須:毎回パスワード
  • フェイルセーフが無い:シェルが落ちても 1 のまま残る
  • タイマーが無い:「2時間だけ」ができない

そこで、この運用を安全にラップするアプリを作りました。

作ったもの:StayAwake Clamshell

  • 特権ヘルパー方式:初回だけ管理者パスワードで小さなヘルパーを設置。以降はメニューバーアプリからXPCで安全に disablesleep を切り替え(アプリ本体は非特権)
  • 自動復帰タイマー:10分〜8時間/無期限。指定時間で通常スリープへ自動復帰
  • バッテリー保護:残量が閾値(10〜30%)を下回ったら自動停止
  • フェイルセーフ:アプリがクラッシュ/終了してもヘルパーが接続断を検知して必ず通常スリープへ復元。「起きっぱなしで固まる」ことが無い
  • 完全オフライン:ライセンス検証はEd25519でローカル完結。ネットワーク通信は一切なし。Apple公証済み(macOS 13+ / Apple Silicon・Intel)

こんな使い方

  • Ollama / LM Studio で夜通し推論を回したままフタを閉じる
  • MLX の学習・ファインチューニングを継続したまま移動
  • 大量のバッチ推論や動画書き出し、長時間ダウンロードの完走

注意(放熱と電源)

フタを閉じると排熱が悪化します。高負荷を続けるときは電源に接続し、通気のよい固い面に置いてください(布団やクッションの上はNG)。バッテリーのみでも動きますが、当然消費は早いです。

配布

買い切り ¥1,500(台数無制限・オフライン認証)、7日間の無料トライアルつき。App Store はサンドボックスで pmset を叩けないため、直販のみです。

手動派の方は、上の pmset -a disablesleep 1 がすべての本質です。パッケージ版は「タイマー・バッテリー保護・フェイルセーフ・GUI」の手間を肩代わりするもの、という位置づけです。

※この記事はZennにも投稿しています: https://zenn.dev/mioshoten/articles/b4d401a31711a1

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?