seedcode-cli 9.1.1__tar.gz → 9.2.0__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 (160) hide show
  1. seedcode_cli-9.2.0/PKG-INFO +496 -0
  2. seedcode_cli-9.2.0/README.md +462 -0
  3. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/npm/README.md +1 -1
  4. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/pyproject.toml +4 -34
  5. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/scripts/windows/README.md +1 -1
  6. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/__init__.py +1 -1
  7. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/app.py +300 -428
  8. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/commands/__init__.py +5 -1
  9. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/commands/doctor.py +10 -33
  10. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/commands/history.py +1 -2
  11. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/commands/session.py +12 -11
  12. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/commands/status.py +7 -24
  13. seedcode_cli-9.2.0/seedcode/commands/workspace.py +191 -0
  14. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/agent.py +115 -94
  15. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/chat.py +40 -4
  16. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/errors.py +7 -7
  17. seedcode_cli-9.2.0/seedcode/core/events.py +317 -0
  18. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/intent.py +16 -2
  19. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/internet.py +43 -26
  20. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/models.py +33 -63
  21. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/providers/ollama.py +20 -2
  22. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/tools/__init__.py +1 -1
  23. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/tools/base.py +3 -0
  24. seedcode_cli-9.2.0/seedcode/tools/diffs.py +126 -0
  25. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/tools/filesystem.py +80 -3
  26. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/tools/patch.py +13 -2
  27. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/tools/permissions.py +21 -39
  28. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/tools/terminal.py +7 -1
  29. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/__init__.py +0 -6
  30. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/dashboard.py +5 -9
  31. seedcode_cli-9.2.0/seedcode/ui/header.py +222 -0
  32. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/state.py +5 -3
  33. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/statusbar.py +2 -8
  34. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/tasks.py +6 -10
  35. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/tui.py +518 -37
  36. seedcode_cli-9.1.1/PKG-INFO +0 -906
  37. seedcode_cli-9.1.1/README.md +0 -857
  38. seedcode_cli-9.1.1/seedcode/apps/__init__.py +0 -32
  39. seedcode_cli-9.1.1/seedcode/apps/discovery.py +0 -276
  40. seedcode_cli-9.1.1/seedcode/apps/installer.py +0 -164
  41. seedcode_cli-9.1.1/seedcode/apps/launcher.py +0 -156
  42. seedcode_cli-9.1.1/seedcode/apps/verifier.py +0 -119
  43. seedcode_cli-9.1.1/seedcode/commands/agent.py +0 -102
  44. seedcode_cli-9.1.1/seedcode/commands/assist.py +0 -362
  45. seedcode_cli-9.1.1/seedcode/commands/chat.py +0 -49
  46. seedcode_cli-9.1.1/seedcode/commands/codemode.py +0 -185
  47. seedcode_cli-9.1.1/seedcode/commands/desktop.py +0 -105
  48. seedcode_cli-9.1.1/seedcode/commands/mode.py +0 -55
  49. seedcode_cli-9.1.1/seedcode/commands/youtube_music.py +0 -68
  50. seedcode_cli-9.1.1/seedcode/computer/__init__.py +0 -98
  51. seedcode_cli-9.1.1/seedcode/computer/browser.py +0 -289
  52. seedcode_cli-9.1.1/seedcode/computer/browser_cdp.py +0 -567
  53. seedcode_cli-9.1.1/seedcode/computer/browser_engine.py +0 -566
  54. seedcode_cli-9.1.1/seedcode/computer/browser_extract.py +0 -301
  55. seedcode_cli-9.1.1/seedcode/computer/browser_popups.py +0 -329
  56. seedcode_cli-9.1.1/seedcode/computer/browser_selenium.py +0 -209
  57. seedcode_cli-9.1.1/seedcode/computer/browser_skills.py +0 -245
  58. seedcode_cli-9.1.1/seedcode/computer/catalog.py +0 -200
  59. seedcode_cli-9.1.1/seedcode/computer/controller.py +0 -366
  60. seedcode_cli-9.1.1/seedcode/computer/dispatcher.py +0 -272
  61. seedcode_cli-9.1.1/seedcode/computer/dpi.py +0 -185
  62. seedcode_cli-9.1.1/seedcode/computer/engine.py +0 -108
  63. seedcode_cli-9.1.1/seedcode/computer/keyboard.py +0 -109
  64. seedcode_cli-9.1.1/seedcode/computer/lifecycle_guard.py +0 -173
  65. seedcode_cli-9.1.1/seedcode/computer/logbook.py +0 -104
  66. seedcode_cli-9.1.1/seedcode/computer/mouse.py +0 -57
  67. seedcode_cli-9.1.1/seedcode/computer/ocr.py +0 -213
  68. seedcode_cli-9.1.1/seedcode/computer/operator_skills.py +0 -577
  69. seedcode_cli-9.1.1/seedcode/computer/permissions.py +0 -203
  70. seedcode_cli-9.1.1/seedcode/computer/recovery.py +0 -115
  71. seedcode_cli-9.1.1/seedcode/computer/registry.py +0 -107
  72. seedcode_cli-9.1.1/seedcode/computer/resolver.py +0 -434
  73. seedcode_cli-9.1.1/seedcode/computer/screen.py +0 -130
  74. seedcode_cli-9.1.1/seedcode/computer/screen_state.py +0 -412
  75. seedcode_cli-9.1.1/seedcode/computer/selfguard.py +0 -197
  76. seedcode_cli-9.1.1/seedcode/computer/semantic.py +0 -100
  77. seedcode_cli-9.1.1/seedcode/computer/skills.py +0 -139
  78. seedcode_cli-9.1.1/seedcode/computer/state.py +0 -221
  79. seedcode_cli-9.1.1/seedcode/computer/verifier.py +0 -177
  80. seedcode_cli-9.1.1/seedcode/computer/vision.py +0 -327
  81. seedcode_cli-9.1.1/seedcode/computer/windows.py +0 -229
  82. seedcode_cli-9.1.1/seedcode/core/client.py +0 -9
  83. seedcode_cli-9.1.1/seedcode/core/modes.py +0 -130
  84. seedcode_cli-9.1.1/seedcode/tools/desktop.py +0 -395
  85. seedcode_cli-9.1.1/seedcode/ui/header.py +0 -325
  86. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/.gitignore +0 -0
  87. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/LICENSE +0 -0
  88. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/npm/LICENSE +0 -0
  89. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/scripts/pyproject_build_hook.py +0 -0
  90. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/__main__.py +0 -0
  91. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/_default_key_template.py +0 -0
  92. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/assets/logo.png +0 -0
  93. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/branding.py +0 -0
  94. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/cli.py +0 -0
  95. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/codemode.py +0 -0
  96. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/codemode_state.py +0 -0
  97. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/commands/about.py +0 -0
  98. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/commands/clear.py +0 -0
  99. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/commands/help.py +0 -0
  100. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/commands/palette.py +0 -0
  101. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/commands/provider.py +0 -0
  102. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/commands/theme.py +0 -0
  103. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/config/__init__.py +0 -0
  104. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/config/defaults.py +0 -0
  105. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/config/manager.py +0 -0
  106. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/__init__.py +0 -0
  107. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/http.py +0 -0
  108. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/identity.py +0 -0
  109. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/identity_store.py +0 -0
  110. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/lifecycle.py +0 -0
  111. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/limits.py +0 -0
  112. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/project.py +0 -0
  113. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/providers/__init__.py +0 -0
  114. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/providers/aerolink.py +0 -0
  115. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/providers/base.py +0 -0
  116. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/providers/custom.py +0 -0
  117. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/providers/default.py +0 -0
  118. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/providers/failover.py +0 -0
  119. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/providers/freemodel.py +0 -0
  120. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/providers/health.py +0 -0
  121. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/providers/ollama_start.py +0 -0
  122. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/providers/openrouter.py +0 -0
  123. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/session.py +0 -0
  124. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/streaming.py +0 -0
  125. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/core/tasks.py +0 -0
  126. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/default_api.py +0 -0
  127. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/defaults.py +0 -0
  128. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/memory/__init__.py +0 -0
  129. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/memory/manager.py +0 -0
  130. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/memory/storage.py +0 -0
  131. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/memory/store.py +0 -0
  132. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/tools/git.py +0 -0
  133. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/tools/search.py +0 -0
  134. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/tools/textio.py +0 -0
  135. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/tools/web.py +0 -0
  136. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/badges.py +0 -0
  137. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/codemode_header.py +0 -0
  138. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/content.py +0 -0
  139. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/dialog.py +0 -0
  140. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/fuzzy.py +0 -0
  141. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/layout.py +0 -0
  142. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/menu.py +0 -0
  143. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/mode_switch.py +0 -0
  144. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/palette.py +0 -0
  145. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/progress.py +0 -0
  146. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/prompts.py +0 -0
  147. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/reference.py +0 -0
  148. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/renderer.py +0 -0
  149. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/searchbox.py +0 -0
  150. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/selector.py +0 -0
  151. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/session_view.py +0 -0
  152. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/textbox.py +0 -0
  153. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/theme.py +0 -0
  154. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/ui/tree.py +0 -0
  155. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/utils/__init__.py +0 -0
  156. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/utils/helpers.py +0 -0
  157. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/utils/logger.py +0 -0
  158. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/utils/terminal_env.py +0 -0
  159. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/utils/text.py +0 -0
  160. {seedcode_cli-9.1.1 → seedcode_cli-9.2.0}/seedcode/workspace.py +0 -0
@@ -0,0 +1,496 @@
1
+ Metadata-Version: 2.4
2
+ Name: seedcode-cli
3
+ Version: 9.2.0
4
+ Summary: Seed Code — a premium terminal-based AI coding assistant. Plant ideas. Grow code.
5
+ Project-URL: Homepage, https://github.com/Alshahriar-07/seedcode-cli
6
+ Project-URL: Repository, https://github.com/Alshahriar-07/seedcode-cli
7
+ Project-URL: Documentation, https://github.com/Alshahriar-07/seedcode-cli#readme
8
+ Project-URL: Issues, https://github.com/Alshahriar-07/seedcode-cli/issues
9
+ Project-URL: Changelog, https://github.com/Alshahriar-07/seedcode-cli/releases
10
+ Author-email: Al Shahriar Sowan <github@eagox.studio>
11
+ License-Expression: PolyForm-Noncommercial-1.0.0
12
+ License-File: LICENSE
13
+ Keywords: agent,ai,chat,cli,coding-assistant,ollama,seedcode,terminal
14
+ Classifier: Development Status :: 5 - Production/Stable
15
+ Classifier: Environment :: Console
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Software Development
23
+ Classifier: Topic :: Terminals
24
+ Requires-Python: >=3.10
25
+ Requires-Dist: httpx>=0.27.0
26
+ Requires-Dist: openai>=1.40.0
27
+ Requires-Dist: prompt-toolkit>=3.0.43
28
+ Requires-Dist: pydantic>=2.6.0
29
+ Requires-Dist: rich>=13.7.0
30
+ Provides-Extra: dev
31
+ Requires-Dist: pytest-mock>=3.12.0; extra == 'dev'
32
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
33
+ Description-Content-Type: text/markdown
34
+
35
+ # Seed Code CLI
36
+
37
+ **Seed Code — Eagox Studio**
38
+
39
+ > ### Faster. Smaller. Smarter. Workspace-aware.
40
+ > *Plant ideas. Grow code.*
41
+
42
+ Seed Code is a premium terminal-based **AI coding agent** that runs directly
43
+ inside your terminal. One unified agent — not a chat bot with a mode switch —
44
+ reads your project, plans the work, writes and edits real files, runs real
45
+ commands, reads their output, searches the web for documentation, fixes what
46
+ fails, and reports honestly on what it actually did.
47
+
48
+ `seedcode --version` → `Seed Code CLI 9.2.0`
49
+
50
+ ---
51
+
52
+ ## What you get
53
+
54
+ - **One unified agent.** There are no Chat/Agent/Code modes: every request is
55
+ one agent turn. The engine decides from the request itself (conversation,
56
+ research, coding) which tools it needs, so a question does not read your
57
+ project and a coding task does not fetch the web unless it must.
58
+ - **A live, honest execution view.** While the agent works you see the actual
59
+ operation and the actual tool results — never a fabricated progress bar:
60
+
61
+ ```text
62
+ You > read README.md
63
+
64
+ ℹ Analyzing the task and inspecting the workspace...
65
+ ⚙ Reading README.md
66
+ ✓ Read README.md
67
+ ⚙ Running python -m pytest -q
68
+ ✓ Tests passed · Exit code: 0
69
+ ⚙ Searching the web for 'python fastapi docs'
70
+ ✓ Searched online for 'python fastapi docs'
71
+ ⚙ Editing app.py
72
+ ✓ Updated app.py — +12/-5 lines (lines 1–18)
73
+ @@ -1,5 +1,6 @@
74
+ import sys
75
+ -print("old")
76
+ +print("new")
77
+ ```
78
+
79
+ Activity lines carry no `AI >` prefix: they are indented under your turn,
80
+ with a marker for the real state — `⚙` started, `✓` succeeded, `✗` failed,
81
+ `ℹ` informational. User input keeps its `You >` label.
82
+ - **A real thinking indicator.** A small animated spinner sits beside the
83
+ *current operation* with a live elapsed timer, e.g. `⠹ Reading README.md……
84
+ · 12s`. The label is read from backend state (`state.operation`), so it says
85
+ what the agent is doing, not just "Working".
86
+ - **Real file operations and diffs.** File reads, creations, updates and
87
+ deletions are reported with the path, the line counts, the affected line
88
+ range and a bounded unified-diff preview; `Ctrl+E` expands the last diff.
89
+ - **Real terminal execution.** Commands show the command, the working
90
+ directory, live output, the exit code and the duration; `Ctrl+T` expands the
91
+ last command's full output. Windows PowerShell and POSIX shells both work.
92
+ - **Real internet research.** When a task needs current documentation the
93
+ agent searches keyless and reads the pages it found; the search query, the
94
+ source URL and the retrieved information are surfaced as real events.
95
+ - **A final report that matches reality.** When the turn ends you get a
96
+ report of the files created/modified/deleted, commands run, tests run and
97
+ their results — built only from operations that really happened.
98
+ - **Permissions that are asked, not assumed.** Dangerous actions (shell
99
+ commands, deletes, git mutations, writes outside the workspace) ask first:
100
+ Allow once / Always (session) / Allow All (session) / Deny. Grants live for
101
+ the session only and are never written to disk.
102
+ - **Providers and models.** Default (built in, no key), OpenRouter, FreeModel
103
+ Claude, FreeModel Codex, AeroLink and **Ollama** (started automatically when
104
+ you select it). Custom OpenAI-compatible providers can be added without
105
+ limit, each with its own name, base URL, key and model. Selecting a provider
106
+ never copies another provider's key or model, and a failed request is
107
+ reported rather than silently rerouted (automatic failover is opt-in).
108
+ - **Compact, responsive header.** A two-row bar — branding, provider, model and
109
+ mode on the first row; live status, workspace, context budget and the masked
110
+ key on the second — that never clips at any terminal width.
111
+
112
+ ---
113
+
114
+ ## Installation
115
+
116
+ After any installation method, `seedcode` is the primary command:
117
+
118
+ ```bash
119
+ seedcode
120
+ ```
121
+
122
+ ### pip (any platform)
123
+
124
+ ```bash
125
+ pip install seedcode-cli
126
+ ```
127
+
128
+ Requires **Python 3.10 or newer**. The wheel exposes the `seedcode` console
129
+ script; `python -m seedcode` also works as a developer fallback.
130
+
131
+ ### Windows — remote installer (recommended)
132
+
133
+ PowerShell 5.1 or newer:
134
+
135
+ ```powershell
136
+ irm https://seedcode-cli.vercel.app/install.ps1 | iex
137
+ ```
138
+
139
+ Installs for the current user (no administrator rights, no Python) into
140
+ `%LOCALAPPDATA%\Programs\SeedCode`, adds `seedcode` to your user `PATH`, and
141
+ verifies the installed binary reports exactly the requested version. It
142
+ downloads the official `SeedCode-CLI-9.2.0-windows-x64.exe` and the release's
143
+ `SHA256SUMS.txt`, and **refuses to install** if the checksum entry is missing,
144
+ the checksum file is unreachable, or the digest does not match.
145
+
146
+ ### Windows — Setup installer
147
+
148
+ Download `SeedCode-CLI-Setup-9.2.0.exe` from the
149
+ [Releases page](https://github.com/Alshahriar-07/seedcode-cli/releases/tag/v9.2.0)
150
+ and run it. The wizard installs Seed Code, adds it to `PATH`, creates a Start
151
+ Menu shortcut, verifies that the installed `seedcode.exe` reports the
152
+ installer's own version, and ships an uninstaller that never deletes your
153
+ project data silently.
154
+
155
+ ### Windows — portable executable
156
+
157
+ Download `SeedCode-CLI-9.2.0-windows-x64.exe` and run it directly. It is fully
158
+ self-contained (no Python, no installation, no `PATH` changes).
159
+
160
+ ### Linux / macOS — remote installer
161
+
162
+ ```bash
163
+ curl -fsSL https://seedcode-cli.vercel.app/install.sh | bash
164
+ ```
165
+
166
+ Installs for the current user and verifies the downloaded artifact against the
167
+ release's `SHA256SUMS.txt` before anything is installed. This release publishes
168
+ no prebuilt Linux/macOS binary, so the installer uses the official Python wheel
169
+ (requires **Python 3.10+ with pip**, or pipx when available).
170
+
171
+ ### From source (development)
172
+
173
+ ```bash
174
+ git clone https://github.com/Alshahriar-07/seedcode-cli.git
175
+ cd seedcode-cli
176
+ python -m pip install -e ".[dev]"
177
+ seedcode
178
+ ```
179
+
180
+ After installing by any route:
181
+
182
+ ```bash
183
+ seedcode --version # -> Seed Code CLI 9.2.0
184
+ ```
185
+
186
+ > **`seedcode` not recognized?** Open a *new* terminal. `PATH` changes only
187
+ > apply to fresh sessions; the installers verify this before they finish.
188
+
189
+ ---
190
+
191
+ ## First run
192
+
193
+ On first launch Seed Code asks where it may work:
194
+
195
+ ```text
196
+ Select Workspace
197
+ --------------------------------------------------------------
198
+ Where should Seed Code work? It reads, writes, indexes and runs
199
+ commands only inside the folder you pick.
200
+
201
+ 1 Current Folder D:\Projects\my-site
202
+ 2 Choose a Folder browse this PC and pick any directory
203
+
204
+ Select [1] >
205
+ ```
206
+
207
+ `Current Folder` keeps the directory you launched from; `Choose a Folder` opens
208
+ your operating system's native folder picker. The chosen directory becomes the
209
+ **workspace** — the single root for file reads and writes, project indexing,
210
+ `.seedcode` project memory, terminal commands and verification. Nothing outside
211
+ it is touched without permission.
212
+
213
+ Automation is never blocked: `SEEDCODE_WORKSPACE=<dir>` selects the workspace
214
+ directly, and `SEEDCODE_NO_WORKSPACE_PROMPT=1` (or a non-interactive host)
215
+ keeps the launch directory.
216
+
217
+ You then land in the persistent interface:
218
+
219
+ ```text
220
+ Seed Code CLI v9.2.0 · Ollama · qwen3:4b · Agent
221
+ ● Ready · Workspace D:\Projects\demo · Context 16,384 tokens
222
+
223
+ You > read README.md
224
+
225
+ ℹ Analyzing the task and inspecting the workspace...
226
+ ⚙ Reading README.md
227
+ ✓ Read README.md
228
+ ⠹ Inspecting project structure... · 4s
229
+
230
+ ╭─ Message ──────────────────────────────────────────────────────────────────╮
231
+ │ › read README.md │
232
+ ╰────────────────────────────────────────────────────────────────────────────╯
233
+ Enter ↵ send · Shift+Enter newline · / commands · Ctrl+C cancel
234
+ ```
235
+
236
+ The header is fixed: it never scrolls away and every value updates in place the
237
+ moment it changes. Only the conversation scrolls; the composer stays at the
238
+ bottom.
239
+
240
+ ### Composer and keys
241
+
242
+ The composer is a real bounded multiline editor with no prefix of its own — the
243
+ message you type is exactly the message that is sent.
244
+
245
+ | Key | Action |
246
+ | --- | --- |
247
+ | `Enter` | Send the message |
248
+ | `Shift+Enter` (or `Ctrl+J` / `Alt+Enter`) | Insert a newline without sending |
249
+ | `↑` / `↓` | Move inside a multiline message; walk history at the edges |
250
+ | `/` at the start of a line | Slash-command autocomplete (filter, arrows, Enter, Esc, mouse) |
251
+ | `Ctrl+C` | Cancel the running turn (or clear the composer when idle) |
252
+ | `Esc` | Dismiss suggestions / deny a pending permission prompt |
253
+ | `Ctrl+E` | Expand the last file diff |
254
+ | `Ctrl+T` | Expand the last command's output |
255
+ | `PageUp` / `PageDown`, `Ctrl+Home` / `Ctrl+End` | Scroll the conversation |
256
+ | Mouse wheel | Scroll the conversation |
257
+ | `Ctrl+D` | Exit |
258
+
259
+ Set `SEEDCODE_NO_TUI=1` (or `SEEDCODE_PLAIN=1`) to use the sequential console
260
+ instead — piped hosts do this automatically.
261
+
262
+ ---
263
+
264
+ ## Providers and models
265
+
266
+ | Provider | Key required | Notes |
267
+ | --- | --- | --- |
268
+ | **Default** | No | Seed Code's built-in connection; ships pointed at a free coding model. Also reads `OPENROUTER_API_KEY` / `SEEDCODE_DEFAULT_API_KEY` from the environment. |
269
+ | **OpenRouter** | Yes | Bring your own OpenRouter key. |
270
+ | **FreeModel Claude** | Yes | FreeModel backend, Claude models. |
271
+ | **FreeModel Codex** | Yes | FreeModel backend, Codex models. |
272
+ | **AeroLink** | Yes | AeroLink backend. |
273
+ | **Ollama** | No | Local models. Selecting Ollama starts `ollama serve` automatically when it is not already running. |
274
+ | **Custom** | Depends | Any OpenAI-compatible endpoint: name, base URL, key, model. |
275
+
276
+ Every provider keeps its **own** key and model: switching providers never copies
277
+ one provider's credentials or model onto another.
278
+
279
+ ### Ollama
280
+
281
+ 1. Install Ollama from <https://ollama.com> and pull a model, e.g.
282
+ `ollama pull qwen3:4b`.
283
+ 2. In Seed Code run `/provider` and choose **Ollama**, then `/model` and pick
284
+ the model you pulled.
285
+
286
+ If the server is not running, Seed Code starts `ollama serve` for you and waits
287
+ for it to become reachable. The default host is `http://localhost:11434`. A
288
+ request that fails is reported as a failure — Seed Code never silently switches
289
+ to a cloud provider when you selected Ollama (automatic failover is off unless
290
+ you enable `auto_failover`).
291
+
292
+ ---
293
+
294
+ ## How a task runs
295
+
296
+ 1. **Your request** is classified by a deterministic, model-free classifier
297
+ (`seedcode/core/intent.py`): conversation, research or coding.
298
+ 2. **The engine selects tools** for that intent — filesystem, terminal, git and
299
+ search for coding; the web tools for research. Nothing else is offered.
300
+ 3. **Every tool call performs a real operation.** A read reads, a write writes,
301
+ a command runs in the workspace shell; the result (including its error) is
302
+ returned to the model, which continues from the real output.
303
+ 4. **The loop continues** until the task is complete or genuinely blocked —
304
+ bounded so it can never spin forever, streamed so the UI never freezes, and
305
+ cancellable at any moment with `Ctrl+C`.
306
+ 5. **A report is produced** from the operations that actually happened: files
307
+ created/modified/deleted, commands executed with exit codes, tests run and
308
+ their results, and anything still incomplete.
309
+
310
+ ### Project memory and sessions
311
+
312
+ An active workspace gets a `.seedcode/` directory with a project index, memory
313
+ notes and the session checkpoint. A long task is checkpointed, so `/pause`
314
+ followed by `/resume` continues from the current task instead of starting over.
315
+ `/session` shows the live session's plan and per-task records; `/memory` shows
316
+ the project memory.
317
+
318
+ ---
319
+
320
+ ## Command reference
321
+
322
+ Every command is real and reachable; typing `/` at the start of a line shows
323
+ them with descriptions and filters as you type.
324
+
325
+ | Command | Purpose |
326
+ | --- | --- |
327
+ | `/help` | Show available commands |
328
+ | `/status` | Show the live runtime status |
329
+ | `/provider` | Select the active provider |
330
+ | `/model` | Browse and select a model for the active provider |
331
+ | `/custom` | Manage custom providers (add, edit, test, reorder, enable, delete) |
332
+ | `/apikey` | View, replace, remove, or validate the active provider's key |
333
+ | `/workspace` | Show the active project, or select a different folder |
334
+ | `/permission` | Show or set the tool permission level (alias `/permissions`) |
335
+ | `/session` | Show agent session state and per-task records |
336
+ | `/pause` / `/resume` / `/stop` | Pause, resume or stop the running agent session |
337
+ | `/memory` | Show the `.seedcode` project memory and recent session notes |
338
+ | `/index` | Show a compact tree of the current project |
339
+ | `/files` | Search project files (`Ctrl+P`) |
340
+ | `/tools` | List the tools available to the coding agent |
341
+ | `/history` | Browse the active provider's saved sessions |
342
+ | `/doctor` | Diagnose configuration, network and provider health |
343
+ | `/settings` | Open interactive settings (or `/settings <name> <value>`) |
344
+ | `/theme` | Pick a colour theme |
345
+ | `/palette` | Open the command palette (`Ctrl+K`) |
346
+ | `/shortcuts` | Show keyboard shortcuts |
347
+ | `/reset` | Forget the current conversation context |
348
+ | `/clear` | Clear the screen |
349
+ | `/config` | Show the current configuration |
350
+ | `/about` / `/version` | About / version |
351
+ | `/exit` | Leave the session (back to the main menu) |
352
+
353
+ Aliases: `quit`, `q`, `menu` → `/exit`; `keys` → `/shortcuts`; `commands` →
354
+ `/palette`; `search` → `/files`; `providers`/`custom-providers` → `/custom`;
355
+ `key` → `/apikey`; `project`/`folder`/`ws` → `/workspace`; `perm` →
356
+ `/permission`.
357
+
358
+ ---
359
+
360
+ ## Permissions
361
+
362
+ Seed Code uses a single hierarchical permission level:
363
+
364
+ | Level | May do |
365
+ | --- | --- |
366
+ | `read_only` | Inspect only: no writes, no commands, no git mutations. |
367
+ | `workspace` | Read anywhere, mutate only inside the workspace (the default). |
368
+ | `full_system` | No path restriction on mutations (still confirmed per action). |
369
+
370
+ On top of the level, *dangerous* actions ask for confirmation: shell commands,
371
+ file deletes, git mutations and writes outside the workspace. Answers are
372
+ `Allow once`, `Always` (this category, this session), `Allow All` (everything,
373
+ this session) or `Deny`. Nothing is persisted; a denial is reported to the
374
+ model as a real tool failure, not hidden.
375
+
376
+ Set the level with `/permission workspace` (or `read_only`, `full_system`).
377
+
378
+ ---
379
+
380
+ ## Internet access
381
+
382
+ Research requests can search and read current sources keylessly: a DuckDuckGo
383
+ HTML search, page fetching with boilerplate stripped, and a
384
+ character-budgeted, URL-attributed context block. Every failure degrades to
385
+ "no results" instead of crashing the turn. Set
386
+ `SEEDCODE_DISABLE_INTERNET=1` to turn it off for a session, and
387
+ `SEEDCODE_MAX_RETRIES` to bound provider retries.
388
+
389
+ ---
390
+
391
+ ## Configuration and local data
392
+
393
+ ```text
394
+ ~/.seedcode/
395
+ ├── config.json provider and application settings
396
+ ├── history/ saved conversation sessions (per provider)
397
+ ├── memory/ persistent local memory
398
+ └── logs/ rotating diagnostic logs
399
+ ```
400
+
401
+ `config.json` keeps one isolated entry per provider. Upgrades preserve it: your
402
+ settings, keys and history live outside the install directory and are never
403
+ deleted by an installer. `default_api`/`OPENROUTER_API_KEY` environment
404
+ variables are honoured for the Default provider.
405
+
406
+ Environment variables: `SEEDCODE_WORKSPACE`, `SEEDCODE_NO_WORKSPACE_PROMPT`,
407
+ `SEEDCODE_NO_TUI`, `SEEDCODE_PLAIN`, `SEEDCODE_PROVIDER`, `SEEDCODE_MODEL`,
408
+ `SEEDCODE_SHELL`, `SEEDCODE_DISABLE_INTERNET`, `SEEDCODE_MAX_RETRIES`,
409
+ `SEEDCODE_DIRNAME`, `SEEDCODE_DEBUG`, `SEEDCODE_DISABLE_DOTENV`,
410
+ `SEEDCODE_DOTENV`, `SEEDCODE_DEFAULT_API_KEY`, `OPENROUTER_API_KEY`.
411
+
412
+ ---
413
+
414
+ ## Building from source
415
+
416
+ ### Python distributions
417
+
418
+ ```bash
419
+ python -m pip install build twine
420
+ python -m build # dist/seedcode_cli-9.2.0-*.whl and *.tar.gz
421
+ python -m twine check dist/*
422
+ ```
423
+
424
+ ### Windows executable + installer
425
+
426
+ ```bat
427
+ scripts\windows\build.bat
428
+ ```
429
+
430
+ The pipeline runs the test suite as a release gate, builds the standalone
431
+ `dist\seedcode.exe` with PyInstaller (icon and version resource embedded,
432
+ `--version` verified against the source version), compiles the Inno Setup
433
+ installer, and stages the release directory with real SHA-256 checksums.
434
+ Requirements: Python 3.10+, PyInstaller, Inno Setup 6 or 7.
435
+
436
+ ---
437
+
438
+ ## Release artifacts (v9.2.0)
439
+
440
+ Release: [v9.2.0](https://github.com/Alshahriar-07/seedcode-cli/releases/tag/v9.2.0)
441
+
442
+ | File | What it is |
443
+ | --- | --- |
444
+ | `SeedCode-CLI-Setup-9.2.0.exe` | Windows Setup installer (Inno Setup; uninstaller, Start Menu entry). |
445
+ | `SeedCode-CLI-9.2.0-windows-x64.exe` | Standalone Windows executable — downloaded by the Windows IRM installer. |
446
+ | `seedcode_cli-9.2.0-py3-none-any.whl` | Python wheel — downloaded by the Linux IRM installer. |
447
+ | `seedcode_cli-9.2.0.tar.gz` | Python source distribution. |
448
+ | `seedcode-cli-9.2.0.tgz` | npm package tarball (launcher that downloads the official binary). |
449
+ | `SHA256SUMS.txt` | SHA-256 of every artifact above. |
450
+
451
+ Verify a download before using it:
452
+
453
+ ```bash
454
+ sha256sum -c SHA256SUMS.txt # Linux / macOS
455
+ Get-FileHash <file> -Algorithm SHA256 # Windows PowerShell
456
+ ```
457
+
458
+ All release artifacts are staged in `dist/release/9.2.0/` by the build pipeline;
459
+ digests are computed from the final files, never copied from an older release.
460
+
461
+ ---
462
+
463
+ ## Troubleshooting
464
+
465
+ | Symptom | Fix |
466
+ | --- | --- |
467
+ | `seedcode` not found after install | Open a new terminal (`PATH` applies to new sessions). |
468
+ | "No model selected" | Run `/model` (and `/provider` first if needed). |
469
+ | Ollama errors | Make sure Ollama is installed; Seed Code starts `ollama serve` automatically. `ollama list` shows pulled models. |
470
+ | Provider needs a key | `/apikey` for the active provider, or `/provider` to switch. |
471
+ | A command was blocked | Approve it at the permission prompt, or set `/permission full_system` for path-unrestricted writes. |
472
+ | Diagnostics | `/doctor` reports configuration, connection and provider health. |
473
+ | Corporate proxy / offline | Set `SEEDCODE_DISABLE_INTERNET=1`; cloud providers still need network access. |
474
+
475
+ Logs live in `~/.seedcode/logs/`.
476
+
477
+ ---
478
+
479
+ ## Security model
480
+
481
+ - API keys are stored in your user configuration directory, never in the repo,
482
+ never in shell history, and are always masked in the UI (`sk-or-v1...e031`).
483
+ - The workspace boundary is enforced by the permission manager, not by prompt
484
+ wording: tools ask before any privileged operation.
485
+ - Release installers verify SHA-256 against the published `SHA256SUMS.txt` and
486
+ abort on a missing entry or a mismatch; verification is never bypassed.
487
+
488
+ ---
489
+
490
+ ## Credits
491
+
492
+ Built by **Al Shahriar Sowan** (Eagox Studio).
493
+
494
+ ## License
495
+
496
+ PolyForm Noncommercial License 1.0.0 — see [LICENSE](LICENSE).