LyraはmacOS 15.4以降向けのローカルファースト集中支援アプリです。タスク、Pomodoroタイマー、Codexが生成する制約付きChucK BGMをひとつのアプリにまとめています。
- 最大5つのムードを選び、それぞれの比重を調整してブレンドできます。
- レシピをもとにCodexが制約付きChucKを生成します。Rustの静的ポリシーに合格しなかった場合は、同じ生成スレッドで1回だけ修復します。
- 破棄可能でミュートされたWebChucK VMによる5秒間の音声検証を通過したDraftだけを、プレビューして
.ckとして保存できます。保存した曲はライブラリで管理・再生できます。
- Today、Inbox、Upcoming、Completedのビューに加え、プロジェクトとタグでタスクを整理できます。
- 1階層のサブタスク、予定日と期限、毎日・毎週・毎月の繰り返し、優先度、Pomodoro見積もりに対応しています。
- 取り組むタスクを選び、PomodoroタイマーとBGMを使った集中セッションを記録できます。
- タスクや集中履歴などはSQLite、生成した音楽はアプリが管理する
.ckファイルとしてローカルに保存します。 - 保存した音楽ソースはSHA-256で整合性を確認します。
- 音声はmacOSのシステムデフォルト出力へ再生します。
Lyraには、CodexからローカルのTodayまたはBacklogへタスクを追加するMCPサーバーが含まれます。まずリポジトリのルートでビルドします。
bun run mcp:build生成されるバイナリはtarget/debug/lyra-mcpです。絶対パスを使ってCodexへ登録し、登録結果を確認します。
codex mcp add lyra -- /absolute/path/to/Lyra/target/debug/lyra-mcp
codex mcp list同じホスト上のCodex App、CLI、IDE拡張はMCP設定を共有します。セットアップ後は、利用するCodex App、CLI、IDE拡張を再起動してください。詳しくはCodexのMCPドキュメントを参照してください。
たとえば、Codexへ次のように依頼できます。
LyraのTodayに「READMEを仕上げる」を2ポモドーロで追加して
Lyraに「次のリリースを計画する」をBacklogへ追加して
MCPが公開するadd_taskは、タイトルと追加先に加え、Pomodoro見積もり、優先度、プロジェクト、親タスク、メモ、予定日・期限、繰り返し、タグを任意で指定できます。MCP経由の一覧取得、編集、完了、削除は公開していません。
- macOS 15.4以降
- Bun 1.3.10
- Rust/Cargo(Nix利用時は
nix shell nixpkgs#cargo nixpkgs#rustc) - ローカルのCodex CLI
bun install --frozen-lockfilebun run app:devbun run verify
nix shell nixpkgs#cargo nixpkgs#rustc -c cargo test -p lyra-core -p lyra-desktop
bun run app:buildDesktop E2EはmacOSの実WKWebView上でE2E専用debug Tauri binaryをWebdriverIOから操作します。全体または個別specを実行できます。
bun run test:e2e
bun run --cwd apps/desktop test:e2e -- --spec e2e/specs/mock-ipc.e2e.ts
bun run --cwd apps/desktop test:e2e -- --spec e2e/specs/backend.e2e.ts各実行は一時的なLYRA_E2E_DATA_DIRを作成して終了時に削除します。失敗時のログとスクリーンショットはapps/desktop/e2e/artifacts/へ保存されます。
詳細はアーキテクチャ資料を参照してください。
音楽生成は、ムードのレシピをCodex App Serverへ渡し、閉じたJSONのchuckSourceを受け取ります。Rustが48KiB上限、UGen allowlist、seed、ループ、時間進行を静的検査し、必要なら1回だけ修復した後、クライアントが破棄可能でミュートされたWebChucK VMで5秒間検証します。合格したDraftだけをプレビューし、管理対象の.ck、SHA-256、SQLiteレコードとして保存します。
SQLiteと生成した.ckはapp.lyra.focusのApplication Support配下へ保存します。WebChucK JS/WASMと検証用Workletはアプリに同梱され、固定されたWebChucK JS/WASMアセットはViteのビルド設定でSHA-256を検証するため、音声実行時にこれらを外部ネットワークから取得しません。通常ビルドはシステムデフォルトへ出力し、E2Eビルドは最終ゲインを0にします。
外部サンプル、マイク入力、WebChugin、MIDI/HID/OSC、ファイル・ネットワークアクセス、自由プロンプト、生成コード編集、クラウド同期は対象外です。
