neoagent 2.3.1-beta.11 → 2.3.1-beta.111

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (390) hide show
  1. package/.env.example +53 -5
  2. package/README.md +16 -7
  3. package/com.neoagent.plist +1 -1
  4. package/docs/automation.md +82 -41
  5. package/docs/capabilities.md +85 -89
  6. package/docs/configuration.md +87 -94
  7. package/docs/getting-started.md +46 -27
  8. package/docs/hardware.md +1 -1
  9. package/docs/index.md +24 -30
  10. package/docs/integrations.md +46 -64
  11. package/docs/migration.md +41 -146
  12. package/docs/operations.md +23 -20
  13. package/docs/skills.md +20 -20
  14. package/docs/why-neoagent.md +15 -13
  15. package/extensions/chrome-browser/background.mjs +10 -2
  16. package/flutter_app/.metadata +42 -0
  17. package/flutter_app/DESIGN_SYSTEM.md +166 -0
  18. package/flutter_app/README.md +21 -0
  19. package/flutter_app/analysis_options.yaml +32 -0
  20. package/flutter_app/android/app/build.gradle.kts +111 -0
  21. package/flutter_app/android/app/src/debug/AndroidManifest.xml +7 -0
  22. package/flutter_app/android/app/src/main/AndroidManifest.xml +185 -0
  23. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/MainActivity.kt +888 -0
  24. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/auto/NeoAgentCarAppService.kt +114 -0
  25. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthConnectGateway.kt +280 -0
  26. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncNotifications.kt +113 -0
  27. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncPayload.kt +57 -0
  28. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncScheduler.kt +78 -0
  29. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncWorker.kt +253 -0
  30. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/PermissionsRationaleActivity.kt +46 -0
  31. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingBootReceiver.kt +21 -0
  32. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingForegroundService.kt +586 -0
  33. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingStateStore.kt +78 -0
  34. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingUploadClient.kt +104 -0
  35. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/telecom/NeoAgentConnection.kt +118 -0
  36. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/telecom/NeoAgentConnectionService.kt +86 -0
  37. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/AiHomeWidgetProvider.kt +457 -0
  38. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/AiWidgetStore.kt +194 -0
  39. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/VoiceLaunchWidgetProvider.kt +67 -0
  40. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetConfigActivity.kt +228 -0
  41. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetSyncScheduler.kt +72 -0
  42. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetSyncWorker.kt +186 -0
  43. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetTaskRunWorker.kt +210 -0
  44. package/flutter_app/android/app/src/main/res/drawable/launch_background.xml +12 -0
  45. package/flutter_app/android/app/src/main/res/drawable/neoagent_ai_widget_bg.xml +11 -0
  46. package/flutter_app/android/app/src/main/res/drawable/neoagent_ai_widget_task_bg.xml +8 -0
  47. package/flutter_app/android/app/src/main/res/drawable-v21/launch_background.xml +12 -0
  48. package/flutter_app/android/app/src/main/res/layout/neoagent_ai_widget.xml +138 -0
  49. package/flutter_app/android/app/src/main/res/layout/neoagent_ai_widget_task_row.xml +52 -0
  50. package/flutter_app/android/app/src/main/res/layout/neoagent_voice_widget.xml +49 -0
  51. package/flutter_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  52. package/flutter_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  53. package/flutter_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  54. package/flutter_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  55. package/flutter_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  56. package/flutter_app/android/app/src/main/res/values/arrays.xml +8 -0
  57. package/flutter_app/android/app/src/main/res/values/strings.xml +12 -0
  58. package/flutter_app/android/app/src/main/res/values/styles.xml +18 -0
  59. package/flutter_app/android/app/src/main/res/values-night/styles.xml +18 -0
  60. package/flutter_app/android/app/src/main/res/xml/automotive_app_desc.xml +4 -0
  61. package/flutter_app/android/app/src/main/res/xml/file_paths.xml +6 -0
  62. package/flutter_app/android/app/src/main/res/xml/neoagent_ai_widget_info.xml +12 -0
  63. package/flutter_app/android/app/src/main/res/xml/neoagent_voice_widget_info.xml +12 -0
  64. package/flutter_app/android/app/src/profile/AndroidManifest.xml +7 -0
  65. package/flutter_app/android/build.gradle.kts +24 -0
  66. package/flutter_app/android/ci-release.keystore +0 -0
  67. package/flutter_app/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  68. package/flutter_app/android/gradle.properties +3 -0
  69. package/flutter_app/android/key.properties +4 -0
  70. package/flutter_app/android/settings.gradle.kts +26 -0
  71. package/flutter_app/assets/branding/app_icon_1024.png +0 -0
  72. package/flutter_app/assets/branding/app_icon_128.png +0 -0
  73. package/flutter_app/assets/branding/app_icon_192.png +0 -0
  74. package/flutter_app/assets/branding/app_icon_256.png +0 -0
  75. package/flutter_app/assets/branding/app_icon_32.png +0 -0
  76. package/flutter_app/assets/branding/app_icon_512.png +0 -0
  77. package/flutter_app/assets/branding/app_icon_64.png +0 -0
  78. package/flutter_app/assets/branding/onboarding_intro.mp4 +0 -0
  79. package/flutter_app/assets/branding/tray_icon_template.png +0 -0
  80. package/flutter_app/lib/features/location/location_service.dart +117 -0
  81. package/flutter_app/lib/features/notifications/notification_interceptor.dart +73 -0
  82. package/flutter_app/lib/features/onboarding/onboarding_chrome.dart +571 -0
  83. package/flutter_app/lib/features/onboarding/onboarding_messaging_step.dart +275 -0
  84. package/flutter_app/lib/features/onboarding/onboarding_model_step.dart +366 -0
  85. package/flutter_app/lib/features/onboarding/onboarding_shell.dart +57 -0
  86. package/flutter_app/lib/features/onboarding/onboarding_video_step.dart +218 -0
  87. package/flutter_app/lib/features/onboarding/onboarding_welcome_step.dart +46 -0
  88. package/flutter_app/lib/main.dart +107 -0
  89. package/flutter_app/lib/main_account_settings.dart +1340 -0
  90. package/flutter_app/lib/main_admin.dart +900 -0
  91. package/flutter_app/lib/main_app_shell.dart +2162 -0
  92. package/flutter_app/lib/main_chat.dart +3902 -0
  93. package/flutter_app/lib/main_controller.dart +7229 -0
  94. package/flutter_app/lib/main_devices.dart +1738 -0
  95. package/flutter_app/lib/main_integrations.dart +917 -0
  96. package/flutter_app/lib/main_launcher.dart +959 -0
  97. package/flutter_app/lib/main_launcher_entry.dart +5 -0
  98. package/flutter_app/lib/main_models.dart +3807 -0
  99. package/flutter_app/lib/main_navigation.dart +206 -0
  100. package/flutter_app/lib/main_operations.dart +5249 -0
  101. package/flutter_app/lib/main_recordings.dart +920 -0
  102. package/flutter_app/lib/main_runtime.dart +869 -0
  103. package/flutter_app/lib/main_settings.dart +2288 -0
  104. package/flutter_app/lib/main_shared.dart +3393 -0
  105. package/flutter_app/lib/main_spacing.dart +33 -0
  106. package/flutter_app/lib/main_theme.dart +276 -0
  107. package/flutter_app/lib/main_unified.dart +388 -0
  108. package/flutter_app/lib/main_voice_assistant.dart +957 -0
  109. package/flutter_app/lib/src/analytics_service.dart +294 -0
  110. package/flutter_app/lib/src/android_apk_drop_zone.dart +32 -0
  111. package/flutter_app/lib/src/android_apk_drop_zone_stub.dart +16 -0
  112. package/flutter_app/lib/src/android_apk_drop_zone_web.dart +348 -0
  113. package/flutter_app/lib/src/android_app_installer.dart +22 -0
  114. package/flutter_app/lib/src/android_app_installer_io.dart +122 -0
  115. package/flutter_app/lib/src/android_app_installer_stub.dart +21 -0
  116. package/flutter_app/lib/src/android_auto_bridge.dart +59 -0
  117. package/flutter_app/lib/src/android_launcher_bridge.dart +239 -0
  118. package/flutter_app/lib/src/app_launch_bridge.dart +58 -0
  119. package/flutter_app/lib/src/app_release_updater.dart +511 -0
  120. package/flutter_app/lib/src/backend_client.dart +1870 -0
  121. package/flutter_app/lib/src/desktop_companion.dart +2 -0
  122. package/flutter_app/lib/src/desktop_companion_actions.dart +586 -0
  123. package/flutter_app/lib/src/desktop_companion_io.dart +538 -0
  124. package/flutter_app/lib/src/desktop_companion_stub.dart +59 -0
  125. package/flutter_app/lib/src/desktop_native_bridge.dart +91 -0
  126. package/flutter_app/lib/src/desktop_screen_capture.dart +21 -0
  127. package/flutter_app/lib/src/desktop_screen_capture_io.dart +142 -0
  128. package/flutter_app/lib/src/desktop_screen_capture_stub.dart +12 -0
  129. package/flutter_app/lib/src/diagnostics_logger.dart +119 -0
  130. package/flutter_app/lib/src/health_bridge.dart +136 -0
  131. package/flutter_app/lib/src/live_voice_capture.dart +85 -0
  132. package/flutter_app/lib/src/messaging_access_summary.dart +46 -0
  133. package/flutter_app/lib/src/network/app_http_client.dart +53 -0
  134. package/flutter_app/lib/src/network/app_http_client_factory.dart +6 -0
  135. package/flutter_app/lib/src/network/app_http_client_io.dart +138 -0
  136. package/flutter_app/lib/src/network/app_http_client_stub.dart +3 -0
  137. package/flutter_app/lib/src/network/app_http_client_web.dart +94 -0
  138. package/flutter_app/lib/src/oauth_launcher.dart +33 -0
  139. package/flutter_app/lib/src/oauth_launcher_io.dart +95 -0
  140. package/flutter_app/lib/src/oauth_launcher_stub.dart +33 -0
  141. package/flutter_app/lib/src/oauth_launcher_web.dart +107 -0
  142. package/flutter_app/lib/src/recording_bridge.dart +232 -0
  143. package/flutter_app/lib/src/recording_bridge_io.dart +1019 -0
  144. package/flutter_app/lib/src/recording_bridge_stub.dart +120 -0
  145. package/flutter_app/lib/src/recording_bridge_web.dart +689 -0
  146. package/flutter_app/lib/src/recording_payloads.dart +86 -0
  147. package/flutter_app/lib/src/theme/palette.dart +81 -0
  148. package/flutter_app/lib/src/web_app_update_monitor.dart +17 -0
  149. package/flutter_app/lib/src/web_app_update_monitor_stub.dart +24 -0
  150. package/flutter_app/lib/src/web_app_update_monitor_web.dart +123 -0
  151. package/flutter_app/lib/src/widget_bridge.dart +49 -0
  152. package/flutter_app/linux/CMakeLists.txt +128 -0
  153. package/flutter_app/linux/flutter/CMakeLists.txt +88 -0
  154. package/flutter_app/linux/flutter/generated_plugin_registrant.cc +47 -0
  155. package/flutter_app/linux/flutter/generated_plugin_registrant.h +15 -0
  156. package/flutter_app/linux/flutter/generated_plugins.cmake +32 -0
  157. package/flutter_app/linux/runner/CMakeLists.txt +26 -0
  158. package/flutter_app/linux/runner/main.cc +6 -0
  159. package/flutter_app/linux/runner/my_application.cc +144 -0
  160. package/flutter_app/linux/runner/my_application.h +18 -0
  161. package/flutter_app/linux/runner/resources/app_icon.png +0 -0
  162. package/flutter_app/macos/Flutter/Flutter-Debug.xcconfig +2 -0
  163. package/flutter_app/macos/Flutter/Flutter-Release.xcconfig +2 -0
  164. package/flutter_app/macos/Flutter/GeneratedPluginRegistrant.swift +48 -0
  165. package/flutter_app/macos/Podfile +42 -0
  166. package/flutter_app/macos/Podfile.lock +87 -0
  167. package/flutter_app/macos/Runner/AppDelegate.swift +576 -0
  168. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +68 -0
  169. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png +0 -0
  170. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png +0 -0
  171. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png +0 -0
  172. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png +0 -0
  173. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png +0 -0
  174. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png +0 -0
  175. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png +0 -0
  176. package/flutter_app/macos/Runner/Base.lproj/MainMenu.xib +342 -0
  177. package/flutter_app/macos/Runner/Configs/AppInfo.xcconfig +14 -0
  178. package/flutter_app/macos/Runner/Configs/Debug.xcconfig +2 -0
  179. package/flutter_app/macos/Runner/Configs/Release.xcconfig +2 -0
  180. package/flutter_app/macos/Runner/Configs/Warnings.xcconfig +13 -0
  181. package/flutter_app/macos/Runner/DebugProfile.entitlements +16 -0
  182. package/flutter_app/macos/Runner/Info.plist +36 -0
  183. package/flutter_app/macos/Runner/MainFlutterWindow.swift +19 -0
  184. package/flutter_app/macos/Runner/Release.entitlements +12 -0
  185. package/flutter_app/macos/Runner.xcodeproj/project.pbxproj +801 -0
  186. package/flutter_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  187. package/flutter_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +99 -0
  188. package/flutter_app/macos/Runner.xcworkspace/contents.xcworkspacedata +10 -0
  189. package/flutter_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  190. package/flutter_app/macos/RunnerTests/RunnerTests.swift +12 -0
  191. package/flutter_app/patch_strings.py +12 -0
  192. package/flutter_app/pubspec.lock +1256 -0
  193. package/flutter_app/pubspec.yaml +59 -0
  194. package/flutter_app/third_party/desktop_audio_capture/LICENSE +21 -0
  195. package/flutter_app/third_party/desktop_audio_capture/README.md +262 -0
  196. package/flutter_app/third_party/desktop_audio_capture/lib/audio_capture.dart +65 -0
  197. package/flutter_app/third_party/desktop_audio_capture/lib/config/mic_audio_config.dart +153 -0
  198. package/flutter_app/third_party/desktop_audio_capture/lib/config/system_adudio_config.dart +110 -0
  199. package/flutter_app/third_party/desktop_audio_capture/lib/mic/mic_audio_capture.dart +461 -0
  200. package/flutter_app/third_party/desktop_audio_capture/lib/model/audio_status.dart +91 -0
  201. package/flutter_app/third_party/desktop_audio_capture/lib/model/decibel_data.dart +106 -0
  202. package/flutter_app/third_party/desktop_audio_capture/lib/model/input_device_type.dart +219 -0
  203. package/flutter_app/third_party/desktop_audio_capture/lib/system/system_audio_capture.dart +336 -0
  204. package/flutter_app/third_party/desktop_audio_capture/linux/CMakeLists.txt +101 -0
  205. package/flutter_app/third_party/desktop_audio_capture/linux/audio_capture_plugin.cc +692 -0
  206. package/flutter_app/third_party/desktop_audio_capture/linux/include/audio_capture/audio_capture_plugin.h +35 -0
  207. package/flutter_app/third_party/desktop_audio_capture/linux/include/audio_capture/mic_capture_plugin.h +36 -0
  208. package/flutter_app/third_party/desktop_audio_capture/linux/include/desktop_audio_capture/audio_capture_plugin.h +32 -0
  209. package/flutter_app/third_party/desktop_audio_capture/linux/include/desktop_audio_capture/mic_capture_plugin.h +32 -0
  210. package/flutter_app/third_party/desktop_audio_capture/linux/mic_capture_plugin.cc +878 -0
  211. package/flutter_app/third_party/desktop_audio_capture/macos/Classes/AudioCapturePlugin.swift +27 -0
  212. package/flutter_app/third_party/desktop_audio_capture/macos/Classes/MicCapturePlugin.swift +1172 -0
  213. package/flutter_app/third_party/desktop_audio_capture/macos/Classes/SystemCapturePlugin.swift +655 -0
  214. package/flutter_app/third_party/desktop_audio_capture/macos/Resources/PrivacyInfo.xcprivacy +12 -0
  215. package/flutter_app/third_party/desktop_audio_capture/macos/desktop_audio_capture.podspec +30 -0
  216. package/flutter_app/third_party/desktop_audio_capture/pubspec.yaml +87 -0
  217. package/flutter_app/third_party/desktop_audio_capture/windows/CMakeLists.txt +105 -0
  218. package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin.cpp +80 -0
  219. package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin.h +31 -0
  220. package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin_c_api.cpp +12 -0
  221. package/flutter_app/third_party/desktop_audio_capture/windows/include/audio_capture/audio_capture_plugin_c_api.h +23 -0
  222. package/flutter_app/third_party/desktop_audio_capture/windows/include/desktop_audio_capture/audio_capture_plugin.h +25 -0
  223. package/flutter_app/third_party/desktop_audio_capture/windows/mic_capture_plugin.cpp +1117 -0
  224. package/flutter_app/third_party/desktop_audio_capture/windows/mic_capture_plugin.h +115 -0
  225. package/flutter_app/third_party/desktop_audio_capture/windows/system_audio_capture_plugin.cpp +777 -0
  226. package/flutter_app/third_party/desktop_audio_capture/windows/system_audio_capture_plugin.h +87 -0
  227. package/flutter_app/third_party/flutter_secure_storage_linux/linux/CMakeLists.txt +30 -0
  228. package/flutter_app/third_party/flutter_secure_storage_linux/linux/flutter_secure_storage_linux_plugin.cc +215 -0
  229. package/flutter_app/third_party/flutter_secure_storage_linux/linux/include/flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h +27 -0
  230. package/flutter_app/third_party/flutter_secure_storage_linux/pubspec.yaml +20 -0
  231. package/flutter_app/tool/generate_desktop_branding.py +219 -0
  232. package/flutter_app/web/favicon.png +0 -0
  233. package/flutter_app/web/favicon.svg +12 -0
  234. package/flutter_app/web/icons/Icon-192.png +0 -0
  235. package/flutter_app/web/icons/Icon-512.png +0 -0
  236. package/flutter_app/web/icons/Icon-maskable-192.png +0 -0
  237. package/flutter_app/web/icons/Icon-maskable-512.png +0 -0
  238. package/flutter_app/web/index.html +39 -0
  239. package/flutter_app/web/manifest.json +35 -0
  240. package/flutter_app/windows/CMakeLists.txt +108 -0
  241. package/flutter_app/windows/flutter/CMakeLists.txt +109 -0
  242. package/flutter_app/windows/flutter/generated_plugin_registrant.cc +50 -0
  243. package/flutter_app/windows/flutter/generated_plugin_registrant.h +15 -0
  244. package/flutter_app/windows/flutter/generated_plugins.cmake +36 -0
  245. package/flutter_app/windows/runner/CMakeLists.txt +41 -0
  246. package/flutter_app/windows/runner/Runner.rc +121 -0
  247. package/flutter_app/windows/runner/flutter_window.cpp +533 -0
  248. package/flutter_app/windows/runner/flutter_window.h +37 -0
  249. package/flutter_app/windows/runner/main.cpp +53 -0
  250. package/flutter_app/windows/runner/resource.h +16 -0
  251. package/flutter_app/windows/runner/resources/app_icon.ico +0 -0
  252. package/flutter_app/windows/runner/runner.exe.manifest +14 -0
  253. package/flutter_app/windows/runner/utils.cpp +65 -0
  254. package/flutter_app/windows/runner/utils.h +19 -0
  255. package/flutter_app/windows/runner/win32_window.cpp +299 -0
  256. package/flutter_app/windows/runner/win32_window.h +102 -0
  257. package/lib/install_helpers.js +31 -0
  258. package/lib/manager.js +579 -122
  259. package/package.json +10 -3
  260. package/runtime/paths.js +137 -0
  261. package/server/config/analytics.js +30 -0
  262. package/server/db/database.js +296 -22
  263. package/server/guest-agent.android.package.json +13 -0
  264. package/server/guest-agent.browser.package.json +14 -0
  265. package/server/guest_agent.js +98 -52
  266. package/server/http/middleware.js +5 -2
  267. package/server/http/routes.js +3 -0
  268. package/server/http/static.js +41 -1
  269. package/server/index.js +15 -16
  270. package/server/public/.last_build_id +1 -1
  271. package/server/public/assets/AssetManifest.bin +1 -1
  272. package/server/public/assets/AssetManifest.bin.json +1 -1
  273. package/server/public/assets/AssetManifest.json +1 -1
  274. package/server/public/assets/NOTICES +644 -155
  275. package/server/public/assets/assets/branding/onboarding_intro.mp4 +0 -0
  276. package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
  277. package/server/public/assets/packages/mixpanel_flutter/assets/mixpanel.js +3 -0
  278. package/server/public/canvaskit/wimp.wasm +0 -0
  279. package/server/public/flutter_bootstrap.js +2 -2
  280. package/server/public/main.dart.js +96067 -88139
  281. package/server/routes/account.js +26 -1
  282. package/server/routes/agents.js +6 -2
  283. package/server/routes/android.js +22 -6
  284. package/server/routes/auth.js +25 -5
  285. package/server/routes/browser.js +47 -13
  286. package/server/routes/integrations.js +22 -1
  287. package/server/routes/memory.js +168 -6
  288. package/server/routes/runtime.js +14 -0
  289. package/server/routes/settings.js +102 -24
  290. package/server/routes/skills.js +12 -0
  291. package/server/routes/social_video.js +66 -0
  292. package/server/routes/tasks.js +22 -2
  293. package/server/routes/triggers.js +44 -35
  294. package/server/routes/wearable.js +67 -0
  295. package/server/routes/widgets.js +4 -4
  296. package/server/services/ai/capabilityHealth.js +23 -51
  297. package/server/services/ai/compaction.js +1 -1
  298. package/server/services/ai/deliverables/artifact_helpers.js +190 -0
  299. package/server/services/ai/deliverables/contracts.js +113 -0
  300. package/server/services/ai/deliverables/index.js +20 -0
  301. package/server/services/ai/deliverables/selector.js +94 -0
  302. package/server/services/ai/deliverables/validator.js +63 -0
  303. package/server/services/ai/deliverables/workflows.js +207 -0
  304. package/server/services/ai/engine.js +363 -27
  305. package/server/services/ai/hooks.js +127 -0
  306. package/server/services/ai/integrated_tools/index.js +98 -0
  307. package/server/services/ai/integrated_tools/remotion.js +373 -0
  308. package/server/services/ai/integrated_tools/shared.js +204 -0
  309. package/server/services/ai/integrated_tools/slidev.js +207 -0
  310. package/server/services/ai/loopPolicy.js +146 -0
  311. package/server/services/ai/models.js +31 -4
  312. package/server/services/ai/providers/claudeCode.js +49 -0
  313. package/server/services/ai/providers/openai.js +2 -1
  314. package/server/services/ai/providers/openaiCodex.js +422 -15
  315. package/server/services/ai/recordingInsights.js +11 -13
  316. package/server/services/ai/runEvents.js +100 -0
  317. package/server/services/ai/settings.js +12 -2
  318. package/server/services/ai/systemPrompt.js +15 -1
  319. package/server/services/ai/taskAnalysis.js +2 -0
  320. package/server/services/ai/toolResult.js +20 -0
  321. package/server/services/ai/toolRunner.js +46 -6
  322. package/server/services/ai/toolSelector.js +54 -1
  323. package/server/services/ai/tools.js +210 -116
  324. package/server/services/android/android_bootstrap_worker.js +63 -0
  325. package/server/services/android/controller.js +442 -1760
  326. package/server/services/bootstrap_helpers.js +0 -34
  327. package/server/services/browser/controller.js +279 -49
  328. package/server/services/cli/executor.js +40 -1
  329. package/server/services/desktop/screenRecorder.js +65 -9
  330. package/server/services/integrations/figma/provider.js +1 -0
  331. package/server/services/integrations/github/provider.js +3 -3
  332. package/server/services/integrations/google/provider.js +1 -0
  333. package/server/services/integrations/manager.js +25 -5
  334. package/server/services/integrations/microsoft/provider.js +1 -0
  335. package/server/services/integrations/oauth_provider.js +15 -5
  336. package/server/services/integrations/provider_config_store.js +22 -13
  337. package/server/services/integrations/registry.js +2 -4
  338. package/server/services/integrations/spotify/provider.js +1 -0
  339. package/server/services/integrations/trello/provider.js +842 -0
  340. package/server/services/manager.js +88 -155
  341. package/server/services/mcp/client.js +120 -23
  342. package/server/services/memory/llm_transfer.js +218 -0
  343. package/server/services/memory/manager.js +260 -33
  344. package/server/services/messaging/access_policy.js +10 -0
  345. package/server/services/messaging/automation.js +1 -1
  346. package/server/services/messaging/manager.js +64 -1
  347. package/server/services/messaging/meshtastic.js +277 -0
  348. package/server/services/messaging/meshtastic_env.js +40 -0
  349. package/server/services/messaging/meshtastic_protocol.js +530 -0
  350. package/server/services/messaging/meshtastic_tcp_transport.js +25 -0
  351. package/server/services/runtime/backends/local-vm.js +221 -158
  352. package/server/services/runtime/docker-vm-manager.js +392 -0
  353. package/server/services/runtime/guest_bootstrap.js +654 -0
  354. package/server/services/runtime/manager.js +85 -29
  355. package/server/services/runtime/settings.js +22 -31
  356. package/server/services/runtime/validation.js +16 -31
  357. package/server/services/social_video/adapters/base.js +26 -0
  358. package/server/services/social_video/adapters/index.js +27 -0
  359. package/server/services/social_video/adapters/instagram.js +17 -0
  360. package/server/services/social_video/adapters/tiktok.js +17 -0
  361. package/server/services/social_video/adapters/x.js +17 -0
  362. package/server/services/social_video/adapters/youtube.js +17 -0
  363. package/server/services/social_video/captions.js +187 -0
  364. package/server/services/social_video/frame.js +42 -0
  365. package/server/services/social_video/index.js +7 -0
  366. package/server/services/social_video/metadata.js +63 -0
  367. package/server/services/social_video/result.js +63 -0
  368. package/server/services/social_video/service.js +720 -0
  369. package/server/services/social_video/url.js +83 -0
  370. package/server/services/tasks/integration_runtime.js +1 -1
  371. package/server/services/tasks/runtime.js +1 -1
  372. package/server/services/tasks/task_repository.js +3 -6
  373. package/server/services/voice/openaiSpeech.js +6 -1
  374. package/server/services/voice/providers.js +142 -14
  375. package/server/services/voice/runtime.js +8 -8
  376. package/server/services/voice/runtimeManager.js +156 -19
  377. package/server/services/voice/turnRunner.js +29 -9
  378. package/server/services/wearable/firmware_manifest.js +353 -0
  379. package/server/services/wearable/gateway.js +350 -0
  380. package/server/services/wearable/protocol.js +45 -0
  381. package/server/services/wearable/service.js +240 -0
  382. package/server/services/websocket.js +3 -1
  383. package/server/services/widgets/focus_widget.js +137 -0
  384. package/server/services/widgets/service.js +133 -2
  385. package/server/services/workspace/manager.js +301 -0
  386. package/server/utils/deployment.js +16 -9
  387. package/server/services/integrations/home_assistant/provider.js +0 -630
  388. package/server/services/messaging/access_policy.test.js +0 -228
  389. package/server/services/runtime/backends/host.js +0 -37
  390. package/server/services/runtime/qemu.js +0 -391
package/.env.example CHANGED
@@ -4,7 +4,8 @@
4
4
 
5
5
  PORT=3333
6
6
  NODE_ENV=production
7
- SESSION_SECRET=change-this-to-a-random-secret-in-production
7
+ # Auto-generated on first start or setup if left blank.
8
+ SESSION_SECRET=
8
9
 
9
10
  # Optional: dedicated key for encrypting local at-rest secrets (for example API_KEYS.json).
10
11
  # If unset, encryption falls back to SESSION_SECRET.
@@ -23,7 +24,11 @@ NEOAGENT_DEPLOYMENT_MODE=self_hosted
23
24
  # Deployment profile:
24
25
  # private -> single-user / trusted host runtime
25
26
  # prod -> multi-user / isolated per-user VM runtime
26
- NEOAGENT_PROFILE=private
27
+ NEOAGENT_PROFILE=prod
28
+
29
+ # Allow new user sign-ups. Set to false to disable registration (the first user
30
+ # can always register regardless of this setting).
31
+ # NEOAGENT_ALLOW_SIGNUP=false
27
32
 
28
33
  # VM runtime settings used by `prod`.
29
34
  # Set these before switching NEOAGENT_PROFILE=prod.
@@ -38,9 +43,8 @@ NEOAGENT_VM_BASE_IMAGE=
38
43
 
39
44
  # The guest image must boot a Linux guest that runs `npm run start:guest-agent`
40
45
  # and exposes the guest agent on port 8421.
41
- # Replace this placeholder before using NEOAGENT_PROFILE=prod.
42
- # Example: openssl rand -hex 32
43
- NEOAGENT_VM_GUEST_TOKEN=change-this-guest-token-before-prod
46
+ # Auto-generated on first start or setup if left blank.
47
+ NEOAGENT_VM_GUEST_TOKEN=
44
48
  NEOAGENT_VM_MEMORY_MB=4096
45
49
  NEOAGENT_VM_CPUS=2
46
50
 
@@ -51,6 +55,15 @@ NEOAGENT_RELEASE_CHANNEL=stable
51
55
  # Example: http://localhost:3333,https://yourdomain.com
52
56
  ALLOWED_ORIGINS=
53
57
 
58
+ ########################################
59
+ # Analytics
60
+ ########################################
61
+
62
+ # Mixpanel project token used by the Flutter app.
63
+ # Leave this blank to disable analytics, or set your own public project token.
64
+ # Keep the token below if you want to support the development of NeoAgent with anonymous usage analytics.
65
+ NEOAGENT_MIXPANEL_TOKEN=4a47ae6a05cf39a8faf0438a1200dde6
66
+
54
67
  ########################################
55
68
  # Service email
56
69
  ########################################
@@ -98,6 +111,21 @@ GOOGLE_AI_KEY=your-google-ai-key-here
98
111
  # • MiniMax-M2.7 via the Anthropic-compatible MiniMax endpoint
99
112
  MINIMAX_API_KEY=your-minimax-api-key-here
100
113
 
114
+ # GitHub Copilot OAuth token — used for:
115
+ # • Copilot-backed chat/coding models (gpt-5.3, gpt-4.1)
116
+ # Set via: neoagent login github-copilot
117
+ GITHUB_COPILOT_ACCESS_TOKEN=
118
+
119
+ # OpenAI Codex access token — used for:
120
+ # • Codex-backed chat/coding models (gpt-5.5, gpt-5.4, gpt-5.4-mini)
121
+ # Regular OpenAI API-key usage should use OPENAI_API_KEY and the normal OpenAI provider.
122
+ OPENAI_CODEX_ACCESS_TOKEN=
123
+ # Optional refresh token if your login flow returns it.
124
+ OPENAI_CODEX_REFRESH_TOKEN=
125
+ # Optional: ChatGPT account ID for the chatgpt-account-id header.
126
+ # If not set, it is auto-decoded from the JWT in OPENAI_CODEX_ACCESS_TOKEN.
127
+ # OPENAI_CODEX_ACCOUNT_ID=
128
+
101
129
  ########################################
102
130
  # Provider endpoint overrides
103
131
  ########################################
@@ -105,6 +133,10 @@ MINIMAX_API_KEY=your-minimax-api-key-here
105
133
  # OPENAI_BASE_URL=https://your-openai-compatible-endpoint/v1
106
134
  # ANTHROPIC_BASE_URL=https://your-anthropic-compatible-endpoint
107
135
  # XAI_BASE_URL=https://api.x.ai/v1
136
+ # OPENAI_CODEX_BASE_URL=https://chatgpt.com/backend-api/codex
137
+ # OPENAI_CODEX_EDITOR_VERSION=vscode/1.99.0
138
+ # OPENAI_CODEX_EDITOR_PLUGIN_VERSION=neoagent/1.0.0
139
+ # OPENAI_CODEX_USER_AGENT=NeoAgent/1.0.0
108
140
 
109
141
  ########################################
110
142
  # Official integrations
@@ -152,6 +184,17 @@ GITHUB_OAUTH_CLIENT_ID=your-github-oauth-client-id
152
184
  GITHUB_OAUTH_CLIENT_SECRET=your-github-oauth-client-secret
153
185
  GITHUB_OAUTH_REDIRECT_URI=
154
186
 
187
+ # Spotify official integration OAuth client.
188
+ # Redirect URI should match <PUBLIC_URL>/api/integrations/oauth/callback.
189
+ SPOTIFY_OAUTH_CLIENT_ID=your-spotify-oauth-client-id
190
+ SPOTIFY_OAUTH_CLIENT_SECRET=your-spotify-oauth-client-secret
191
+ SPOTIFY_OAUTH_REDIRECT_URI=
192
+
193
+ # Trello official integration API key.
194
+ # This is used for Trello account connections in Official Integrations.
195
+ # Users still connect their own Trello account token per agent in the UI.
196
+ TRELLO_API_KEY=your-trello-api-key
197
+
155
198
  ########################################
156
199
  # Tools and media services
157
200
  ########################################
@@ -176,8 +219,13 @@ DEEPGRAM_LANGUAGE=multi
176
219
 
177
220
  OLLAMA_URL=http://localhost:11434
178
221
 
222
+ # Local screen OCR capture (macOS desktop context recorder).
223
+ # Set to false to disable background screen capture/OCR polling.
224
+ NEOAGENT_SCREEN_RECORDER_ENABLED=true
225
+
179
226
  ########################################
180
227
  # Messaging and voice integrations
181
228
  ########################################
182
229
 
230
+ MESHTASTIC_ENABLED=true
183
231
  TELNYX_WEBHOOK_TOKEN=
package/README.md CHANGED
@@ -9,28 +9,37 @@
9
9
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-a855f7?style=flat-square" alt="License"></a>
10
10
  </p>
11
11
 
12
- <p align="center">A self-hosted, proactive AI agent with a Flutter client for web and Android.</p>
12
+ <p align="center">Self-hosted AI agent runs as a system service, controls Android over ADB, connects to 15+ messaging platforms, all credentials on your server.</p>
13
+
14
+ <p align="center">
15
+ <img src="demo.gif" alt="NeoAgent demo" width="100%">
16
+ </p>
13
17
 
14
18
  | | | | |
15
19
  | --- | --- | --- | --- |
16
20
  | <img alt="WebUI" src="https://github.com/user-attachments/assets/3c76d59a-b6e3-4698-929b-9c94741ccf1e" height="420"> | <img height="494" alt="Android" src="https://github.com/user-attachments/assets/e8a0af7a-6881-485d-ad52-f3bc6f2023ca"> | <img alt="Mobile Telegram" src="https://github.com/user-attachments/assets/1fd41a9b-5452-4aa4-9478-888c8ad7363a" height="420"> | <img height="494" alt="image" src="https://github.com/user-attachments/assets/d5a57282-0851-4902-9588-d8de4b82d45c"> |
17
21
 
18
-
22
+ - **Android control** — screenshot, observe UI, tap, swipe, type, launch apps, install APKs, `adb shell` — the agent operates Android, not just an app running on it
23
+ - **15+ messaging platforms** — Telegram, WhatsApp, Discord, Signal, Slack, Matrix, iMessage, IRC, LINE, Mattermost, Telnyx Voice
24
+ - **Integrations** — Google Workspace, Microsoft 365, Notion, Home Assistant, Trello, Spotify, Figma
25
+ - **Browser + shell** — VM-isolated server-side browser automation, full PTY terminal
26
+ - **Runs locally** — Ollama support, no API key required; credentials stay in `~/.neoagent/.env`, never in the client
19
27
 
20
28
  ## Install
21
29
 
30
+ Requires Node.js 20+ and QEMU — see [getting started](docs/getting-started.md) for details.
31
+
22
32
  ```bash
23
33
  npm install -g neoagent
24
34
  neoagent install
25
-
26
- neoagent migrate
27
35
  ```
28
36
 
29
- ## Manage the Service
37
+ Opens at **http://localhost:3333** when complete. Runs as a `launchd` user service on macOS and `systemd --user` on Linux.
38
+
39
+ ## Manage
30
40
 
31
41
  ```bash
32
42
  neoagent status
33
- neoagent channel beta
34
43
  neoagent update
35
44
  neoagent fix
36
45
  neoagent logs
@@ -38,7 +47,7 @@ neoagent logs
38
47
 
39
48
  ## Links
40
49
 
41
- [Docs](https://neolabs-systems.github.io/NeoAgent/docs/) | [Homepage](https://neolabs-systems.github.io/NeoAgent/) | [Issues](https://github.com/NeoLabs-Systems/NeoAgent/issues)
50
+ [Docs](https://neolabs-systems.github.io/NeoAgent/docs/) | [Getting Started](docs/getting-started.md) | [Configuration](docs/configuration.md) | [Capabilities](docs/capabilities.md) | [Why NeoAgent](docs/why-neoagent.md) | [Issues](https://github.com/NeoLabs-Systems/NeoAgent/issues)
42
51
 
43
52
  ---
44
53
 
@@ -17,7 +17,7 @@
17
17
  <key>EnvironmentVariables</key>
18
18
  <dict>
19
19
  <key>PATH</key>
20
- <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
20
+ <string>/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
21
21
  <key>HOME</key>
22
22
  <string>__HOME__</string>
23
23
  <key>NODE_ENV</key>
@@ -1,53 +1,94 @@
1
1
  # Automation
2
2
 
3
- NeoAgent is built for proactive work: tasks that run later, repeat on a schedule, use tools, and notify you when there is something useful to report.
3
+ Tasks run on a schedule or integration trigger, use the same tools as chat, and can deliver results through any connected messaging platform.
4
4
 
5
- ## Tasks
5
+ ## Creating a Task
6
6
 
7
- Use the **Tasks** section in the UI to create automations. Tasks can be time-based (Cron) or integration-triggered (for example email, messaging, and weather-event triggers). A task has:
7
+ Open **Tasks** in the UI and fill in:
8
8
 
9
- | Field | Purpose |
9
+ | Field | Description |
10
10
  |---|---|
11
- | Name | Human-readable task label |
12
- | Cron expression | Five-field cron schedule |
13
- | Prompt | Self-contained instruction for the future run |
14
- | Enabled state | Active or paused |
15
- | Model override | Optional model for this task |
11
+ | **Name** | Human-readable label |
12
+ | **Cron** | Five-field schedule expression |
13
+ | **Prompt** | Self-contained instruction for the future run |
14
+ | **Enabled** | Active or paused |
15
+ | **Model** | Optional per-task model override |
16
16
 
17
- Scheduled prompts should include the condition for notifying you. For example, ask NeoAgent to message you only when a monitored thing changes, fails, or needs attention.
17
+ ## Cron Expressions
18
18
 
19
- ## Tool Capabilities
19
+ ```
20
+ ┌───── minute (0–59)
21
+ │ ┌──── hour (0–23)
22
+ │ │ ┌─── day of month (1–31)
23
+ │ │ │ ┌── month (1–12)
24
+ │ │ │ │ ┌─ day of week (0–7, both 0 and 7 = Sunday)
25
+ │ │ │ │ │
26
+ * * * * *
27
+ ```
20
28
 
21
- Automation can use the same tool surface as normal chat runs:
29
+ Common patterns:
30
+
31
+ | Expression | Runs |
32
+ |---|---|
33
+ | `0 9 * * *` | Daily at 9:00 AM |
34
+ | `0 9 * * 1-5` | Weekdays at 9:00 AM |
35
+ | `0 8 * * 1` | Every Monday at 8:00 AM |
36
+ | `0 18 * * 5` | Every Friday at 6:00 PM |
37
+ | `0 9 1 * *` | First of every month at 9:00 AM |
38
+ | `0 */4 * * *` | Every 4 hours |
39
+ | `*/30 * * * *` | Every 30 minutes |
40
+
41
+ ## Writing Good Task Prompts
42
+
43
+ Prompts run unattended. Be specific about what to check and when to notify — tasks that always send a message become noise, tasks that only notify on a condition are useful.
44
+
45
+ **Daily news digest**
46
+ ```
47
+ Search Hacker News for the top 5 stories today. Send me a brief summary of each via Telegram, including the title and link.
48
+ ```
49
+
50
+ **Price monitor**
51
+ ```
52
+ Check the price of Bitcoin and Ethereum on CoinGecko. If either has changed more than 5% in the last 24 hours, send me a Telegram message with the current prices and percentage change. If there are no significant changes, do nothing.
53
+ ```
54
+
55
+ **Server health check**
56
+ ```
57
+ Run `df -h` and `free -m`. If disk usage on any partition is above 85% or available memory is below 500MB, send me a Telegram alert with the details. Otherwise do nothing.
58
+ ```
59
+
60
+ **Weekly email digest**
61
+ ```
62
+ Search my Gmail for unread emails from the last 7 days. Group them by sender domain and summarize the main topics. Send the summary to my Telegram.
63
+ ```
64
+
65
+ ## Tool Access
66
+
67
+ Automation can use everything available in chat:
22
68
 
23
69
  | Capability | Examples |
24
70
  |---|---|
25
- | Browser | Navigate, click, type, extract page content, take screenshots, evaluate page JavaScript |
26
- | Files | Read, write, search, and summarize host files through skills |
27
- | CLI | Run shell commands in a persistent terminal through skills |
28
- | Memory | Store durable facts and retrieve useful context |
29
- | Messaging | Send a proactive result through a connected platform |
30
- | MCP | Use tools exposed by configured remote MCP servers |
31
- | Official integrations | Use structured OAuth-backed app tools where available |
32
- | Recordings | List, open, and search recording transcripts |
33
- | Health | Read synced Android Health Connect metrics as summaries |
34
- | Android | Drive a server-attached emulator or device through UI and ADB tools |
35
- | Subagents | Spawn async helper agents inside a longer run |
36
- | Outputs | Generate artifacts, Grok images, Mermaid graphs, and markdown tables |
37
-
38
- Prefer official integrations and structured MCP tools over browser automation when both can answer the task. They are usually less brittle and easier to audit.
39
-
40
- See [Capabilities](capabilities.md) for the broader tool inventory.
41
-
42
- ## Safety Expectations
43
-
44
- NeoAgent runs on your server and can touch real files, messaging surfaces, browser sessions, and connected services. Keep scheduled prompts narrow and self-contained.
45
-
46
- For sensitive automations:
47
-
48
- - Use allowlists for messaging platforms.
49
- - Keep secrets in server config, not prompts or skills.
50
- - Prefer read-only checks unless the task explicitly needs to mutate data.
51
- - Ask for notification only when a condition is met to avoid noisy repeated messages.
52
- - Review run history in **Runs** and service logs in **Logs** when behavior is surprising.
53
- - Remember that browser, CLI, Android runtime, and local file tools run on the NeoAgent server or configured worker, not necessarily on your current laptop.
71
+ | **Browser** | Navigate, extract content, screenshot, evaluate JavaScript |
72
+ | **CLI** | Shell commands in a persistent terminal |
73
+ | **Files** | Read, write, search host files |
74
+ | **Memory** | Store and retrieve long-term facts |
75
+ | **Messaging** | Send results through any connected platform |
76
+ | **MCP** | Tools from configured remote MCP servers |
77
+ | **Integrations** | Gmail, Calendar, Notion, Slack, and other OAuth tools |
78
+ | **Recordings** | Search and read transcripts |
79
+ | **Health** | Read synced Android Health Connect metrics |
80
+ | **Android** | Control an emulator or device |
81
+ | **Subagents** | Spawn parallel helpers inside a longer run |
82
+ | **Outputs** | Artifacts, images, Mermaid graphs, markdown tables |
83
+
84
+ Prefer official integrations and MCP tools over browser automation when both can do the job they are more reliable and easier to audit.
85
+
86
+ ## Safety
87
+
88
+ NeoAgent runs on your server and can touch real files, messaging surfaces, connected accounts, and browser sessions. Keep prompts narrow.
89
+
90
+ - Use messaging allowlists to restrict which chats receive automated messages
91
+ - Keep secrets in server config, not in prompts or skill files
92
+ - Prefer read-only checks unless the task explicitly needs to write data
93
+ - Review run history in **Runs** and service logs in **Logs** when behavior is unexpected
94
+ - Browser, CLI, Android, and file tools run on the NeoAgent server — not necessarily your current laptop
@@ -1,122 +1,118 @@
1
1
  # Capabilities
2
2
 
3
- This page lists the product surfaces that are easy to miss from the short README. It is based on the current server routes, agent tool registry, Flutter sections, Android bridge code, and integration providers in this repository.
3
+ NeoAgent can operate real software on the machine it runs on a browser, Android emulators and devices, and a terminal. It connects to your accounts, remembers context across sessions, and runs scheduled automations without you being present.
4
4
 
5
5
  ## Operator UI
6
6
 
7
- The Flutter client exposes the main operator surfaces:
8
-
9
- | Section | What it is for |
7
+ | Section | What it's for |
10
8
  |---|---|
11
- | Chat | Normal agent runs with tools, memory, integrations, and messaging |
12
- | Runs | Live and historical run steps, including browser, Android, CLI, messaging, tasks, MCP, and subagent work |
13
- | Logs | Service logs and diagnostics from the server you are connected to |
14
- | Tasks | Schedule-triggered and integration-triggered automations |
15
- | Skills | Built-in and custom reusable workflows |
16
- | Integrations | OAuth account connections for structured app tools |
17
- | MCP | Remote MCP server registration and tool discovery |
18
- | Memory | Long-term memory, core memory, and session search |
19
- | Devices | Server-side browser and Android runtime controls |
20
- | Recordings | Recording sessions, transcripts, segments, and playback |
21
- | Health | Android Health Connect sync status and synced metrics |
22
- | Settings | AI providers, model routing, runtime settings, messaging, and service controls |
23
-
24
- ## Recordings
9
+ | **Chat** | Interactive agent runs with full tool access, memory, integrations, and messaging |
10
+ | **Runs** | Live and historical step-by-step execution browser, Android, CLI, messaging, tasks, MCP, subagents |
11
+ | **Tasks** | Schedule-triggered and integration-triggered automations |
12
+ | **Skills** | Built-in and custom reusable workflows |
13
+ | **Integrations** | OAuth account connections for structured app tools |
14
+ | **MCP** | Remote MCP server registration and tool discovery |
15
+ | **Memory** | Long-term memory, core facts, and session search |
16
+ | **Devices** | Server-side browser and Android runtime controls |
17
+ | **Recordings** | Audio sessions, transcripts, segment playback, AI insights |
18
+ | **Health** | Android Health Connect sync status and synced metrics |
19
+ | **Settings** | AI providers, model routing, runtime settings, messaging credentials |
20
+ | **Logs** | Service logs and diagnostics |
25
21
 
26
- NeoAgent records audio as server-side sessions with one or more sources. The web client can record browser microphone and screen audio, and the Android app can record phone microphone audio through a foreground service.
27
-
28
- Recording sessions support:
22
+ ## Agent Tools
29
23
 
30
- - Chunked uploads with per-source sequence checks.
31
- - Sources, chunks, transcript segments, session status, and playback URLs.
32
- - Statuses for recording, processing, completed, failed, and cancelled sessions.
33
- - Retry transcription and delete transcript segment actions.
34
- - Full session deletion with storage cleanup.
35
- - Agent tools for listing, opening, and searching transcripts: `recordings_list`, `recordings_get`, and `recordings_search`.
24
+ What the agent can use in chat and automation runs:
36
25
 
37
- Transcription uses Deepgram when `DEEPGRAM_API_KEY` is configured. The default speech model is `nova-3`, and the default language mode is `multi`. When `auto_recording_insights` is enabled in AI settings, NeoAgent can generate structured recording insights such as a summary, action items, and events.
26
+ | Area | Capabilities |
27
+ |---|---|
28
+ | **CLI** | PTY-capable `execute_command` with stdin, timeout, stdout/stderr, exit code |
29
+ | **Browser** | Navigate, click, type, extract, screenshot, evaluate JavaScript |
30
+ | **Android** | UI observation, input, screenshots, app launch, intent launch, APK install, `adb shell` |
31
+ | **Web search** | Brave Search API |
32
+ | **Files** | Read, write, edit, list, search |
33
+ | **HTTP** | Direct requests |
34
+ | **Memory** | Semantic search, session search, daily logs, core memory, API key name lookup |
35
+ | **Skills** | Create, list, update, delete persistent skills |
36
+ | **Tasks** | Create, update, delete, and one-time run automations |
37
+ | **MCP** | Add/remove MCP servers, use dynamic MCP tools |
38
+ | **Subagents** | Spawn, wait for, and cancel async helpers inside a run |
39
+ | **Images** | Generate with Grok, analyze with vision models |
40
+ | **Recordings** | List, inspect, search transcripts |
41
+ | **Social video** | Extract transcript and metadata from public YouTube, TikTok, Instagram, and X URLs |
42
+ | **Health** | Read synced mobile health metrics and summaries |
43
+ | **Outputs** | Markdown tables, Mermaid graphs, downloadable artifacts |
38
44
 
39
45
  ## Android Control
40
46
 
41
- NeoAgent can let the AI control an Android emulator or device attached to the NeoAgent server or configured worker. This is the Android capability in the comparison: the agent can observe and operate Android, not only run an Android companion app.
42
-
43
- Android control supports:
44
-
45
- - Starting and stopping the managed Android emulator.
46
- - Listing ADB-connected devices and installed apps.
47
- - Taking screenshots and UIAutomator XML dumps.
48
- - Observing visible UI nodes.
49
- - Opening apps and Android intents.
50
- - Tapping, long pressing, typing, swiping, and pressing Android navigation keys.
51
- - Waiting for text, resource IDs, descriptions, or classes to appear.
52
- - Installing `.apk` and universal `.apks` bundles.
53
- - Running `adb shell` commands when higher-level tools are not enough.
54
-
55
- These actions run where the NeoAgent backend is running. If NeoAgent is deployed on a remote server, the AI controls the Android runtime attached to that server, not the laptop where you are reading the docs.
47
+ The agent operates Android it is not an app that runs on Android. Controls run on a server-attached emulator or physical device over ADB.
56
48
 
57
- ## Android App And Health
49
+ - Start and stop the managed emulator
50
+ - List connected devices and installed apps
51
+ - Screenshot and UIAutomator XML dump
52
+ - Observe visible UI nodes
53
+ - Open apps and launch Android intents
54
+ - Tap, long press, type, swipe, press navigation keys
55
+ - Wait for text, resource IDs, descriptions, or classes to appear
56
+ - Install `.apk` and `.apks` bundles
57
+ - Run `adb shell` commands directly
58
58
 
59
- The Flutter Android app is still useful as a client. It can sign in to the same self-hosted backend, run chat and operator UI flows, sync Health Connect data, and record audio locally.
59
+ These actions run on the NeoAgent server. If NeoAgent is deployed remotely, it controls the Android runtime on that machine not your local device.
60
60
 
61
- Android app capabilities include:
62
-
63
- - `NEOAGENT_BACKEND_URL` build/run configuration for real devices.
64
- - Health Connect permission flow and background sync.
65
- - Microphone recording through an Android foreground service.
66
- - Boot restore hooks for recording services when Android allows them.
61
+ ## Recordings
67
62
 
68
- ## Health Data
63
+ Audio sessions are recorded server-side. The web client captures browser microphone and screen audio; the Android app records phone microphone audio via a foreground service.
69
64
 
70
- Health data comes from the Android app through `/api/mobile/health`. NeoAgent stores sync runs and normalized metric samples. The built-in metric aliases include steps, heart rate, sleep sessions, exercise sessions, and weight.
65
+ - Chunked uploads with per-source sequence tracking
66
+ - Session statuses: recording, processing, completed, failed, cancelled
67
+ - Transcript segment retry and deletion
68
+ - Transcript search across sessions
69
+ - Agent tools: `recordings_list`, `recordings_get`, `recordings_search`
70
+ - Social video extraction via `social_video_extract` — title, description, transcript, and a representative frame from YouTube, TikTok, Instagram, and X URLs
71
71
 
72
- The agent tool `read_health_data` returns summaries and recent samples. It is designed to answer questions such as recent step totals or available health metrics without dumping every raw record.
72
+ Transcription uses Deepgram (`nova-3` model, multi-language by default). Enable `auto_recording_insights` in AI settings to generate summaries, action items, and events automatically after transcription.
73
73
 
74
- ## Integrations And Messaging
74
+ ## Runtime Modes
75
75
 
76
- NeoAgent has two separate integration layers:
76
+ | Profile | What runs where |
77
+ |---|---|
78
+ | `trusted-host` | CLI and Android run on the host; browser runs in the VM or paired extension |
79
+ | `secure-vm` | CLI, browser, and Android all run inside the isolated VM |
77
80
 
78
- - Official integrations expose structured tools for Google Workspace, Microsoft 365, Notion, Slack, Figma, Home Assistant, Weather, Spotify, and a separate personal WhatsApp connection.
79
- - Messaging platforms let the agent talk through WhatsApp, Telegram, Discord, Slack, Google Chat, Teams, Matrix, Signal, iMessage/BlueBubbles, IRC, Twitch, LINE, Mattermost, configurable webhook bridges, and Telnyx Voice.
81
+ Production deployments can require `secure-vm` and a strong `NEOAGENT_VM_GUEST_TOKEN` (32+ characters).
80
82
 
81
- Official integration examples include Gmail thread search and send mail, Google Calendar events, Drive upload/download/export/share links, Docs create/append/replace, Sheets read/update/append/create, Microsoft Outlook/Calendar/OneDrive/Teams tools, Notion search/page/block/database tools, Slack conversation/message tools, Figma file/node/comment/image tools, Home Assistant entity/config reads and service calls, Weather current/forecast tools plus weather-event task triggers, Spotify playback/search/control tools, and a personal WhatsApp integration with isolated chat read/send tools and per-account read-only versus read/write access.
83
+ The browser always runs in isolation either the local VM or a paired Chrome extension on a remote machine. To pair an extension: download `/api/browser-extension/download` from NeoAgent, unzip it, enable Developer Mode in `chrome://extensions`, load the folder, then pair after signing in.
82
84
 
83
- Messaging examples include Telegram and Discord messages, Slack channel replies, Matrix room messages, Google Chat and Teams webhook delivery, Signal bridge delivery, iMessage/BlueBubbles sends, WhatsApp text and media sends, Telnyx inbound voice, Telnyx outbound calls, and scheduled-task call delivery.
85
+ ## Integrations and Messaging
84
86
 
85
- ## Agent Tools
87
+ NeoAgent has two separate layers:
86
88
 
87
- NeoAgent's agent tool surface includes more than basic chat:
89
+ **Official integrations** structured OAuth-backed tools the agent can use:
88
90
 
89
- | Area | Examples |
91
+ | Provider | Tools |
90
92
  |---|---|
91
- | CLI | PTY-capable `execute_command` with stdin, timeout, stdout, stderr, exit code, and duration |
92
- | Browser | Navigate, click, type, extract, screenshot, and evaluate page JavaScript |
93
- | Android control | UI observation, input, screenshots, app launch, intent launch, APK install, and shell commands |
94
- | Web search | Brave Search API through `web_search` |
95
- | Files | Read, write, edit, list, and search files |
96
- | HTTP | Direct HTTP requests |
97
- | Memory | Semantic memory, session search, daily logs, API key name reads, and core memory |
98
- | Skills | Create, list, update, and delete persistent skills |
99
- | Tasks | Schedule-triggered and integration-triggered automations, one-time runs, model overrides, and optional Telnyx call delivery |
100
- | MCP | Add, list, and remove MCP servers, plus dynamic MCP tool use |
101
- | Subagents | Spawn, list, wait for, and cancel async subagents inside a run |
102
- | Output | Generate markdown tables and Mermaid graphs |
103
- | Images | Generate images with Grok and analyze local image files with a vision-capable model |
104
- | Recordings | List, inspect, and search recording transcripts |
105
- | Health | Read synced mobile health metrics |
106
-
107
- Generated binary or text artifacts can be promoted into user-scoped artifact storage under `~/.neoagent/data/artifacts` and served through authenticated `/api/artifacts/:id/content` URLs.
93
+ | Google Workspace | Gmail, Calendar, Drive, Docs, Sheets |
94
+ | Microsoft 365 | Outlook, Calendar, OneDrive, Teams |
95
+ | Notion | Pages, databases, blocks, search |
96
+ | Slack | Messages, conversations, search |
97
+ | Figma | Files, nodes, comments, rendered images |
98
+ | Home Assistant | Entity state, service calls |
99
+ | Trello | Boards, lists, cards, comments |
100
+ | Spotify | Playback, search, queue |
101
+ | Weather | Current conditions and forecasts (no API key needed) |
102
+ | Personal WhatsApp | Per-account read and send |
108
103
 
109
- ## Runtime Modes
104
+ **Messaging platforms** — channels for communicating with the agent:
110
105
 
111
- Runtime settings let operators choose where higher-risk work runs:
106
+ WhatsApp, Telegram, Discord, Slack, Google Chat, Teams, Matrix, Signal, iMessage/BlueBubbles, IRC, Twitch, LINE, Mattermost, Telnyx Voice, plus webhook bridges for Feishu, Nextcloud Talk, Nostr, Synology Chat, Tlon, Zalo, WeChat, and WebChat.
112
107
 
113
- | Profile | Runtime shape |
114
- |---|---|
115
- | `trusted-host` | CLI, browser, and Android tools run on the host |
116
- | `secure-vm` | CLI, browser, and Android tools run through the local VM backend |
108
+ Each official integration account can be set to **Read/Write** (default) or **Read Only**. Write tools are blocked server-side for read-only accounts.
109
+
110
+ ## Android App and Health
117
111
 
118
- Production policy can require the secure VM profile and a strong VM guest token.
112
+ The Flutter Android app connects to the same self-hosted backend and can:
119
113
 
120
- These controls matter operationally: the browser, Android emulator, local files, and shell commands run wherever the NeoAgent backend, VM, or paired browser extension is running, not necessarily on the computer where you are reading the docs. Logs from a different server or remote browser may not match the logs on the local machine.
114
+ - Run chat and operator UI
115
+ - Sync Android Health Connect data (steps, heart rate, sleep, exercise, weight)
116
+ - Record microphone audio via a foreground service
121
117
 
122
- For extension-only remote browser control, download `/api/browser-extension/download` from NeoAgent, unzip it on the remote machine, load the folder in `chrome://extensions`, and pair after logging in. The extension uses Chrome's debugger permission for full browser control, so Chrome will show its normal debugging warning while attached. The popup can check whether the server has a newer extension bundle, but unpacked Developer Mode installs still need a manual download and reload.
118
+ Synced health data is available through the `read_health_data` agent tool and the **Health** UI section.