extra-desktop 0.3.0__tar.gz → 0.3.2__tar.gz

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 (184) hide show
  1. {extra_desktop-0.3.0/extra_desktop.egg-info → extra_desktop-0.3.2}/PKG-INFO +33 -18
  2. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/README.md +27 -16
  3. extra_desktop-0.3.2/__init__.py +5 -0
  4. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/cli.py +339 -7
  5. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/__init__.py +18 -0
  6. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/composer/__init__.py +10 -0
  7. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/composer/blueprint.py +95 -0
  8. extra_desktop-0.3.2/core/composer/lineage.py +352 -0
  9. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/composer/verifier.py +26 -2
  10. extra_desktop-0.3.2/core/distiller.py +603 -0
  11. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/evolution/__init__.py +10 -0
  12. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/evolution/analyzer.py +5 -1
  13. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/evolution/crystallizer.py +75 -3
  14. extra_desktop-0.3.2/core/evolution/harness_generator.py +1092 -0
  15. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/memory/__init__.py +10 -1
  16. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/memory/db.py +19 -0
  17. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/memory/ingest.py +68 -5
  18. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/memory/recall.py +132 -28
  19. extra_desktop-0.3.2/core/metrics/__init__.py +42 -0
  20. extra_desktop-0.3.2/core/metrics/auditor.py +269 -0
  21. extra_desktop-0.3.2/core/metrics/config.py +147 -0
  22. extra_desktop-0.3.2/core/metrics/dashboard.py +981 -0
  23. extra_desktop-0.3.2/core/metrics/ledger.py +503 -0
  24. extra_desktop-0.3.2/core/metrics/sanitizer.py +141 -0
  25. extra_desktop-0.3.2/core/metrics/telemetry.py +248 -0
  26. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/motion/stroke.py +2 -2
  27. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/__init__.py +56 -0
  28. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/base.py +22 -4
  29. extra_desktop-0.3.2/core/platform/linux/__init__.py +204 -0
  30. extra_desktop-0.3.2/core/platform/linux/atspi_plane.py +646 -0
  31. extra_desktop-0.3.2/core/platform/linux/capture.py +231 -0
  32. extra_desktop-0.3.2/core/platform/linux/focus.py +634 -0
  33. extra_desktop-0.3.2/core/platform/linux/geometry.py +351 -0
  34. extra_desktop-0.3.2/core/platform/linux/indicators.py +414 -0
  35. extra_desktop-0.3.2/core/platform/linux/input_engine.py +1643 -0
  36. extra_desktop-0.3.2/core/platform/linux/permissions.py +146 -0
  37. extra_desktop-0.3.2/core/platform/linux/shell.py +704 -0
  38. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/macos/input_engine.py +224 -11
  39. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/macos/shell.py +9 -0
  40. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/windows/__init__.py +24 -0
  41. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/windows/capture.py +9 -0
  42. extra_desktop-0.3.2/core/platform/windows/child_session.py +437 -0
  43. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/windows/focus.py +186 -30
  44. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/windows/geometry.py +16 -2
  45. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/windows/indicators.py +124 -26
  46. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/windows/input_engine.py +464 -40
  47. extra_desktop-0.3.2/core/platform/windows/pip_window.py +394 -0
  48. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/windows/shell.py +99 -15
  49. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/windows/uia_plane.py +54 -5
  50. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/scout/detector.py +32 -0
  51. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/scout/session_vault.py +11 -0
  52. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/scout/synthesizer.py +11 -1
  53. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/soul/__init__.py +22 -0
  54. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/soul/eyes.py +90 -27
  55. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/soul/schemas.py +28 -0
  56. extra_desktop-0.3.2/core/soul/state_critic.py +319 -0
  57. extra_desktop-0.3.2/core/soul/vision_parser.py +532 -0
  58. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/stall_breaker.py +69 -9
  59. extra_desktop-0.3.2/core/subtask.py +467 -0
  60. {extra_desktop-0.3.0 → extra_desktop-0.3.2/extra_desktop.egg-info}/PKG-INFO +33 -18
  61. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/extra_desktop.egg-info/SOURCES.txt +85 -1
  62. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/extra_desktop.egg-info/requires.txt +6 -0
  63. extra_desktop-0.3.2/fastpath/__init__.py +74 -0
  64. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/fastpath/bridge.py +113 -4
  65. extra_desktop-0.3.2/fastpath/cli_harness.py +390 -0
  66. extra_desktop-0.3.2/fastpath/cli_hub.py +351 -0
  67. extra_desktop-0.3.2/fastpath/clipboard_html.py +52 -0
  68. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/fastpath/fs.py +104 -5
  69. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/fastpath/shell.py +10 -0
  70. extra_desktop-0.3.2/fastpath/vectorizer.py +362 -0
  71. extra_desktop-0.3.2/fastpath/visualizer.py +236 -0
  72. extra_desktop-0.3.2/fastpath/web_workspace.py +245 -0
  73. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/mcp/server.py +950 -52
  74. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/pyproject.toml +12 -2
  75. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_acceleration_suite.py +95 -3
  76. extra_desktop-0.3.2/tests/test_bridge_sandbox.py +100 -0
  77. extra_desktop-0.3.2/tests/test_canvas_stall_breaker.py +104 -0
  78. extra_desktop-0.3.2/tests/test_child_session.py +147 -0
  79. extra_desktop-0.3.2/tests/test_cli_harness.py +396 -0
  80. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_composer_director_soul.py +37 -2
  81. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_dynamic_batching.py +19 -1
  82. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_evolution.py +19 -7
  83. extra_desktop-0.3.2/tests/test_evolution_harness.py +137 -0
  84. extra_desktop-0.3.2/tests/test_hierarchical_benchmarks.py +356 -0
  85. extra_desktop-0.3.2/tests/test_launch_maximize.py +105 -0
  86. extra_desktop-0.3.2/tests/test_lineage.py +110 -0
  87. extra_desktop-0.3.2/tests/test_linux_atspi.py +163 -0
  88. extra_desktop-0.3.2/tests/test_linux_capture.py +54 -0
  89. extra_desktop-0.3.2/tests/test_linux_focus.py +138 -0
  90. extra_desktop-0.3.2/tests/test_linux_geometry.py +101 -0
  91. extra_desktop-0.3.2/tests/test_linux_indicators.py +211 -0
  92. extra_desktop-0.3.2/tests/test_linux_input.py +186 -0
  93. extra_desktop-0.3.2/tests/test_linux_shell.py +221 -0
  94. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_memory_kuzu.py +75 -0
  95. extra_desktop-0.3.2/tests/test_metrics.py +427 -0
  96. extra_desktop-0.3.2/tests/test_milestone_budgeting.py +167 -0
  97. extra_desktop-0.3.2/tests/test_paint_remediation.py +213 -0
  98. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_pillar5_package_ecosystem.py +7 -1
  99. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_scout.py +21 -0
  100. extra_desktop-0.3.2/tests/test_security_hardening.py +128 -0
  101. extra_desktop-0.3.2/tests/test_state_critic.py +146 -0
  102. extra_desktop-0.3.2/tests/test_subtask_runner.py +379 -0
  103. extra_desktop-0.3.2/tests/test_telemetry.py +165 -0
  104. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_tiered_verification.py +5 -5
  105. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_tiered_verification_benchmarks.py +1 -1
  106. extra_desktop-0.3.2/tests/test_ui_distiller.py +272 -0
  107. extra_desktop-0.3.2/tests/test_verification_mcp.py +130 -0
  108. extra_desktop-0.3.2/tests/test_vision_parser.py +186 -0
  109. extra_desktop-0.3.2/tests/test_web_workspace.py +134 -0
  110. extra_desktop-0.3.2/tests/test_windows_indicators.py +173 -0
  111. extra_desktop-0.3.0/__init__.py +0 -5
  112. extra_desktop-0.3.0/fastpath/__init__.py +0 -28
  113. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/LICENSE +0 -0
  114. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/NOTICE +0 -0
  115. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/capture.py +0 -0
  116. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/composer/folding.py +0 -0
  117. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/evolution/api_synthesizer.py +0 -0
  118. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/evolution/curator.py +0 -0
  119. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/focus.py +0 -0
  120. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/geometry.py +0 -0
  121. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/indicators.py +0 -0
  122. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/input_engine.py +0 -0
  123. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/memory/embeddings.py +0 -0
  124. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/motion/__init__.py +0 -0
  125. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/motion/curves.py +0 -0
  126. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/motion/profiler.py +0 -0
  127. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/motion/windmouse.py +0 -0
  128. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/macos/__init__.py +0 -0
  129. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/macos/ax_plane.py +0 -0
  130. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/macos/capture.py +0 -0
  131. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/macos/focus.py +0 -0
  132. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/macos/geometry.py +0 -0
  133. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/macos/indicators.py +0 -0
  134. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/platform/macos/permissions.py +0 -0
  135. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/scout/__init__.py +0 -0
  136. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/scout/cdp_sniffer.py +0 -0
  137. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/scout/scraper.py +0 -0
  138. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/soul/compressor.py +0 -0
  139. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/soul/critic.py +0 -0
  140. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/soul/decider.py +0 -0
  141. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/soul/gateman.py +0 -0
  142. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/soul/grammar.py +0 -0
  143. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/soul/runtime.py +0 -0
  144. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/uia_plane.py +0 -0
  145. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/core/uninstall.py +0 -0
  146. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/extra_desktop.egg-info/dependency_links.txt +0 -0
  147. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/extra_desktop.egg-info/entry_points.txt +0 -0
  148. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/extra_desktop.egg-info/top_level.txt +0 -0
  149. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/fastpath/browser.py +0 -0
  150. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/fastpath/web/__init__.py +0 -0
  151. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/mcp/__init__.py +0 -0
  152. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/setup.cfg +0 -0
  153. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_app_registry_dynamic.py +0 -0
  154. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_core_engine.py +0 -0
  155. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_geometry_exhaustive.py +0 -0
  156. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_human_mouse.py +0 -0
  157. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_input_engine_exhaustive.py +0 -0
  158. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_issue4_bottlenecks.py +0 -0
  159. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_macos_ax.py +0 -0
  160. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_macos_core.py +0 -0
  161. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_macos_focus_shell.py +0 -0
  162. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_macos_indicators.py +0 -0
  163. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_macos_input.py +0 -0
  164. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_macos_perception.py +0 -0
  165. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_macos_safety.py +0 -0
  166. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_mcp_schemas_exhaustive.py +0 -0
  167. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_memory_subsystem_exhaustive.py +0 -0
  168. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_perception_vision_exhaustive.py +0 -0
  169. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_pillar1_funnel.py +0 -0
  170. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_pillar2_installer.py +0 -0
  171. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_pillar3_tcc_playbook.py +0 -0
  172. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_pillar4_web_edge.py +0 -0
  173. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_pre_release_fixes.py +0 -0
  174. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_process_shell_exhaustive.py +0 -0
  175. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_scout_evolution_exhaustive.py +0 -0
  176. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_soul_benchmarks.py +0 -0
  177. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_soul_evolution.py +0 -0
  178. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_soul_runtime.py +0 -0
  179. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_stall_breaker_cognitive.py +0 -0
  180. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_stall_breaker_exhaustive.py +0 -0
  181. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_uninstall.py +0 -0
  182. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_universal_tasksuite.py +0 -0
  183. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_visual_grounding.py +0 -0
  184. {extra_desktop-0.3.0 → extra_desktop-0.3.2}/tests/test_web_to_api.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: extra-desktop
3
- Version: 0.3.0
4
- Summary: Flashless Windows & macOS Computer-Use Engine & Model Context Protocol (MCP) Server
3
+ Version: 0.3.2
4
+ Summary: Flashless Linux, Windows & macOS Computer-Use Engine & Model Context Protocol (MCP) Server
5
5
  Author-email: AIYantra Engineering Team <engineering@yantraos.com>
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://extra.yantraos.com
@@ -20,6 +20,7 @@ Requires-Dist: numpy>=1.26.0
20
20
  Requires-Dist: psutil>=6.0.0
21
21
  Requires-Dist: kuzu>=0.11.0
22
22
  Requires-Dist: fastembed>=0.8.0
23
+ Requires-Dist: onnxruntime>=1.19.0
23
24
  Requires-Dist: pywin32>=306; sys_platform == "win32"
24
25
  Requires-Dist: comtypes>=1.4.0; sys_platform == "win32"
25
26
  Requires-Dist: mss>=9.0.1; sys_platform == "win32"
@@ -28,6 +29,9 @@ Requires-Dist: pyobjc-framework-Cocoa>=10.0; sys_platform == "darwin"
28
29
  Requires-Dist: pyobjc-framework-Quartz>=10.0; sys_platform == "darwin"
29
30
  Requires-Dist: pyobjc-framework-ApplicationServices>=10.0; sys_platform == "darwin"
30
31
  Requires-Dist: pyobjc-framework-ScreenCaptureKit>=10.0; sys_platform == "darwin"
32
+ Requires-Dist: evdev>=1.7.0; sys_platform == "linux"
33
+ Requires-Dist: mss>=9.0.1; sys_platform == "linux"
34
+ Requires-Dist: jeepney>=0.8.0; sys_platform == "linux"
31
35
  Dynamic: license-file
32
36
 
33
37
  <div align="center">
@@ -38,24 +42,25 @@ Dynamic: license-file
38
42
 
39
43
  # Extra
40
44
 
41
- ### The Open-Source Astra 6 for your Mac & PC
42
- **Your AI can see, click, type, navigate, and get real work done on macOS & Windows.**
45
+ ### The Open-Source Astra 6 for your Linux PC, Mac & Windows
46
+ **Your AI can see, click, type, navigate, and get real work done on Linux, macOS & Windows.**
43
47
 
44
48
  <!-- mcp-name: io.github.AIYantra/extra -->
45
49
 
50
+ [![PyPI Downloads](https://static.pepy.tech/personalized-badge/extra-desktop?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/extra-desktop)
46
51
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
47
- [![Platform: macOS 12.3+ & Windows 10/11](https://img.shields.io/badge/Platform-macOS%20%7C%20Windows-0078D6.svg)](https://extra.yantraos.com)
52
+ [![Platform: Linux | macOS | Windows](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows-0078D6.svg)](https://extra.yantraos.com)
48
53
  [![Protocol: Model Context Protocol (MCP)](https://img.shields.io/badge/Protocol-MCP%20Native-orange.svg)](https://modelcontextprotocol.io)
49
54
  [![Ecosystem: yantraOS](https://img.shields.io/badge/Ecosystem-yantraOS-8A2BE2.svg)](https://yantraos.com)
50
55
  [![Status: Open Source](https://img.shields.io/badge/Open%20Source-%E2%99%A5-emerald.svg)](https://github.com/AIYantra/extra)
51
56
 
52
- [Website](https://extra.yantraos.com) • [Quickstart](#-quickstart-1-minute) • [macOS Guide](README_MACOS.md) • [Architecture](ARCHITECTURE.md) • [License](LICENSE)
57
+ [Website](https://extra.yantraos.com) • [Quickstart](#-quickstart-1-minute) • [Linux Guide](README_LINUX.md) • [macOS Guide](README_MACOS.md) • [Architecture](ARCHITECTURE.md) • [License](LICENSE)
53
58
 
54
59
  <br/>
55
60
  <br/>
56
61
 
57
62
  <a href="https://extra.yantraos.com">
58
- <img src="https://raw.githubusercontent.com/AIYantra/extra/main/assets/banner.png" alt="Extra in action — Live Windows desktop automation" width="100%" />
63
+ <img src="https://raw.githubusercontent.com/AIYantra/extra/main/assets/demo.gif" alt="Extra in action — Live Windows desktop automation" width="100%" />
59
64
  </a>
60
65
 
61
66
  </div>
@@ -66,9 +71,9 @@ Dynamic: license-file
66
71
 
67
72
  Today's AI assistants can write brilliant essays and code, but they are trapped inside a chat window. When you need them to click a button, open an app, organize your files, or input data into a spreadsheet, they can only give you text instructions.
68
73
 
69
- **Extra gives your AI hands and eyes on Windows.**
74
+ **Extra gives your AI hands and eyes on Linux, macOS & Windows.**
70
75
 
71
- It connects **Claude, Google Antigravity, Cursor, AGY**, or any autonomous agent directly to your Windows desktop with high-speed screen vision, pixel-perfect clicking, and instant typing.
76
+ It connects **Claude, Google Antigravity, Cursor, AGY**, or any autonomous agent directly to your desktop with high-speed screen vision, pixel-perfect clicking, and instant typing.
72
77
 
73
78
  * **No clunky browser extensions.**
74
79
  * **No expensive cloud servers watching your screen.**
@@ -80,22 +85,27 @@ It connects **Claude, Google Antigravity, Cursor, AGY**, or any autonomous agent
80
85
 
81
86
  Once Extra is running, you can talk to your AI like a real human assistant sitting at your desk:
82
87
 
83
- * 📊 **Spreadsheets & Data:** *"Open Excel, calculate total revenue from the invoice CSVs in my Downloads folder, and create a summary chart."*
88
+ * 📊 **Spreadsheets & Data:** *"Open Excel or LibreOffice Calc, calculate total revenue from the invoice CSVs in my Downloads folder, and create a summary chart."*
84
89
  * 🗂️ **Desktop & File Cleanup:** *"Clean up my messy desktop by moving screenshots into Pictures, PDFs into Documents, and deleting empty folders."*
85
- * 🌐 **Web Research & Data Entry:** *"Open Chrome, find the top 5 flights to Tokyo under $800, and copy their flight numbers and dates into Notepad."*
86
- * ⚙️ **Windows System Tasks:** *"Open Settings, check if any Windows updates are pending, and let me know if a restart is needed."*
87
- * 🎵 **App Control:** *"Launch Spotify, search for low-fi focus beats, and start playing."*
90
+ * 🌐 **Web Research & Data Entry:** *"Open Chrome or Firefox, find the top 5 flights to Tokyo under $800, and copy their flight numbers and dates into a text note."*
91
+ * ⚙️ **System Administration:** *"Open Settings or terminal, check system updates, and verify service health."*
92
+ * 🎵 **App Control:** *"Launch Spotify or VLC, search for low-fi focus beats, and start playing."*
88
93
 
89
94
  ---
90
95
 
91
96
  ## ⚡ Quickstart (1 Minute)
92
97
 
93
- You can set up Extra in seconds on **macOS** or **Windows**:
98
+ You can set up Extra in seconds on **Linux**, **macOS**, or **Windows**:
94
99
 
95
100
  ### Option A: Ask Your AI To Set It Up (Primary Funnel — Easiest)
96
101
 
97
102
  Copy and paste the single directive for your OS into **Claude Desktop**, **Google Antigravity**, **Cursor**, **Windsurf**, or any MCP agent:
98
103
 
104
+ * **🐧 For Linux (Arch / yantraOS, Ubuntu, Debian, Fedora):**
105
+ ```text
106
+ Setup Extra on my Linux machine: In Terminal run 'curl -sSL https://extra.yantraos.com/install.sh | bash', then read and configure ~/.extra/app/STARTER_PROMPT_LINUX.md so we are ready to use Extra.
107
+ ```
108
+
99
109
  * **🍏 For macOS (Apple Silicon M1-M4 & Intel):**
100
110
  ```text
101
111
  Setup Extra on my Mac: In Terminal run 'curl -sSL https://extra.yantraos.com/install.sh | bash', then read and configure ~/.extra/app/STARTER_PROMPT_MACOS.md so we are ready to use Extra.
@@ -113,6 +123,11 @@ Your AI will run the installer, configure MCP and local rules, and reply:
113
123
 
114
124
  ### Option B: Run the One-Liner Yourself
115
125
 
126
+ * **🐧 Linux Terminal (Arch / yantraOS, Ubuntu, Debian, Fedora):**
127
+ ```bash
128
+ curl -sSL https://extra.yantraos.com/install.sh | bash
129
+ ```
130
+
116
131
  * **🍏 macOS Terminal:**
117
132
  ```bash
118
133
  curl -sSL https://extra.yantraos.com/install.sh | bash
@@ -124,7 +139,7 @@ Your AI will run the installer, configure MCP and local rules, and reply:
124
139
  ```
125
140
 
126
141
  The automated installer will:
127
- * Verify OS architecture (macOS 12.3+ or Windows 10/11 64-bit).
142
+ * Verify OS architecture (Linux Wayland/X11, macOS 12.3+, or Windows 10/11 64-bit).
128
143
  * Provision isolated Python 3.10+ runtime (`~/.extra/venv`).
129
144
  * Auto-configure **Claude Desktop**, **Cursor**, **Windsurf**, and **Antigravity** (`agy`).
130
145
  * Run the health diagnostic doctor and present the 1-step starter prompt.
@@ -134,7 +149,7 @@ The automated installer will:
134
149
  ### Option C: Developer Git Clone
135
150
 
136
151
  ```bash
137
- # macOS:
152
+ # Linux / macOS:
138
153
  git clone https://github.com/AIYantra/extra.git ~/.extra/app
139
154
  cd ~/.extra/app && ./install.sh
140
155
 
@@ -263,8 +278,8 @@ extra/
263
278
  ├── cli.py # CLI runner (extra doctor, test, indicators, run, inspect, snap)
264
279
  ├── install.ps1 # 1-line PowerShell installer (Windows)
265
280
  ├── install.sh # 1-line bash installer (macOS)
266
- ├── pyproject.toml # PyPI package manifest (extra-desktop v0.3.0)
267
- ├── package.json # npm package manifest (@yantraos/extra-desktop v0.3.0)
281
+ ├── pyproject.toml # PyPI package manifest (extra-desktop v0.3.1)
282
+ ├── package.json # npm package manifest (@yantraos/extra-desktop v0.3.1)
268
283
  ├── server.json # Official MCP registry manifest
269
284
  ├── glama.json # Glama MCP ecosystem manifest
270
285
  ├── smithery.yaml # Smithery 1-click deployment manifest
@@ -6,24 +6,25 @@
6
6
 
7
7
  # Extra
8
8
 
9
- ### The Open-Source Astra 6 for your Mac & PC
10
- **Your AI can see, click, type, navigate, and get real work done on macOS & Windows.**
9
+ ### The Open-Source Astra 6 for your Linux PC, Mac & Windows
10
+ **Your AI can see, click, type, navigate, and get real work done on Linux, macOS & Windows.**
11
11
 
12
12
  <!-- mcp-name: io.github.AIYantra/extra -->
13
13
 
14
+ [![PyPI Downloads](https://static.pepy.tech/personalized-badge/extra-desktop?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/extra-desktop)
14
15
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
15
- [![Platform: macOS 12.3+ & Windows 10/11](https://img.shields.io/badge/Platform-macOS%20%7C%20Windows-0078D6.svg)](https://extra.yantraos.com)
16
+ [![Platform: Linux | macOS | Windows](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows-0078D6.svg)](https://extra.yantraos.com)
16
17
  [![Protocol: Model Context Protocol (MCP)](https://img.shields.io/badge/Protocol-MCP%20Native-orange.svg)](https://modelcontextprotocol.io)
17
18
  [![Ecosystem: yantraOS](https://img.shields.io/badge/Ecosystem-yantraOS-8A2BE2.svg)](https://yantraos.com)
18
19
  [![Status: Open Source](https://img.shields.io/badge/Open%20Source-%E2%99%A5-emerald.svg)](https://github.com/AIYantra/extra)
19
20
 
20
- [Website](https://extra.yantraos.com) • [Quickstart](#-quickstart-1-minute) • [macOS Guide](README_MACOS.md) • [Architecture](ARCHITECTURE.md) • [License](LICENSE)
21
+ [Website](https://extra.yantraos.com) • [Quickstart](#-quickstart-1-minute) • [Linux Guide](README_LINUX.md) • [macOS Guide](README_MACOS.md) • [Architecture](ARCHITECTURE.md) • [License](LICENSE)
21
22
 
22
23
  <br/>
23
24
  <br/>
24
25
 
25
26
  <a href="https://extra.yantraos.com">
26
- <img src="https://raw.githubusercontent.com/AIYantra/extra/main/assets/banner.png" alt="Extra in action — Live Windows desktop automation" width="100%" />
27
+ <img src="https://raw.githubusercontent.com/AIYantra/extra/main/assets/demo.gif" alt="Extra in action — Live Windows desktop automation" width="100%" />
27
28
  </a>
28
29
 
29
30
  </div>
@@ -34,9 +35,9 @@
34
35
 
35
36
  Today's AI assistants can write brilliant essays and code, but they are trapped inside a chat window. When you need them to click a button, open an app, organize your files, or input data into a spreadsheet, they can only give you text instructions.
36
37
 
37
- **Extra gives your AI hands and eyes on Windows.**
38
+ **Extra gives your AI hands and eyes on Linux, macOS & Windows.**
38
39
 
39
- It connects **Claude, Google Antigravity, Cursor, AGY**, or any autonomous agent directly to your Windows desktop with high-speed screen vision, pixel-perfect clicking, and instant typing.
40
+ It connects **Claude, Google Antigravity, Cursor, AGY**, or any autonomous agent directly to your desktop with high-speed screen vision, pixel-perfect clicking, and instant typing.
40
41
 
41
42
  * **No clunky browser extensions.**
42
43
  * **No expensive cloud servers watching your screen.**
@@ -48,22 +49,27 @@ It connects **Claude, Google Antigravity, Cursor, AGY**, or any autonomous agent
48
49
 
49
50
  Once Extra is running, you can talk to your AI like a real human assistant sitting at your desk:
50
51
 
51
- * 📊 **Spreadsheets & Data:** *"Open Excel, calculate total revenue from the invoice CSVs in my Downloads folder, and create a summary chart."*
52
+ * 📊 **Spreadsheets & Data:** *"Open Excel or LibreOffice Calc, calculate total revenue from the invoice CSVs in my Downloads folder, and create a summary chart."*
52
53
  * 🗂️ **Desktop & File Cleanup:** *"Clean up my messy desktop by moving screenshots into Pictures, PDFs into Documents, and deleting empty folders."*
53
- * 🌐 **Web Research & Data Entry:** *"Open Chrome, find the top 5 flights to Tokyo under $800, and copy their flight numbers and dates into Notepad."*
54
- * ⚙️ **Windows System Tasks:** *"Open Settings, check if any Windows updates are pending, and let me know if a restart is needed."*
55
- * 🎵 **App Control:** *"Launch Spotify, search for low-fi focus beats, and start playing."*
54
+ * 🌐 **Web Research & Data Entry:** *"Open Chrome or Firefox, find the top 5 flights to Tokyo under $800, and copy their flight numbers and dates into a text note."*
55
+ * ⚙️ **System Administration:** *"Open Settings or terminal, check system updates, and verify service health."*
56
+ * 🎵 **App Control:** *"Launch Spotify or VLC, search for low-fi focus beats, and start playing."*
56
57
 
57
58
  ---
58
59
 
59
60
  ## ⚡ Quickstart (1 Minute)
60
61
 
61
- You can set up Extra in seconds on **macOS** or **Windows**:
62
+ You can set up Extra in seconds on **Linux**, **macOS**, or **Windows**:
62
63
 
63
64
  ### Option A: Ask Your AI To Set It Up (Primary Funnel — Easiest)
64
65
 
65
66
  Copy and paste the single directive for your OS into **Claude Desktop**, **Google Antigravity**, **Cursor**, **Windsurf**, or any MCP agent:
66
67
 
68
+ * **🐧 For Linux (Arch / yantraOS, Ubuntu, Debian, Fedora):**
69
+ ```text
70
+ Setup Extra on my Linux machine: In Terminal run 'curl -sSL https://extra.yantraos.com/install.sh | bash', then read and configure ~/.extra/app/STARTER_PROMPT_LINUX.md so we are ready to use Extra.
71
+ ```
72
+
67
73
  * **🍏 For macOS (Apple Silicon M1-M4 & Intel):**
68
74
  ```text
69
75
  Setup Extra on my Mac: In Terminal run 'curl -sSL https://extra.yantraos.com/install.sh | bash', then read and configure ~/.extra/app/STARTER_PROMPT_MACOS.md so we are ready to use Extra.
@@ -81,6 +87,11 @@ Your AI will run the installer, configure MCP and local rules, and reply:
81
87
 
82
88
  ### Option B: Run the One-Liner Yourself
83
89
 
90
+ * **🐧 Linux Terminal (Arch / yantraOS, Ubuntu, Debian, Fedora):**
91
+ ```bash
92
+ curl -sSL https://extra.yantraos.com/install.sh | bash
93
+ ```
94
+
84
95
  * **🍏 macOS Terminal:**
85
96
  ```bash
86
97
  curl -sSL https://extra.yantraos.com/install.sh | bash
@@ -92,7 +103,7 @@ Your AI will run the installer, configure MCP and local rules, and reply:
92
103
  ```
93
104
 
94
105
  The automated installer will:
95
- * Verify OS architecture (macOS 12.3+ or Windows 10/11 64-bit).
106
+ * Verify OS architecture (Linux Wayland/X11, macOS 12.3+, or Windows 10/11 64-bit).
96
107
  * Provision isolated Python 3.10+ runtime (`~/.extra/venv`).
97
108
  * Auto-configure **Claude Desktop**, **Cursor**, **Windsurf**, and **Antigravity** (`agy`).
98
109
  * Run the health diagnostic doctor and present the 1-step starter prompt.
@@ -102,7 +113,7 @@ The automated installer will:
102
113
  ### Option C: Developer Git Clone
103
114
 
104
115
  ```bash
105
- # macOS:
116
+ # Linux / macOS:
106
117
  git clone https://github.com/AIYantra/extra.git ~/.extra/app
107
118
  cd ~/.extra/app && ./install.sh
108
119
 
@@ -231,8 +242,8 @@ extra/
231
242
  ├── cli.py # CLI runner (extra doctor, test, indicators, run, inspect, snap)
232
243
  ├── install.ps1 # 1-line PowerShell installer (Windows)
233
244
  ├── install.sh # 1-line bash installer (macOS)
234
- ├── pyproject.toml # PyPI package manifest (extra-desktop v0.3.0)
235
- ├── package.json # npm package manifest (@yantraos/extra-desktop v0.3.0)
245
+ ├── pyproject.toml # PyPI package manifest (extra-desktop v0.3.1)
246
+ ├── package.json # npm package manifest (@yantraos/extra-desktop v0.3.1)
236
247
  ├── server.json # Official MCP registry manifest
237
248
  ├── glama.json # Glama MCP ecosystem manifest
238
249
  ├── smithery.yaml # Smithery 1-click deployment manifest
@@ -0,0 +1,5 @@
1
+ """
2
+ Project Extra — Flashless Linux, Windows & macOS Computer-Use Engine & MCP Server.
3
+ """
4
+
5
+ __version__ = "0.3.2"