agent-code 2.0.0__tar.gz → 2.0.1__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 (74) hide show
  1. agent_code-2.0.1/PKG-INFO +1048 -0
  2. agent_code-2.0.1/README.md +1010 -0
  3. {agent_code-2.0.0 → agent_code-2.0.1}/pyproject.toml +1 -1
  4. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/__init__.py +1 -1
  5. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/agent.py +70 -4
  6. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/tui.py +87 -16
  7. agent_code-2.0.1/src/agent_code.egg-info/PKG-INFO +1048 -0
  8. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_doctor.py +1 -1
  9. agent_code-2.0.0/PKG-INFO +0 -702
  10. agent_code-2.0.0/README.md +0 -664
  11. agent_code-2.0.0/src/agent_code.egg-info/PKG-INFO +0 -702
  12. {agent_code-2.0.0 → agent_code-2.0.1}/LICENSE +0 -0
  13. {agent_code-2.0.0 → agent_code-2.0.1}/MANIFEST.in +0 -0
  14. {agent_code-2.0.0 → agent_code-2.0.1}/docs/addons.html +0 -0
  15. {agent_code-2.0.0 → agent_code-2.0.1}/docs/index.html +0 -0
  16. {agent_code-2.0.0 → agent_code-2.0.1}/docs/skills.html +0 -0
  17. {agent_code-2.0.0 → agent_code-2.0.1}/setup.cfg +0 -0
  18. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/__main__.py +0 -0
  19. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/addons.py +0 -0
  20. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/advanced_features.py +0 -0
  21. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/cli.py +0 -0
  22. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/data/icons/agent-code.ico +0 -0
  23. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/data/icons/agent-code.png +0 -0
  24. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/data/skills/browser/skill.md +0 -0
  25. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/data/skills/browser/skill.py +0 -0
  26. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/data/skills/filesystem/skill.md +0 -0
  27. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/data/skills/filesystem/skill.py +0 -0
  28. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/data/skills/public_api/skill.md +0 -0
  29. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/data/skills/public_api/skill.py +0 -0
  30. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/data/skills/temp_mail/skill.md +0 -0
  31. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/data/skills/temp_mail/skill.py +0 -0
  32. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/doctor.py +0 -0
  33. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/loader.py +0 -0
  34. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/mcp_manager.py +0 -0
  35. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/paths.py +0 -0
  36. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/projects.py +0 -0
  37. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code/skill_manager.py +0 -0
  38. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code.egg-info/SOURCES.txt +0 -0
  39. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code.egg-info/dependency_links.txt +0 -0
  40. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code.egg-info/entry_points.txt +0 -0
  41. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code.egg-info/requires.txt +0 -0
  42. {agent_code-2.0.0 → agent_code-2.0.1}/src/agent_code.egg-info/top_level.txt +0 -0
  43. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_activity_labels.py +0 -0
  44. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_activity_visibility.py +0 -0
  45. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_addons.py +0 -0
  46. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_advanced_features.py +0 -0
  47. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_api_key_routing.py +0 -0
  48. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_async_subagent_contract.py +0 -0
  49. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_browser_detection.py +0 -0
  50. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_chat_loading.py +0 -0
  51. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_composer_experience.py +0 -0
  52. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_core_mode.py +0 -0
  53. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_cross_platform.py +0 -0
  54. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_global_paths.py +0 -0
  55. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_markdown_spacing.py +0 -0
  56. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_mcp_manager.py +0 -0
  57. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_new_project_creation.py +0 -0
  58. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_plan_completion_signal.py +0 -0
  59. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_podman_error_compaction.py +0 -0
  60. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_podman_full_linux.py +0 -0
  61. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_provider_presets.py +0 -0
  62. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_research_and_model_picker.py +0 -0
  63. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_saved_provider_endpoint_dedup.py +0 -0
  64. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_secure_credential_storage.py +0 -0
  65. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_server_archive_safety.py +0 -0
  66. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_skill_command_dispatch.py +0 -0
  67. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_skill_store_auth_flow.py +0 -0
  68. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_skill_store_safety.py +0 -0
  69. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_skill_store_theme.py +0 -0
  70. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_ssh_quick_connect.py +0 -0
  71. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_three_click_force_stop.py +0 -0
  72. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_token_efficiency.py +0 -0
  73. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_tui_input_timeout.py +0 -0
  74. {agent_code-2.0.0 → agent_code-2.0.1}/tests/test_ui_crash_regressions.py +0 -0
@@ -0,0 +1,1048 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-code
3
+ Version: 2.0.1
4
+ Summary: Local AI agent with optional browser automation, sandboxed shell, and plug-and-play skills
5
+ Author: minecraftbefile-maker
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://agent-code-dev.github.io
8
+ Project-URL: Repository, https://github.com/Agent-code-dev/Agent-code
9
+ Project-URL: Issues, https://github.com/Agent-code-dev/Agent-code/issues
10
+ Project-URL: Changelog, https://github.com/Agent-code-dev/Agent-code/releases
11
+ Keywords: ai,agent,llm,browser,automation,skills,openai
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Operating System :: Microsoft :: Windows
17
+ Classifier: Operating System :: POSIX :: Linux
18
+ Classifier: Operating System :: MacOS
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Programming Language :: Python :: 3.14
25
+ Requires-Python: >=3.10
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Requires-Dist: openai>=1.0.0
29
+ Requires-Dist: customtkinter>=5.2.2
30
+ Requires-Dist: markdown-it-py>=3.0.0
31
+ Requires-Dist: mcp<2,>=1.9
32
+ Requires-Dist: keyring>=24.2
33
+ Requires-Dist: paramiko>=3.4.0
34
+ Requires-Dist: requests>=2.31.0
35
+ Requires-Dist: DrissionPage>=4.1.1.4
36
+ Requires-Dist: selenium>=4.20.0
37
+ Dynamic: license-file
38
+
39
+ <p align="center">
40
+ <img src="src/agent_code/data/icons/agent-code.png" width="145" alt="Agent Code Logo">
41
+ </p><h1 align="center">Agent Code 2.0</h1><h3 align="center">⚡ Your AI coding agent. Your tools. Your environment.</h3><p align="center">
42
+ An open-source, extensible AI coding agent built with Python and CustomTkinter.
43
+ <br>
44
+ Build, modify, debug, and manage projects using AI — with customizable Skills, application Add-ons, and MCP integrations.
45
+ </p><p align="center">
46
+ <a href="https://pypi.org/project/agent-code/">
47
+ <img src="https://img.shields.io/pypi/v/agent-code?style=for-the-badge&logo=pypi&logoColor=white" alt="PyPI Version">
48
+ </a>
49
+ <a href="https://www.python.org/">
50
+ <img src="https://img.shields.io/badge/Python-3.10%2B-3776AB?style=for-the-badge&logo=python&logoColor=white" alt="Python 3.10+">
51
+ </a>
52
+ <a href="LICENSE">
53
+ <img src="https://img.shields.io/badge/Application-MIT-2ea44f?style=for-the-badge" alt="MIT License">
54
+ </a>
55
+ <a href="server/LICENSE">
56
+ <img src="https://img.shields.io/badge/Server-AGPL--3.0-blue?style=for-the-badge" alt="Server AGPL License">
57
+ </a>
58
+ </p><p align="center">
59
+ <a href="https://github.com/agent-code-dev/agent-code">
60
+ <img src="https://img.shields.io/badge/GitHub-Repository-181717?style=flat-square&logo=github" alt="GitHub">
61
+ </a>
62
+ <a href="https://pypi.org/project/agent-code/">
63
+ <img src="https://img.shields.io/badge/PyPI-Install-3775A9?style=flat-square&logo=pypi" alt="PyPI">
64
+ </a>
65
+ <a href="https://agent-code-dev.github.io">
66
+ <img src="https://img.shields.io/badge/Website-Visit-4285F4?style=flat-square&logo=googlechrome&logoColor=white" alt="Website">
67
+ </a>
68
+ </p><p align="center">
69
+ <b>Windows · Linux · macOS</b>
70
+ <br>
71
+ <sub>Python 3.10+ · OpenAI-compatible AI providers · Extensible architecture</sub>
72
+ </p>---
73
+
74
+ 🌟 What is Agent Code?
75
+
76
+ Agent Code is an open-source desktop AI coding agent designed to make AI-assisted software development more extensible and customizable.
77
+
78
+ It combines an AI-powered development workspace with a flexible tool architecture, allowing developers to expand both the capabilities of the AI agent and the application itself.
79
+
80
+ Instead of locking users into one provider or one fixed collection of tools, Agent Code gives developers control over their AI models, integrations, execution environments, and extensions.
81
+
82
+ 🚀 The idea behind Agent Code
83
+
84
+ - 🤖 Use different AI providers with your own API keys.
85
+ - 🧩 Give the AI additional capabilities through native Python Skills.
86
+ - 🔌 Extend the desktop application through Add-ons.
87
+ - 🌐 Connect external tools through MCP.
88
+ - 💻 Work with local projects and development environments.
89
+ - 📦 Use an optional Alpine Linux sandbox.
90
+ - 🖥️ Connect to remote development machines through SSH.
91
+ - ⚙️ Customize agent workflows and execution permissions.
92
+
93
+ One application. Multiple extension systems. Your choice of AI provider.
94
+
95
+ ---
96
+
97
+ ✨ Features
98
+
99
+ <table>
100
+ <tr>
101
+ <td width="50%" valign="top">🤖 AI Coding Agent
102
+
103
+ - Tool-calling architecture
104
+
105
+ - Multi-step task execution
106
+
107
+ - Project-aware workflows
108
+
109
+ - Plan Mode and Build Mode
110
+
111
+ - Error investigation
112
+
113
+ - Task completion summaries
114
+
115
+ - File change and diff review
116
+
117
+ - Checkpoints and recovery
118
+
119
+ </td>
120
+ <td width="50%" valign="top">
121
+
122
+ 🎨 Desktop Workspace
123
+
124
+ - CustomTkinter interface
125
+
126
+ - Chat-based development
127
+
128
+ - Markdown responses
129
+
130
+ - Project navigation
131
+
132
+ - Model selection
133
+
134
+ - Provider configuration
135
+
136
+ - Activity Details panel
137
+
138
+ - Integrated Skills management
139
+
140
+ </td>
141
+ </tr>
142
+ <tr>
143
+ <td width="50%" valign="top">
144
+
145
+ 🧩 Extension Architecture
146
+
147
+ - Native Python Skills
148
+
149
+ - Application Add-ons
150
+
151
+ - MCP integration
152
+
153
+ - Custom agent tools
154
+
155
+ - Namespaced commands
156
+
157
+ - Application lifecycle hooks
158
+
159
+ - Supported UI extensions
160
+
161
+ - Service integrations
162
+
163
+ </td>
164
+ <td width="50%" valign="top">
165
+
166
+ 🖥️ Execution Environments
167
+
168
+ - Local execution
169
+
170
+ - Alpine Linux sandbox
171
+
172
+ - SSH remote execution
173
+
174
+ - Browser automation
175
+
176
+ - Configurable permissions
177
+
178
+ - Project workspace isolation
179
+
180
+ - Multiple execution targets
181
+
182
+ </td>
183
+ </tr>
184
+
185
+ </table>---
186
+
187
+ 🧠 Three Independent Extension Systems
188
+
189
+ Agent Code 2.0 has three distinct extension systems.
190
+
191
+ They are designed for different purposes and can coexist.
192
+
193
+ System| Purpose| Extension type
194
+ 🧩 Skills| Extend what the AI agent can do| Native Python
195
+ 🔌 Add-ons| Extend Agent Code itself| Application extensions
196
+ 🌐 MCP| Connect external tools| MCP protocol
197
+
198
+ 🧩 1. Skills — Extend the AI Agent
199
+
200
+ Skills give the AI agent additional tools and specialized capabilities.
201
+
202
+ A Skill can provide:
203
+
204
+ - Python functions.
205
+ - AI-callable tool schemas.
206
+ - Agent-specific commands.
207
+ - Natural-language command aliases.
208
+ - Skill metadata.
209
+ - Help documentation.
210
+
211
+ Example Skill structure
212
+
213
+ skills/
214
+ └── my_skill/
215
+ ├── skill.py
216
+ └── skill.md
217
+
218
+ Example implementation
219
+
220
+ SKILL = {
221
+ "name": "my_skill",
222
+ "description": "An example Agent Code skill."
223
+ }
224
+
225
+
226
+ def greet(name: str = "world") -> str:
227
+ return f"Hello, {name}!"
228
+
229
+
230
+ TOOL_SCHEMAS = [
231
+ {
232
+ "type": "function",
233
+ "function": {
234
+ "name": "greet",
235
+ "description": "Return a greeting.",
236
+ "parameters": {
237
+ "type": "object",
238
+ "properties": {
239
+ "name": {"type": "string"}
240
+ },
241
+ "required": []
242
+ }
243
+ }
244
+ }
245
+ ]
246
+
247
+ TOOL_CALLABLES = {
248
+ "greet": greet
249
+ }
250
+
251
+ The native loader reads:
252
+
253
+ Export| Purpose
254
+ "SKILL"| Skill metadata
255
+ "TOOL_SCHEMAS"| AI tool definitions
256
+ "TOOL_CALLABLES"| Python implementations
257
+ "COMMANDS"| Optional commands and aliases
258
+ "HELP"| Optional help text
259
+
260
+ Skills can be reloaded without restarting Agent Code. When an agent task is running, tool reloads are deferred until the task finishes.
261
+
262
+ Bundled Skills
263
+
264
+ Agent Code 2.0 includes:
265
+
266
+ Skill| Description
267
+ 📁 "filesystem"| File operations within the workspace
268
+ 🌐 "public_api"| Search and use public APIs
269
+ 📧 "temp_mail"| Temporary inbox and supported email integrations
270
+
271
+ Install bundled Skills:
272
+
273
+ agent-code skills install
274
+
275
+ List bundled Skills:
276
+
277
+ agent-code skills list
278
+
279
+ Developer documentation: "Build a Skill" (docs/skills.html)
280
+
281
+ ---
282
+
283
+ 🔌 2. Add-ons — Extend Agent Code Itself
284
+
285
+ Skills extend the AI agent.
286
+
287
+ Add-ons extend the application.
288
+
289
+ This is one of the central architectural differences in Agent Code 2.0.
290
+
291
+ Add-ons are designed to let developers customize supported parts of the application, rather than being limited to adding AI tools.
292
+
293
+ Add-on capabilities
294
+
295
+ - Custom application UI.
296
+ - Sidebar contributions.
297
+ - Additional application actions.
298
+ - Workspace extensions.
299
+ - Settings extensions.
300
+ - Toolbar contributions.
301
+ - Agent tools and commands.
302
+ - Lifecycle hooks.
303
+ - Supported service replacements.
304
+
305
+ Example structure
306
+
307
+ my-addon/
308
+ ├── addon.json
309
+ └── addon.py
310
+
311
+ Example manifest
312
+
313
+ {
314
+ "name": "my-addon",
315
+ "version": "1.0.0",
316
+ "description": "An example Agent Code extension",
317
+ "author": "Developer"
318
+ }
319
+
320
+ Example Add-on
321
+
322
+ def build_sidebar_button(parent, app):
323
+ import customtkinter as ctk
324
+
325
+ return ctk.CTkButton(
326
+ parent,
327
+ text="My Workspace",
328
+ command=lambda: app.log_line(
329
+ "Workspace opened",
330
+ "dim"
331
+ )
332
+ )
333
+
334
+
335
+ def register(api):
336
+ api.register_ui(
337
+ "my-workspace",
338
+ build_sidebar_button,
339
+ location="sidebar",
340
+ label="My Workspace"
341
+ )
342
+
343
+ api.register_action(
344
+ "Sample action",
345
+ lambda: "Action completed"
346
+ )
347
+
348
+ Supported UI locations
349
+
350
+ Location| Purpose
351
+ "sidebar"| Sidebar components
352
+ "addons"| Add-ons page
353
+ "settings"| Settings contributions
354
+ "toolbar"| Toolbar components
355
+ "workspace"| Workspace components
356
+
357
+ Add-ons can also register named service implementations where the relevant Core integration exposes a service extension point.
358
+
359
+ They use the supported Add-on API rather than unrestricted monkey-patching of application internals.
360
+
361
+ Security: Add-ons are trusted Python code and execute with the user's operating-system permissions. They are not sandboxed.
362
+
363
+ Developer documentation: "Add-on Development" (ADDON-DEVELOPMENT.md)
364
+
365
+ ---
366
+
367
+ 🌐 3. MCP — Connect External Tools
368
+
369
+ Agent Code supports Model Context Protocol integration.
370
+
371
+ MCP allows the AI agent to connect to external tool servers and use capabilities exposed by those servers.
372
+
373
+ This provides another way to extend the agent without implementing every external integration as a native Skill.
374
+
375
+ MCP is managed separately from native Skills and application Add-ons.
376
+
377
+ Skills, Add-ons, and MCP are independent systems.
378
+
379
+ ---
380
+
381
+ ⚙️ Agent Modes and Permissions
382
+
383
+ Agent Code separates the way an agent approaches a task from the permissions granted to its operations.
384
+
385
+ 📋 Plan Mode
386
+
387
+ Plan Mode focuses on understanding a task before implementation.
388
+
389
+ Useful for:
390
+
391
+ - Analyzing an existing project.
392
+ - Understanding requirements.
393
+ - Identifying files that may need changes.
394
+ - Preparing implementation steps.
395
+ - Reviewing an approach before building.
396
+
397
+ 🛠️ Build Mode
398
+
399
+ Build Mode focuses on implementing the requested work.
400
+
401
+ The agent can use its available tools to:
402
+
403
+ - Create files.
404
+ - Modify source code.
405
+ - Execute supported commands.
406
+ - Investigate errors.
407
+ - Implement planned changes.
408
+ - Review task results.
409
+
410
+ ⚡ Core Mode
411
+
412
+ Core Mode provides a lightweight agent configuration with a reduced tool surface.
413
+
414
+ It focuses on essential capabilities such as file creation, shell execution, and CURL operations.
415
+
416
+ Skills and Add-ons behavior follows the application's Core Mode policy.
417
+
418
+ 🔐 Permission behavior
419
+
420
+ Agent Code provides configurable permission behavior.
421
+
422
+ Mode| Purpose
423
+ 🛡️ Safe| Restrict potentially sensitive operations
424
+ ⚙️ Normal| Balanced execution permissions
425
+ ⚡ Auto| Automatically allow operations covered by the configured policy
426
+ 👁️ Read-only| Restrict operations that modify files or execute commands
427
+
428
+ Automatic permission does not override remote-host restrictions, operating-system permissions, or unavailable execution environments.
429
+
430
+ ---
431
+
432
+ 🖥️ Execution Environments
433
+
434
+ Agent Code separates tool capabilities from their execution environment.
435
+
436
+ 💻 Local Execution
437
+
438
+ Run supported operations on the host computer.
439
+
440
+ Useful for:
441
+
442
+ - Local development tools.
443
+ - Project files.
444
+ - Installed software.
445
+ - Local configuration.
446
+ - Browser access.
447
+
448
+ When the optional sandbox is disabled, shell commands execute on the host OS.
449
+
450
+ 📦 Alpine Linux Sandbox
451
+
452
+ Agent Code supports an optional Podman-based Linux sandbox.
453
+
454
+ The sandbox uses:
455
+
456
+ Alpine Linux 3.22
457
+
458
+ It provides:
459
+
460
+ - Bash.
461
+ - Core Linux utilities.
462
+ - Git.
463
+ - CURL.
464
+ - Python and pip.
465
+ - GCC and G++ through Alpine build packages.
466
+ - Alpine package management.
467
+
468
+ Install additional packages inside the container using:
469
+
470
+ apk add --no-cache package-name
471
+
472
+ The project workspace is mounted into the container at:
473
+
474
+ /workspace
475
+
476
+ The sandbox uses a separate container environment, dropped capabilities, and "no-new-privileges".
477
+
478
+ However, the project workspace remains shared with the host. Containerization is not a guarantee against every form of malicious or destructive operation.
479
+
480
+ 🌐 SSH Remote Execution
481
+
482
+ Connect Agent Code to remote development machines.
483
+
484
+ The SSH integration supports:
485
+
486
+ - Hostname or IP.
487
+ - SSH username.
488
+ - Custom port.
489
+ - Private-key path.
490
+ - SSH agent.
491
+ - OpenSSH configuration.
492
+ - Password authentication.
493
+
494
+ Remote commands are subject to the configured permission policy.
495
+
496
+ Unknown SSH host keys are not silently trusted. Verify the host fingerprint before accepting it.
497
+
498
+ Install the optional SSH dependency if required:
499
+
500
+ python -m pip install paramiko
501
+
502
+ Only connect to machines you are authorized to administer.
503
+
504
+ ---
505
+
506
+ 🌍 Browser Automation
507
+
508
+ Agent Code includes browser automation capabilities through its browser integration.
509
+
510
+ Browser tools can support workflows involving:
511
+
512
+ - Opening websites.
513
+ - Navigating pages.
514
+ - Interacting with web interfaces.
515
+ - Inspecting page content.
516
+ - Browser diagnostics.
517
+
518
+ A supported Chromium-based browser must be installed on the machine where browser automation runs.
519
+
520
+ Firefox and Chromium browser detection is included in the diagnostic workflow, but browser compatibility depends on the automation backend and installed browser components.
521
+
522
+ If automatic browser detection fails, check the browser executable configuration.
523
+
524
+ Run:
525
+
526
+ agent-code doctor
527
+
528
+ ---
529
+
530
+ 🤖 AI Providers and Models
531
+
532
+ Agent Code uses an OpenAI-compatible client architecture.
533
+
534
+ You can configure supported providers through the application's API and model settings.
535
+
536
+ Supported provider presets
537
+
538
+ Provider| Endpoint
539
+ OpenAI| "https://api.openai.com/v1"
540
+ Google AI Studio| "https://generativelanguage.googleapis.com/v1beta/openai/"
541
+ Anthropic| "https://api.anthropic.com/v1/"
542
+ OpenRouter| Provider preset
543
+ Custom| User-configured OpenAI-compatible endpoint
544
+
545
+ Provider compatibility depends on supported API features, model identifiers, and request formats.
546
+
547
+ The Anthropic compatibility endpoint uses the OpenAI SDK compatibility surface. Some native Claude API features may not be available through that interface.
548
+
549
+ 🔑 Bring Your Own Key
550
+
551
+ Agent Code is designed around BYOK.
552
+
553
+ You control:
554
+
555
+ - Your AI provider.
556
+ - Your API credentials.
557
+ - Your selected model.
558
+ - Your API usage.
559
+ - Your provider spending.
560
+
561
+ There is no mandatory recurring AI subscription built into the application.
562
+
563
+ External providers may charge for their APIs or impose their own account requirements.
564
+
565
+ 🔒 Credential storage
566
+
567
+ Provider credentials are stored through Python "keyring" in the operating system's credential store where supported.
568
+
569
+ Examples include:
570
+
571
+ - Windows Credential Manager.
572
+ - macOS Keychain.
573
+ - Linux Secret Service-compatible keyrings.
574
+
575
+ The JSON configuration stores credential references rather than newly saved API-key values.
576
+
577
+ If the operating-system credential store is unavailable, saving credentials fails rather than silently writing new secrets in plaintext.
578
+
579
+ ---
580
+
581
+ 🎨 Desktop Experience
582
+
583
+ Agent Code uses Python and CustomTkinter for its desktop interface.
584
+
585
+ The interface is organized around the development workspace.
586
+
587
+ Workspace features
588
+
589
+ - Chat-based interaction.
590
+ - Project navigation.
591
+ - Skills management.
592
+ - Add-ons management.
593
+ - MCP configuration.
594
+ - API and model settings.
595
+ - Help and documentation.
596
+ - Task status and activity information.
597
+
598
+ Activity Details
599
+
600
+ Agent Code separates the main conversation from internal task activity.
601
+
602
+ Activity Details OFF
603
+
604
+ The chat remains focused on user messages and assistant responses.
605
+
606
+ During a task, the compact status is:
607
+
608
+ "Working in project"
609
+
610
+ Internal settings, model events, checkpoints, and detailed task events stay outside the main conversation.
611
+
612
+ Activity Details ON
613
+
614
+ The activity panel provides access to detailed task and tool events, including completion information and recovery details.
615
+
616
+ Task stopping
617
+
618
+ Agent Code supports cooperative stop controls and a three-click force-stop gesture.
619
+
620
+ The force-stop behavior requests stronger cancellation of the agent's work and further AI/tool communication.
621
+
622
+ It is not designed to close the browser application.
623
+
624
+ Some blocking network calls or operations may only stop when their timeout or current operation returns.
625
+
626
+ Recovery and review
627
+
628
+ Task completion reports can include:
629
+
630
+ - Changed files.
631
+ - Text additions and deletions where safely measurable.
632
+ - Binary file identification.
633
+ - Diff review.
634
+ - Recovery information.
635
+
636
+ Review file changes and restore conflicts before applying recovery actions.
637
+
638
+ ---
639
+
640
+ 📥 Installation
641
+
642
+ Requirements
643
+
644
+ - Python 3.10 or newer.
645
+ - Tkinter.
646
+ - CustomTkinter.
647
+ - Internet access for remote AI providers.
648
+ - A compatible browser for browser automation.
649
+
650
+ Optional features require their respective dependencies.
651
+
652
+ Install from PyPI
653
+
654
+ The recommended installation method:
655
+
656
+ python -m pip install --upgrade pip
657
+ python -m pip install agent-code
658
+
659
+ Upgrade:
660
+
661
+ python -m pip install --upgrade agent-code
662
+
663
+ Ubuntu / Debian
664
+
665
+ Install the required system components:
666
+
667
+ sudo apt update
668
+
669
+ sudo apt install \
670
+ python3 \
671
+ python3-venv \
672
+ python3-tk \
673
+ chromium \
674
+ podman
675
+
676
+ Podman is optional unless you want the Linux sandbox.
677
+
678
+ Create a virtual environment:
679
+
680
+ python3 -m venv .venv
681
+
682
+ source .venv/bin/activate
683
+
684
+ python -m pip install --upgrade pip
685
+
686
+ python -m pip install agent-code
687
+
688
+ Windows
689
+
690
+ Install Python 3.10 or newer with Tcl/Tk support.
691
+
692
+ Install a compatible Chromium-based browser for browser automation.
693
+
694
+ Then:
695
+
696
+ python -m pip install agent-code
697
+
698
+ macOS
699
+
700
+ Install Python 3.10 or newer with Tcl/Tk support.
701
+
702
+ Install a compatible Chromium-based browser.
703
+
704
+ Then:
705
+
706
+ python3 -m pip install agent-code
707
+
708
+ Install from source
709
+
710
+ git clone https://github.com/agent-code-dev/agent-code.git
711
+
712
+ cd agent-code
713
+
714
+ python -m venv .venv
715
+
716
+ source .venv/bin/activate
717
+
718
+ python -m pip install --upgrade pip
719
+
720
+ python -m pip install .
721
+
722
+ On Windows, activate the virtual environment using:
723
+
724
+ .venv\Scripts\activate
725
+
726
+ ---
727
+
728
+ 🚀 Getting Started
729
+
730
+ Launch the desktop application
731
+
732
+ agent-code
733
+
734
+ Explicitly launch the GUI
735
+
736
+ agent-code gui
737
+
738
+ Launch the terminal interface
739
+
740
+ agent-code tui
741
+
742
+ The TUI is useful for headless Linux environments and SSH sessions.
743
+
744
+ On Linux, Agent Code can automatically select the TUI when no graphical display is available.
745
+
746
+ Check your installation
747
+
748
+ agent-code doctor
749
+
750
+ Generate machine-readable diagnostics:
751
+
752
+ agent-code doctor --json
753
+
754
+ Save a diagnostics report:
755
+
756
+ agent-code doctor --output report.json
757
+
758
+ The diagnostics report does not include API keys.
759
+
760
+ Get command help
761
+
762
+ agent-code --help
763
+
764
+ ---
765
+
766
+ ⚙️ First-Time Configuration
767
+
768
+ 1. Launch Agent Code.
769
+ 2. Open Settings.
770
+ 3. Navigate to the API and model settings.
771
+ 4. Select a provider.
772
+ 5. Enter your API key.
773
+ 6. Select a supported model.
774
+ 7. Save the configuration.
775
+ 8. Send a small test prompt.
776
+
777
+ Choose the project directory you want Agent Code to work in.
778
+
779
+ Project workspace files and chat data are associated with the active project, while Skills and Add-ons use per-user locations.
780
+
781
+ ---
782
+
783
+ 📁 Configuration and Data Locations
784
+
785
+ Agent Code uses platform-specific directories for user configuration and extensions.
786
+
787
+ Data| Linux / macOS| Windows
788
+ Configuration| "~/.config/agent-code/"| "%APPDATA%\agent-code\"
789
+ Skills| "~/.local/share/agent-code/skills/"| "%LOCALAPPDATA%\AgentCode\skills\"
790
+ Add-ons| "~/.local/share/agent-code/addons/"| "%LOCALAPPDATA%\AgentCode\addons\"
791
+ Project workspace| "./workspace/"| "./workspace/"
792
+ Project chats| "./chats/"| "./chats/"
793
+
794
+ The Linux directories respect the corresponding XDG environment variables.
795
+
796
+ Legacy project-local Skills can be migrated into the global Skills directory. Existing global Skills are not overwritten during migration.
797
+
798
+ ---
799
+
800
+ 🧰 Command Reference
801
+
802
+ Application commands
803
+
804
+ Command| Description
805
+ "agent-code"| Launch the application
806
+ "agent-code gui"| Explicitly launch the desktop GUI
807
+ "agent-code tui"| Launch the terminal interface
808
+ "agent-code doctor"| Check the local environment
809
+ "agent-code doctor --json"| Print diagnostic information as JSON
810
+ "agent-code doctor --output report.json"| Save a diagnostic report
811
+ "agent-code --help"| Display available commands
812
+
813
+ Skills commands
814
+
815
+ Command| Description
816
+ "agent-code skills list"| List bundled Skills
817
+ "agent-code skills install"| Install bundled Skills into the user/project environment
818
+
819
+ In-chat commands
820
+
821
+ The agent also supports built-in and extension-provided commands.
822
+
823
+ Examples include:
824
+
825
+ Command| Purpose
826
+ "/reset"| Reset conversation memory
827
+ "/history"| Display recent messages
828
+ "/skills"| Inspect loaded Skills and commands
829
+ "/save"| Save the conversation
830
+ "/open <file>"| Open a workspace file
831
+
832
+ Skills can register additional commands.
833
+
834
+ Add-on commands are namespaced, for example:
835
+
836
+ /sample-addon:status
837
+
838
+ ---
839
+
840
+ 🔐 Security
841
+
842
+ Agent Code is an AI development tool that can execute commands and load extensions. Its security depends on the selected execution environment and the code you choose to trust.
843
+
844
+ Local shell
845
+
846
+ When Podman sandboxing is disabled:
847
+
848
+ - Commands execute on the host operating system.
849
+ - Shell operators and known high-risk command patterns are restricted.
850
+ - Workspace boundaries are enforced where detectable.
851
+ - It is not a strong security boundary.
852
+
853
+ Podman sandbox
854
+
855
+ When enabled:
856
+
857
+ - Shell and background commands run in Alpine Linux 3.22.
858
+ - The project workspace is mounted into the container.
859
+ - Container capabilities are dropped.
860
+ - "no-new-privileges" is enabled.
861
+ - Outbound networking depends on Podman and host network configuration.
862
+
863
+ The sandbox runs as root inside the container, not as host root.
864
+
865
+ The workspace remains shared with the host, so commands can still change or delete project files.
866
+
867
+ Extension security
868
+
869
+ Component| Security consideration
870
+ Skills| Arbitrary Python code
871
+ Add-ons| Trusted Python code with user permissions
872
+ MCP| External tools may access exposed resources
873
+ Local shell| Executes on the host when sandboxing is disabled
874
+ SSH| Executes commands on the connected remote machine
875
+
876
+ Security recommendations
877
+
878
+ - Review Skills before installing them.
879
+ - Only install Add-ons from trusted developers.
880
+ - Connect only trusted MCP servers.
881
+ - Protect API credentials.
882
+ - Keep SSH private keys secure.
883
+ - Review commands before granting automatic permissions.
884
+ - Inspect file diffs before accepting changes.
885
+ - Treat web pages and repository content as untrusted input.
886
+
887
+ ---
888
+
889
+ 🛠️ Development
890
+
891
+ Clone the repository:
892
+
893
+ git clone https://github.com/agent-code-dev/agent-code.git
894
+
895
+ cd agent-code
896
+
897
+ Create a development environment:
898
+
899
+ python -m venv .venv
900
+
901
+ source .venv/bin/activate
902
+
903
+ Install the project:
904
+
905
+ python -m pip install --upgrade pip
906
+
907
+ python -m pip install -e .
908
+
909
+ Run tests:
910
+
911
+ python -m pytest -q
912
+
913
+ Build distribution packages:
914
+
915
+ python -m pip install build
916
+
917
+ python -m build
918
+
919
+ The project uses a "src/"-based Python package structure.
920
+
921
+ ---
922
+
923
+ 📚 Documentation
924
+
925
+ The repository includes offline-friendly HTML documentation.
926
+
927
+ Documentation| Description
928
+ 📖 "User Guide" (docs/index.html)| Installation, configuration, workflows, permissions, browser, SSH and troubleshooting
929
+ 🧩 "Skills Guide" (docs/skills.html)| Skill structure, tool schemas, commands and development
930
+ 🔌 "Add-on Guide" (docs/addons.html)| Application extension API, UI contributions, actions, hooks and services
931
+ 📋 "Release Notes" (RELEASE-NOTES-2.0.0.md)| Agent Code 2.0.0 changes
932
+ 🖥️ "Server Documentation" (server/README.md)| Separate Skills registry backend
933
+
934
+ ---
935
+
936
+ 🗂️ Project Structure
937
+
938
+ Agent-code/
939
+ │
940
+ ├── src/
941
+ │ └── agent_code/
942
+ │ ├── __init__.py
943
+ │ ├── __main__.py
944
+ │ ├── agent.py
945
+ │ ├── loader.py
946
+ │ ├── addons.py
947
+ │ ├── advanced_features.py
948
+ │ ├── mcp_manager.py
949
+ │ ├── paths.py
950
+ │ ├── projects.py
951
+ │ ├── skill_manager.py
952
+ │ ├── doctor.py
953
+ │ ├── cli.py
954
+ │ ├── tui.py
955
+ │ │
956
+ │ └── data/
957
+ │ ├── icons/
958
+ │ └── skills/
959
+ │
960
+ ├── docs/
961
+ │ ├── index.html
962
+ │ ├── skills.html
963
+ │ └── addons.html
964
+ │
965
+ ├── server/
966
+ │ ├── skill-server.py
967
+ │ ├── README.md
968
+ │ └── LICENSE
969
+ │
970
+ ├── tests/
971
+ │
972
+ ├── ADDON-DEVELOPMENT.md
973
+ ├── RELEASE-NOTES-2.0.0.md
974
+ ├── README.md
975
+ ├── LICENSE
976
+ ├── MANIFEST.in
977
+ └── pyproject.toml
978
+
979
+ ---
980
+
981
+ 🗺️ Roadmap
982
+
983
+ Areas of continued development:
984
+
985
+ - 🚀 Improve agent reliability and task execution.
986
+ - 🧠 Reduce unnecessary AI context and token consumption.
987
+ - 🧩 Expand the Skills ecosystem.
988
+ - 🔌 Expand supported Add-on extension points.
989
+ - 🌐 Improve MCP integration.
990
+ - 📦 Improve sandbox reliability.
991
+ - 🖥️ Improve cross-platform compatibility.
992
+ - 🔐 Strengthen extension security.
993
+ - 🎨 Improve the desktop experience.
994
+ - ⚙️ Improve provider compatibility and configuration.
995
+
996
+ ---
997
+
998
+ 🤝 Contributing
999
+
1000
+ Contributions are welcome!
1001
+
1002
+ You can help Agent Code by:
1003
+
1004
+ - Reporting bugs.
1005
+ - Suggesting features.
1006
+ - Improving documentation.
1007
+ - Creating Skills.
1008
+ - Developing Add-ons.
1009
+ - Testing compatibility.
1010
+ - Reviewing architecture.
1011
+ - Submitting pull requests.
1012
+
1013
+ For significant changes, open an issue before starting implementation so the proposed direction can be discussed.
1014
+
1015
+ Repository: "agent-code-dev/agent-code" (https://github.com/agent-code-dev/agent-code)
1016
+
1017
+ ---
1018
+
1019
+ 📜 License
1020
+
1021
+ Agent Code uses separate licenses for its application and standalone server.
1022
+
1023
+ Component| License
1024
+ Agent Code application| MIT
1025
+ Standalone registry backend ("server/")| AGPL-3.0-only
1026
+
1027
+ The server's AGPL license does not replace the application's MIT license.
1028
+
1029
+ See:
1030
+
1031
+ - "Application LICENSE" (LICENSE)
1032
+ - "Server LICENSE" (server/LICENSE)
1033
+
1034
+ ---
1035
+
1036
+ <p align="center">
1037
+ <img src="src/agent_code/data/icons/agent-code.png" width="65" alt="Agent Code">
1038
+ </p><h2 align="center">⚡ Agent Code 2.0</h2><p align="center">
1039
+ <b>Your AI coding agent. Your tools. Your environment.</b>
1040
+ <br><br>
1041
+ <a href="https://github.com/agent-code-dev/agent-code">GitHub</a>
1042
+ ·
1043
+ <a href="https://pypi.org/project/agent-code/">PyPI</a>
1044
+ ·
1045
+ <a href="https://agent-code-dev.github.io">Website</a>
1046
+ </p><p align="center">
1047
+ <sub>Built with Python · Designed for extensibility</sub>
1048
+ </p>