Reflection
While you sleep, Möbius learns from recent work, improves its own approach, anticipates what may help next, and leaves a one-page morning brief.
Reads offline
Runs daily
Reads other apps (read)
Install
Open the App Store mini-app in your Möbius shell and paste:
https://raw.githubusercontent.com/mobius-os/app-reflection/main/mobius.json
Möbius shows the requested permissions and the cron schedule, then installs.
Manifest
Show mobius.json
{
"id": "reflection",
"name": "Reflection",
"version": "2.8.1",
"description": "While you sleep, Möbius learns from recent work, improves its own approach, anticipates what may help next, and leaves a one-page morning brief.",
"author": "mobius-os",
"license": "MIT",
"homepage": "https://github.com/mobius-os/app-reflection",
"entry": "index.jsx",
"icon": "icon.png",
"offline_capable": true,
"permissions": {
"cross_app_access": "read",
"share_with_apps": "none",
"chat_log_access": "summary"
},
"storage_seeds": {
"settings.json": {
"hour": 6,
"minute": 0,
"timezone": null,
"cron": "0 6 * * *",
"exclude_apps": [],
"provider": null,
"model": null,
"primary_agent_mode": "system",
"secondary_agent_mode": "system",
"fallback_provider": null,
"fallback_model": null,
"verbosity": "standard",
"focus": null,
"avoid": null
}
},
"offline": {
"reads": true,
"writes": "queued",
"execution": "none",
"reads_detail": "The reports list, each opened brief body, and the streak/state are read through window.mobius.storage (list/getText/get), so they render offline from the runtime read-through cache. A brief opens offline after it has been opened once online (its body is mirrored on that read)."
},
"schedule": {
"default": "0 6 * * *",
"user_configurable": true,
"job": "fetch.sh"
},
"runtime": {
"imports": [
"react",
"react-dom"
],
"esm_deps": []
},
"embeds_agent": true,
"source_files": [
"reflection_runner.py",
"resource_monitor.py",
"constants.js",
"theme.js",
"domain.js",
"providers.js",
"storage.js",
"ui/ChatBubbleIcon.jsx",
"ui/ChatPanel.jsx",
"ui/ReportQuestions.jsx",
"ui/ReportDetail.jsx",
"ui/StreakBar.jsx",
"ui/ReportsList.jsx",
"ui/LastNightStatus.jsx",
"ui/EffortStepper.jsx",
"ui/ModelPicker.jsx",
"ui/SettingsTab.jsx"
]
}
Feedback
Something feel off, or want to suggest an iteration? Open an issue at app-reflection/issues — the app's maintainer reads them.