code-puppy 0.0.186__tar.gz → 0.0.314__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.
- {code_puppy-0.0.186 → code_puppy-0.0.314}/.gitignore +4 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/PKG-INFO +190 -53
- {code_puppy-0.0.186 → code_puppy-0.0.314}/README.md +180 -36
- code_puppy-0.0.314/code_puppy/__init__.py +10 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/agents/agent_c_reviewer.py +60 -9
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/agents/agent_code_puppy.py +7 -1
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/agents/agent_code_reviewer.py +12 -2
- code_puppy-0.0.314/code_puppy/agents/agent_cpp_reviewer.py +132 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/agents/agent_creator_agent.py +45 -4
- code_puppy-0.0.314/code_puppy/agents/agent_golang_reviewer.py +151 -0
- code_puppy-0.0.314/code_puppy/agents/agent_javascript_reviewer.py +160 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/agents/agent_manager.py +58 -11
- code_puppy-0.0.314/code_puppy/agents/agent_planning.py +163 -0
- code_puppy-0.0.314/code_puppy/agents/agent_python_programmer.py +165 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/agents/agent_python_reviewer.py +28 -6
- code_puppy-0.0.314/code_puppy/agents/agent_qa_expert.py +163 -0
- code_puppy-0.0.314/code_puppy/agents/agent_security_auditor.py +181 -0
- code_puppy-0.0.314/code_puppy/agents/agent_typescript_reviewer.py +166 -0
- code_puppy-0.0.314/code_puppy/agents/base_agent.py +1702 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/agents/json_agent.py +8 -0
- code_puppy-0.0.314/code_puppy/agents/prompt_reviewer.py +145 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/callbacks.py +101 -4
- code_puppy-0.0.314/code_puppy/chatgpt_codex_client.py +281 -0
- code_puppy-0.0.314/code_puppy/claude_cache_client.py +165 -0
- code_puppy-0.0.314/code_puppy/command_line/add_model_menu.py +1065 -0
- code_puppy-0.0.314/code_puppy/command_line/attachments.py +395 -0
- code_puppy-0.0.314/code_puppy/command_line/autosave_menu.py +606 -0
- code_puppy-0.0.314/code_puppy/command_line/command_handler.py +282 -0
- code_puppy-0.0.314/code_puppy/command_line/command_registry.py +150 -0
- code_puppy-0.0.314/code_puppy/command_line/config_commands.py +661 -0
- code_puppy-0.0.314/code_puppy/command_line/core_commands.py +730 -0
- code_puppy-0.0.314/code_puppy/command_line/diff_menu.py +858 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/load_context_completion.py +15 -22
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/add_command.py +3 -16
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/base.py +0 -3
- code_puppy-0.0.314/code_puppy/command_line/mcp/catalog_server_installer.py +176 -0
- code_puppy-0.0.314/code_puppy/command_line/mcp/custom_server_form.py +649 -0
- code_puppy-0.0.314/code_puppy/command_line/mcp/custom_server_installer.py +196 -0
- code_puppy-0.0.314/code_puppy/command_line/mcp/edit_command.py +148 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/handler.py +9 -2
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/help_command.py +7 -2
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/install_command.py +15 -26
- code_puppy-0.0.314/code_puppy/command_line/mcp/install_menu.py +681 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/list_command.py +2 -2
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/logs_command.py +2 -2
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/remove_command.py +2 -2
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/restart_command.py +12 -4
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/search_command.py +16 -10
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/start_all_command.py +18 -6
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/start_command.py +17 -10
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/status_command.py +4 -5
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/stop_all_command.py +7 -1
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/stop_command.py +8 -4
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/test_command.py +2 -2
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/wizard_utils.py +20 -16
- code_puppy-0.0.314/code_puppy/command_line/mcp_completion.py +174 -0
- code_puppy-0.0.314/code_puppy/command_line/model_picker_completion.py +179 -0
- code_puppy-0.0.314/code_puppy/command_line/model_settings_menu.py +827 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/motd.py +5 -5
- code_puppy-0.0.314/code_puppy/command_line/pin_command_completion.py +329 -0
- code_puppy-0.0.314/code_puppy/command_line/prompt_toolkit_completion.py +701 -0
- code_puppy-0.0.314/code_puppy/command_line/session_commands.py +296 -0
- code_puppy-0.0.314/code_puppy/config.py +1497 -0
- code_puppy-0.0.314/code_puppy/error_logging.py +118 -0
- code_puppy-0.0.314/code_puppy/gemini_code_assist.py +385 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/http_utils.py +178 -10
- code_puppy-0.0.314/code_puppy/keymap.py +120 -0
- code_puppy-0.0.314/code_puppy/main.py +800 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/blocking_startup.py +9 -11
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/captured_stdio_server.py +2 -2
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/config_wizard.py +4 -4
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/dashboard.py +15 -6
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/managed_server.py +3 -21
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/registry.py +6 -6
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/server_registry_catalog.py +24 -5
- code_puppy-0.0.314/code_puppy/messaging/__init__.py +223 -0
- code_puppy-0.0.314/code_puppy/messaging/bus.py +610 -0
- code_puppy-0.0.314/code_puppy/messaging/commands.py +167 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/messaging/message_queue.py +10 -29
- code_puppy-0.0.314/code_puppy/messaging/messages.py +470 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/messaging/queue_console.py +0 -23
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/messaging/renderers.py +43 -146
- code_puppy-0.0.314/code_puppy/messaging/rich_renderer.py +877 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/messaging/spinner/__init__.py +13 -3
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/messaging/spinner/console_spinner.py +85 -51
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/messaging/spinner/spinner_base.py +29 -0
- code_puppy-0.0.314/code_puppy/model_factory.py +744 -0
- code_puppy-0.0.314/code_puppy/model_utils.py +113 -0
- code_puppy-0.0.314/code_puppy/models.json +118 -0
- code_puppy-0.0.314/code_puppy/models_dev_api.json +1 -0
- code_puppy-0.0.314/code_puppy/models_dev_parser.py +592 -0
- code_puppy-0.0.314/code_puppy/plugins/__init__.py +174 -0
- code_puppy-0.0.314/code_puppy/plugins/chatgpt_oauth/__init__.py +8 -0
- code_puppy-0.0.314/code_puppy/plugins/chatgpt_oauth/config.py +52 -0
- code_puppy-0.0.314/code_puppy/plugins/chatgpt_oauth/oauth_flow.py +328 -0
- code_puppy-0.0.314/code_puppy/plugins/chatgpt_oauth/register_callbacks.py +92 -0
- code_puppy-0.0.314/code_puppy/plugins/chatgpt_oauth/test_plugin.py +293 -0
- code_puppy-0.0.314/code_puppy/plugins/chatgpt_oauth/utils.py +478 -0
- code_puppy-0.0.314/code_puppy/plugins/claude_code_oauth/README.md +167 -0
- code_puppy-0.0.314/code_puppy/plugins/claude_code_oauth/SETUP.md +93 -0
- code_puppy-0.0.314/code_puppy/plugins/claude_code_oauth/__init__.py +6 -0
- code_puppy-0.0.314/code_puppy/plugins/claude_code_oauth/config.py +50 -0
- code_puppy-0.0.314/code_puppy/plugins/claude_code_oauth/register_callbacks.py +306 -0
- code_puppy-0.0.314/code_puppy/plugins/claude_code_oauth/test_plugin.py +283 -0
- code_puppy-0.0.314/code_puppy/plugins/claude_code_oauth/utils.py +398 -0
- code_puppy-0.0.314/code_puppy/plugins/customizable_commands/register_callbacks.py +169 -0
- code_puppy-0.0.314/code_puppy/plugins/example_custom_command/README.md +280 -0
- code_puppy-0.0.314/code_puppy/plugins/example_custom_command/register_callbacks.py +51 -0
- code_puppy-0.0.314/code_puppy/plugins/file_permission_handler/__init__.py +4 -0
- code_puppy-0.0.314/code_puppy/plugins/file_permission_handler/register_callbacks.py +523 -0
- code_puppy-0.0.314/code_puppy/plugins/oauth_puppy_html.py +228 -0
- code_puppy-0.0.314/code_puppy/plugins/shell_safety/__init__.py +6 -0
- code_puppy-0.0.314/code_puppy/plugins/shell_safety/agent_shell_safety.py +186 -0
- code_puppy-0.0.314/code_puppy/plugins/shell_safety/command_cache.py +156 -0
- code_puppy-0.0.314/code_puppy/plugins/shell_safety/register_callbacks.py +161 -0
- code_puppy-0.0.314/code_puppy/prompts/codex_system_prompt.md +310 -0
- code_puppy-0.0.314/code_puppy/pydantic_patches.py +131 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/round_robin_model.py +9 -12
- code_puppy-0.0.314/code_puppy/session_storage.py +294 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/status_display.py +17 -4
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/summarization_agent.py +51 -13
- code_puppy-0.0.314/code_puppy/tools/agent_tools.py +568 -0
- code_puppy-0.0.314/code_puppy/tools/browser/__init__.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/tools/browser/browser_control.py +13 -17
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/tools/browser/browser_interactions.py +20 -28
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/tools/browser/browser_locators.py +27 -29
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/tools/browser/browser_navigation.py +9 -9
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/tools/browser/browser_screenshot.py +12 -14
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/tools/browser/browser_scripts.py +17 -29
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/tools/browser/browser_workflows.py +44 -27
- code_puppy-0.0.314/code_puppy/tools/browser/camoufox_manager.py +235 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/tools/browser/vqa_agent.py +34 -6
- code_puppy-0.0.314/code_puppy/tools/command_runner.py +1206 -0
- code_puppy-0.0.314/code_puppy/tools/common.py +1414 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/tools/file_modifications.py +288 -89
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/tools/file_operations.py +350 -264
- code_puppy-0.0.314/code_puppy/version_checker.py +54 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/pyproject.toml +30 -17
- code_puppy-0.0.186/code_puppy/__init__.py +0 -4
- code_puppy-0.0.186/code_puppy/agents/agent_cpp_reviewer.py +0 -65
- code_puppy-0.0.186/code_puppy/agents/agent_golang_reviewer.py +0 -62
- code_puppy-0.0.186/code_puppy/agents/agent_javascript_reviewer.py +0 -67
- code_puppy-0.0.186/code_puppy/agents/agent_qa_expert.py +0 -71
- code_puppy-0.0.186/code_puppy/agents/agent_security_auditor.py +0 -71
- code_puppy-0.0.186/code_puppy/agents/agent_typescript_reviewer.py +0 -67
- code_puppy-0.0.186/code_puppy/agents/base_agent.py +0 -999
- code_puppy-0.0.186/code_puppy/command_line/command_handler.py +0 -724
- code_puppy-0.0.186/code_puppy/command_line/model_picker_completion.py +0 -120
- code_puppy-0.0.186/code_puppy/command_line/prompt_toolkit_completion.py +0 -269
- code_puppy-0.0.186/code_puppy/config.py +0 -626
- code_puppy-0.0.186/code_puppy/main.py +0 -568
- code_puppy-0.0.186/code_puppy/messaging/__init__.py +0 -50
- code_puppy-0.0.186/code_puppy/messaging/spinner/textual_spinner.py +0 -101
- code_puppy-0.0.186/code_puppy/model_factory.py +0 -351
- code_puppy-0.0.186/code_puppy/models.json +0 -71
- code_puppy-0.0.186/code_puppy/plugins/__init__.py +0 -32
- code_puppy-0.0.186/code_puppy/tools/agent_tools.py +0 -178
- code_puppy-0.0.186/code_puppy/tools/browser/camoufox_manager.py +0 -179
- code_puppy-0.0.186/code_puppy/tools/command_runner.py +0 -630
- code_puppy-0.0.186/code_puppy/tools/common.py +0 -443
- code_puppy-0.0.186/code_puppy/tui/__init__.py +0 -10
- code_puppy-0.0.186/code_puppy/tui/app.py +0 -956
- code_puppy-0.0.186/code_puppy/tui/components/__init__.py +0 -21
- code_puppy-0.0.186/code_puppy/tui/components/chat_view.py +0 -551
- code_puppy-0.0.186/code_puppy/tui/components/command_history_modal.py +0 -218
- code_puppy-0.0.186/code_puppy/tui/components/copy_button.py +0 -139
- code_puppy-0.0.186/code_puppy/tui/components/custom_widgets.py +0 -63
- code_puppy-0.0.186/code_puppy/tui/components/human_input_modal.py +0 -175
- code_puppy-0.0.186/code_puppy/tui/components/input_area.py +0 -167
- code_puppy-0.0.186/code_puppy/tui/components/sidebar.py +0 -309
- code_puppy-0.0.186/code_puppy/tui/components/status_bar.py +0 -182
- code_puppy-0.0.186/code_puppy/tui/messages.py +0 -27
- code_puppy-0.0.186/code_puppy/tui/models/__init__.py +0 -8
- code_puppy-0.0.186/code_puppy/tui/models/chat_message.py +0 -25
- code_puppy-0.0.186/code_puppy/tui/models/command_history.py +0 -89
- code_puppy-0.0.186/code_puppy/tui/models/enums.py +0 -24
- code_puppy-0.0.186/code_puppy/tui/screens/__init__.py +0 -15
- code_puppy-0.0.186/code_puppy/tui/screens/help.py +0 -130
- code_puppy-0.0.186/code_puppy/tui/screens/mcp_install_wizard.py +0 -803
- code_puppy-0.0.186/code_puppy/tui/screens/settings.py +0 -290
- code_puppy-0.0.186/code_puppy/tui/screens/tools.py +0 -74
- code_puppy-0.0.186/code_puppy/tui_state.py +0 -55
- code_puppy-0.0.186/code_puppy/version_checker.py +0 -35
- {code_puppy-0.0.186 → code_puppy-0.0.314}/LICENSE +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/__main__.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/agents/__init__.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/agents/agent_qa_kitten.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/__init__.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/file_path_completion.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/__init__.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/mcp/utils.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/command_line/utils.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/__init__.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/async_lifecycle.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/circuit_breaker.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/error_isolation.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/examples/retry_example.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/health_monitor.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/manager.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/retry_manager.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/status_tracker.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/mcp_/system_tools.py +0 -0
- {code_puppy-0.0.186/code_puppy/tools/browser → code_puppy-0.0.314/code_puppy/plugins/customizable_commands}/__init__.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/reopenable_async_client.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/tools/__init__.py +0 -0
- {code_puppy-0.0.186 → code_puppy-0.0.314}/code_puppy/tools/tools_content.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-puppy
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.314
|
|
4
4
|
Summary: Code generation agent
|
|
5
5
|
Project-URL: repository, https://github.com/mpfaffenberger/code_puppy
|
|
6
6
|
Project-URL: HomePage, https://github.com/mpfaffenberger/code_puppy
|
|
@@ -14,43 +14,68 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.13
|
|
16
16
|
Classifier: Topic :: Software Development :: Code Generators
|
|
17
|
-
Requires-Python:
|
|
18
|
-
Requires-Dist: bs4>=0.0.2
|
|
17
|
+
Requires-Python: <3.14,>=3.11
|
|
19
18
|
Requires-Dist: camoufox>=0.4.11
|
|
20
|
-
Requires-Dist:
|
|
21
|
-
Requires-Dist:
|
|
22
|
-
Requires-Dist: httpx>=0.24.1
|
|
19
|
+
Requires-Dist: dbos>=2.5.0
|
|
20
|
+
Requires-Dist: fastapi>=0.111.0
|
|
21
|
+
Requires-Dist: httpx[http2]>=0.24.1
|
|
23
22
|
Requires-Dist: json-repair>=0.46.2
|
|
24
23
|
Requires-Dist: logfire>=0.7.1
|
|
25
24
|
Requires-Dist: openai>=1.99.1
|
|
26
|
-
Requires-Dist: pathspec>=0.11.0
|
|
27
25
|
Requires-Dist: playwright>=1.40.0
|
|
28
|
-
Requires-Dist: prompt-toolkit>=3.0.
|
|
29
|
-
Requires-Dist: pydantic-ai
|
|
26
|
+
Requires-Dist: prompt-toolkit>=3.0.52
|
|
27
|
+
Requires-Dist: pydantic-ai==1.25.0
|
|
30
28
|
Requires-Dist: pydantic>=2.4.0
|
|
31
|
-
Requires-Dist:
|
|
29
|
+
Requires-Dist: pyfiglet>=0.8.post1
|
|
32
30
|
Requires-Dist: pytest-cov>=6.1.1
|
|
33
31
|
Requires-Dist: python-dotenv>=1.0.0
|
|
34
32
|
Requires-Dist: rapidfuzz>=3.13.0
|
|
35
33
|
Requires-Dist: rich>=13.4.2
|
|
36
|
-
Requires-Dist: ripgrep
|
|
34
|
+
Requires-Dist: ripgrep==14.1.0
|
|
37
35
|
Requires-Dist: ruff>=0.11.11
|
|
38
36
|
Requires-Dist: tenacity>=8.2.0
|
|
39
|
-
Requires-Dist:
|
|
40
|
-
Requires-Dist: textual-dev>=1.7.0
|
|
41
|
-
Requires-Dist: textual>=5.0.0
|
|
42
|
-
Requires-Dist: tree-sitter-language-pack>=0.8.0
|
|
43
|
-
Requires-Dist: tree-sitter-typescript>=0.23.2
|
|
44
|
-
Requires-Dist: uvicorn>=0.29.0
|
|
37
|
+
Requires-Dist: uvicorn>=0.30.0
|
|
45
38
|
Description-Content-Type: text/markdown
|
|
46
39
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-

|
|
43
|
+
|
|
44
|
+
**🐶✨The sassy AI code agent that makes IDEs look outdated** ✨🐶
|
|
45
|
+
|
|
46
|
+
[](https://pypi.org/project/code-puppy/)
|
|
47
|
+
[](https://pypi.org/project/code-puppy/)
|
|
48
|
+
[](https://python.org)
|
|
49
|
+
[](LICENSE)
|
|
50
|
+
[](https://github.com/mpfaffenberger/code_puppy/actions)
|
|
51
|
+
[](https://github.com/mpfaffenberger/code_puppy)
|
|
52
|
+
[](https://github.com/psf/black)
|
|
53
|
+
[](https://github.com/mpfaffenberger/code_puppy/tests)
|
|
54
|
+
|
|
55
|
+
[](https://openai.com)
|
|
56
|
+
[](https://ai.google.dev/)
|
|
57
|
+
[](https://anthropic.com)
|
|
58
|
+
[](https://cerebras.ai)
|
|
59
|
+
[](https://z.ai/)
|
|
60
|
+
[](https://synthetic.new)
|
|
61
|
+
|
|
62
|
+
[](https://github.com/mpfaffenberger/code_puppy)
|
|
63
|
+
[](https://github.com/pydantic/pydantic-ai)
|
|
64
|
+
|
|
65
|
+
[](https://github.com/mpfaffenberger/code_puppy/blob/main/README.md#code-puppy-privacy-commitment)
|
|
66
|
+
|
|
67
|
+
[](https://github.com/mpfaffenberger/code_puppy/stargazers)
|
|
68
|
+
[](https://github.com/mpfaffenberger/code_puppy/network)
|
|
69
|
+
|
|
70
|
+
**[⭐ Star this repo if you hate expensive IDEs! ⭐](#quick-start)**
|
|
71
|
+
|
|
72
|
+
*"Who needs an IDE when you have 1024 angry puppies?"* - Someone, probably.
|
|
73
|
+
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
52
78
|
|
|
53
|
-
*"Who needs an IDE?"* - someone, probably.
|
|
54
79
|
|
|
55
80
|
## Overview
|
|
56
81
|
|
|
@@ -64,47 +89,145 @@ Description-Content-Type: text/markdown
|
|
|
64
89
|
|
|
65
90
|
Code Puppy is an AI-powered code generation agent, designed to understand programming tasks, generate high-quality code, and explain its reasoning similar to tools like Windsurf and Cursor.
|
|
66
91
|
|
|
92
|
+
|
|
67
93
|
## Quick start
|
|
68
94
|
|
|
69
|
-
|
|
95
|
+
```bash
|
|
96
|
+
uvx code-puppy -i
|
|
97
|
+
````
|
|
70
98
|
|
|
99
|
+
## Installation
|
|
71
100
|
|
|
72
|
-
|
|
101
|
+
### UV (Recommended)
|
|
73
102
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
-
|
|
103
|
+
```bash
|
|
104
|
+
# Install UV if you don't have it
|
|
105
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
77
106
|
|
|
78
|
-
|
|
107
|
+
# Set UV to always use managed Python (one-time setup)
|
|
108
|
+
echo 'export UV_MANAGED_PYTHON=1' >> ~/.zshrc # or ~/.bashrc
|
|
109
|
+
source ~/.zshrc # or ~/.bashrc
|
|
79
110
|
|
|
80
|
-
|
|
111
|
+
# Install and run code-puppy
|
|
112
|
+
uvx code-puppy -i
|
|
113
|
+
```
|
|
81
114
|
|
|
82
|
-
|
|
115
|
+
UV will automatically download the latest compatible Python version (3.11+) if your system doesn't have one.
|
|
83
116
|
|
|
84
|
-
|
|
117
|
+
### pip (Alternative)
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
pip install code-puppy
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
*Note: pip installation requires your system Python to be 3.11 or newer.*
|
|
124
|
+
|
|
125
|
+
### Permanent Python Management
|
|
126
|
+
|
|
127
|
+
To make UV always use managed Python versions (recommended):
|
|
85
128
|
|
|
86
|
-
## Usage
|
|
87
129
|
```bash
|
|
88
|
-
|
|
89
|
-
export
|
|
90
|
-
|
|
91
|
-
export YOLO_MODE=true # to bypass the safety confirmation prompt when running shell commands
|
|
130
|
+
# Set environment variable permanently
|
|
131
|
+
echo 'export UV_MANAGED_PYTHON=1' >> ~/.zshrc # or ~/.bashrc
|
|
132
|
+
source ~/.zshrc # or ~/.bashrc
|
|
92
133
|
|
|
93
|
-
#
|
|
134
|
+
# Now all UV commands will prefer managed Python installations
|
|
135
|
+
uvx code-puppy # No need for --managed-python flag anymore
|
|
136
|
+
```
|
|
94
137
|
|
|
95
|
-
|
|
96
|
-
|
|
138
|
+
### Verifying Python Version
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# Check which Python UV will use
|
|
142
|
+
uv python find
|
|
97
143
|
|
|
98
|
-
|
|
144
|
+
# Or check the current project's Python
|
|
145
|
+
uv run python --version
|
|
99
146
|
```
|
|
100
147
|
|
|
101
|
-
|
|
148
|
+
## Usage
|
|
149
|
+
|
|
150
|
+
### Custom Commands
|
|
151
|
+
Create markdown files in `.claude/commands/`, `.github/prompts/`, or `.agents/commands/` to define custom slash commands. The filename becomes the command name and the content runs as a prompt.
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# Create a custom command
|
|
155
|
+
echo "# Code Review
|
|
156
|
+
|
|
157
|
+
Please review this code for security issues." > .claude/commands/review.md
|
|
158
|
+
|
|
159
|
+
# Use it in Code Puppy
|
|
160
|
+
/review with focus on authentication
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Adding Models from models.dev 🆕
|
|
164
|
+
|
|
165
|
+
While there are several models configured right out of the box from providers like Synthetic, Cerebras, OpenAI, Google, and Anthropic, Code Puppy integrates with [models.dev](https://models.dev) to let you browse and add models from **65+ providers** with a single command:
|
|
102
166
|
|
|
103
167
|
```bash
|
|
104
|
-
|
|
105
|
-
code-puppy "write me a C++ hello world program in /tmp/main.cpp then compile it and run it"
|
|
168
|
+
/add_model
|
|
106
169
|
```
|
|
107
170
|
|
|
171
|
+
This opens an interactive TUI where you can:
|
|
172
|
+
- **Browse providers** - See all available AI providers (OpenAI, Anthropic, Groq, Mistral, xAI, Cohere, Perplexity, DeepInfra, and many more)
|
|
173
|
+
- **Preview model details** - View capabilities, pricing, context length, and features
|
|
174
|
+
- **One-click add** - Automatically configures the model with correct endpoints and API keys
|
|
175
|
+
|
|
176
|
+
#### Live API with Offline Fallback
|
|
177
|
+
|
|
178
|
+
The `/add_model` command fetches the latest model data from models.dev in real-time. If the API is unavailable, it falls back to a bundled database:
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
📡 Fetched latest models from models.dev # Live API
|
|
182
|
+
📦 Using bundled models database # Offline fallback
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
#### Supported Providers
|
|
186
|
+
|
|
187
|
+
Code Puppy integrates with https://models.dev giving you access to 65 providers and >1000 different model offerings.
|
|
188
|
+
|
|
189
|
+
There are **39+ additional providers** that already have OpenAI-compatible APIs configured in models.dev!
|
|
190
|
+
|
|
191
|
+
These providers are automatically configured with correct OpenAI-compatible endpoints, but have **not** been tested thoroughly:
|
|
192
|
+
|
|
193
|
+
| Provider | Endpoint | API Key Env Var |
|
|
194
|
+
|----------|----------|----------------|
|
|
195
|
+
| **xAI** (Grok) | `https://api.x.ai/v1` | `XAI_API_KEY` |
|
|
196
|
+
| **Groq** | `https://api.groq.com/openai/v1` | `GROQ_API_KEY` |
|
|
197
|
+
| **Mistral** | `https://api.mistral.ai/v1` | `MISTRAL_API_KEY` |
|
|
198
|
+
| **Together AI** | `https://api.together.xyz/v1` | `TOGETHER_API_KEY` |
|
|
199
|
+
| **Perplexity** | `https://api.perplexity.ai` | `PERPLEXITY_API_KEY` |
|
|
200
|
+
| **DeepInfra** | `https://api.deepinfra.com/v1/openai` | `DEEPINFRA_API_KEY` |
|
|
201
|
+
| **Cohere** | `https://api.cohere.com/compatibility/v1` | `COHERE_API_KEY` |
|
|
202
|
+
| **AIHubMix** | `https://aihubmix.com/v1` | `AIHUBMIX_API_KEY` |
|
|
203
|
+
|
|
204
|
+
#### Smart Warnings
|
|
205
|
+
|
|
206
|
+
- **⚠️ Unsupported Providers** - Providers like Amazon Bedrock and Google Vertex that require special authentication are clearly marked
|
|
207
|
+
- **⚠️ No Tool Calling** - Models without tool calling support show a big warning since they can't use Code Puppy's file/shell tools
|
|
208
|
+
|
|
209
|
+
### Durable Execution
|
|
210
|
+
|
|
211
|
+
Code Puppy now supports **[DBOS](https://github.com/dbos-inc/dbos-transact-py)** durable execution.
|
|
212
|
+
|
|
213
|
+
When enabled, every agent is automatically wrapped as a `DBOSAgent`, checkpointing key interactions (including agent inputs, LLM responses, MCP calls, and tool calls) in a database for durability and recovery.
|
|
214
|
+
|
|
215
|
+
You can toggle DBOS via either of these options:
|
|
216
|
+
|
|
217
|
+
- CLI config (persists): `/set enable_dbos true` (or `false` to disable)
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
Config takes precedence if set; otherwise the environment variable is used.
|
|
221
|
+
|
|
222
|
+
### Configuration
|
|
223
|
+
|
|
224
|
+
The following environment variables control DBOS behavior:
|
|
225
|
+
- `DBOS_CONDUCTOR_KEY`: If set, Code Puppy connects to the [DBOS Management Console](https://console.dbos.dev/). Make sure you first register an app named `dbos-code-puppy` on the console to generate a Conductor key. Default: `None`.
|
|
226
|
+
- `DBOS_LOG_LEVEL`: Logging verbosity: `CRITICAL`, `ERROR`, `WARNING`, `INFO`, or `DEBUG`. Default: `ERROR`.
|
|
227
|
+
- `DBOS_SYSTEM_DATABASE_URL`: Database URL used by DBOS. Can point to a local SQLite file or a Postgres instance. Example: `postgresql://postgres:dbos@localhost:5432/postgres`. Default: `dbos_store.sqlite` file in the config directory.
|
|
228
|
+
- `DBOS_APP_VERSION`: If set, Code Puppy uses it as the [DBOS application version](https://docs.dbos.dev/architecture#application-and-workflow-versions) and automatically tries to recover pending workflows for this version. Default: Code Puppy version + Unix timestamp in millisecond (disable automatic recovery).
|
|
229
|
+
|
|
230
|
+
|
|
108
231
|
## Requirements
|
|
109
232
|
|
|
110
233
|
- Python 3.11+
|
|
@@ -114,10 +237,6 @@ code-puppy "write me a C++ hello world program in /tmp/main.cpp then compile it
|
|
|
114
237
|
- Anthropic key (for Claude models)
|
|
115
238
|
- Ollama endpoint available
|
|
116
239
|
|
|
117
|
-
## License
|
|
118
|
-
|
|
119
|
-
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
120
|
-
|
|
121
240
|
## Agent Rules
|
|
122
241
|
We support AGENT.md files for defining coding standards and styles that your code should comply with. These rules can cover various aspects such as formatting, naming conventions, and even design guidelines.
|
|
123
242
|
|
|
@@ -127,8 +246,6 @@ For examples and more information about agent rules, visit [https://agent.md](ht
|
|
|
127
246
|
|
|
128
247
|
Use the `/mcp` command to manage MCP (list, start, stop, status, etc.)
|
|
129
248
|
|
|
130
|
-
In the TUI you can click on MCP settings on the footer and interact with a mini-marketplace.
|
|
131
|
-
|
|
132
249
|
Watch this video for examples! https://www.youtube.com/watch?v=1t1zEetOqlo
|
|
133
250
|
|
|
134
251
|
|
|
@@ -640,8 +757,28 @@ Consider contributing agent templates for:
|
|
|
640
757
|
|
|
641
758
|
---
|
|
642
759
|
|
|
643
|
-
|
|
760
|
+
# Code Puppy Privacy Commitment
|
|
761
|
+
|
|
762
|
+
**Zero-compromise privacy policy. Always.**
|
|
763
|
+
|
|
764
|
+
Unlike other Agentic Coding software, there is no corporate or investor backing for this project, which means **zero pressure to compromise our principles for profit**. This isn't just a nice-to-have feature – it's fundamental to the project's DNA.
|
|
765
|
+
|
|
766
|
+
### What Code Puppy _absolutely does not_ collect:
|
|
767
|
+
- ❌ **Zero telemetry** – no usage analytics, crash reports, or behavioral tracking
|
|
768
|
+
- ❌ **Zero prompt logging** – your code, conversations, or project details are never stored
|
|
769
|
+
- ❌ **Zero behavioral profiling** – we don't track what you build, how you code, or when you use the tool
|
|
770
|
+
- ❌ **Zero third-party data sharing** – your information is never sold, traded, or given away
|
|
771
|
+
|
|
772
|
+
### What data flows where:
|
|
773
|
+
- **LLM Provider Communication**: Your prompts are sent directly to whichever LLM provider you've configured (OpenAI, Anthropic, local models, etc.) – this is unavoidable for AI functionality
|
|
774
|
+
- **Complete Local Option**: Run your own VLLM/SGLang/Llama.cpp server locally → **zero data leaves your network**. Configure this with `~/.code_puppy/extra_models.json`
|
|
775
|
+
- **Direct Developer Contact**: All feature requests, bug reports, and discussions happen directly with me – no middleman analytics platforms or customer data harvesting tools
|
|
644
776
|
|
|
777
|
+
### Our privacy-first architecture:
|
|
778
|
+
Code Puppy is designed with privacy-by-design principles. Every feature has been evaluated through a privacy lens, and every integration respects user data sovereignty. When you use Code Puppy, you're not the product – you're just a developer getting things done.
|
|
645
779
|
|
|
646
|
-
|
|
647
|
-
|
|
780
|
+
**This commitment is enforceable because it's structurally impossible to violate it.** No external pressures, no investor demands, no quarterly earnings targets to hit. Just solid code that respects your privacy.
|
|
781
|
+
|
|
782
|
+
## License
|
|
783
|
+
|
|
784
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
@@ -1,10 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-

|
|
4
|
+
|
|
5
|
+
**🐶✨The sassy AI code agent that makes IDEs look outdated** ✨🐶
|
|
6
|
+
|
|
7
|
+
[](https://pypi.org/project/code-puppy/)
|
|
8
|
+
[](https://pypi.org/project/code-puppy/)
|
|
9
|
+
[](https://python.org)
|
|
10
|
+
[](LICENSE)
|
|
11
|
+
[](https://github.com/mpfaffenberger/code_puppy/actions)
|
|
12
|
+
[](https://github.com/mpfaffenberger/code_puppy)
|
|
13
|
+
[](https://github.com/psf/black)
|
|
14
|
+
[](https://github.com/mpfaffenberger/code_puppy/tests)
|
|
15
|
+
|
|
16
|
+
[](https://openai.com)
|
|
17
|
+
[](https://ai.google.dev/)
|
|
18
|
+
[](https://anthropic.com)
|
|
19
|
+
[](https://cerebras.ai)
|
|
20
|
+
[](https://z.ai/)
|
|
21
|
+
[](https://synthetic.new)
|
|
22
|
+
|
|
23
|
+
[](https://github.com/mpfaffenberger/code_puppy)
|
|
24
|
+
[](https://github.com/pydantic/pydantic-ai)
|
|
25
|
+
|
|
26
|
+
[](https://github.com/mpfaffenberger/code_puppy/blob/main/README.md#code-puppy-privacy-commitment)
|
|
27
|
+
|
|
28
|
+
[](https://github.com/mpfaffenberger/code_puppy/stargazers)
|
|
29
|
+
[](https://github.com/mpfaffenberger/code_puppy/network)
|
|
30
|
+
|
|
31
|
+
**[⭐ Star this repo if you hate expensive IDEs! ⭐](#quick-start)**
|
|
32
|
+
|
|
33
|
+
*"Who needs an IDE when you have 1024 angry puppies?"* - Someone, probably.
|
|
34
|
+
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
6
39
|
|
|
7
|
-
*"Who needs an IDE?"* - someone, probably.
|
|
8
40
|
|
|
9
41
|
## Overview
|
|
10
42
|
|
|
@@ -18,47 +50,145 @@
|
|
|
18
50
|
|
|
19
51
|
Code Puppy is an AI-powered code generation agent, designed to understand programming tasks, generate high-quality code, and explain its reasoning similar to tools like Windsurf and Cursor.
|
|
20
52
|
|
|
53
|
+
|
|
21
54
|
## Quick start
|
|
22
55
|
|
|
23
|
-
|
|
56
|
+
```bash
|
|
57
|
+
uvx code-puppy -i
|
|
58
|
+
````
|
|
24
59
|
|
|
60
|
+
## Installation
|
|
25
61
|
|
|
26
|
-
|
|
62
|
+
### UV (Recommended)
|
|
27
63
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
-
|
|
64
|
+
```bash
|
|
65
|
+
# Install UV if you don't have it
|
|
66
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
31
67
|
|
|
32
|
-
|
|
68
|
+
# Set UV to always use managed Python (one-time setup)
|
|
69
|
+
echo 'export UV_MANAGED_PYTHON=1' >> ~/.zshrc # or ~/.bashrc
|
|
70
|
+
source ~/.zshrc # or ~/.bashrc
|
|
33
71
|
|
|
34
|
-
|
|
72
|
+
# Install and run code-puppy
|
|
73
|
+
uvx code-puppy -i
|
|
74
|
+
```
|
|
35
75
|
|
|
36
|
-
|
|
76
|
+
UV will automatically download the latest compatible Python version (3.11+) if your system doesn't have one.
|
|
37
77
|
|
|
38
|
-
|
|
78
|
+
### pip (Alternative)
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
pip install code-puppy
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
*Note: pip installation requires your system Python to be 3.11 or newer.*
|
|
85
|
+
|
|
86
|
+
### Permanent Python Management
|
|
87
|
+
|
|
88
|
+
To make UV always use managed Python versions (recommended):
|
|
39
89
|
|
|
40
|
-
## Usage
|
|
41
90
|
```bash
|
|
42
|
-
|
|
43
|
-
export
|
|
44
|
-
|
|
45
|
-
export YOLO_MODE=true # to bypass the safety confirmation prompt when running shell commands
|
|
91
|
+
# Set environment variable permanently
|
|
92
|
+
echo 'export UV_MANAGED_PYTHON=1' >> ~/.zshrc # or ~/.bashrc
|
|
93
|
+
source ~/.zshrc # or ~/.bashrc
|
|
46
94
|
|
|
47
|
-
#
|
|
95
|
+
# Now all UV commands will prefer managed Python installations
|
|
96
|
+
uvx code-puppy # No need for --managed-python flag anymore
|
|
97
|
+
```
|
|
48
98
|
|
|
49
|
-
|
|
50
|
-
|
|
99
|
+
### Verifying Python Version
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# Check which Python UV will use
|
|
103
|
+
uv python find
|
|
51
104
|
|
|
52
|
-
|
|
105
|
+
# Or check the current project's Python
|
|
106
|
+
uv run python --version
|
|
53
107
|
```
|
|
54
108
|
|
|
55
|
-
|
|
109
|
+
## Usage
|
|
110
|
+
|
|
111
|
+
### Custom Commands
|
|
112
|
+
Create markdown files in `.claude/commands/`, `.github/prompts/`, or `.agents/commands/` to define custom slash commands. The filename becomes the command name and the content runs as a prompt.
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# Create a custom command
|
|
116
|
+
echo "# Code Review
|
|
117
|
+
|
|
118
|
+
Please review this code for security issues." > .claude/commands/review.md
|
|
119
|
+
|
|
120
|
+
# Use it in Code Puppy
|
|
121
|
+
/review with focus on authentication
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Adding Models from models.dev 🆕
|
|
125
|
+
|
|
126
|
+
While there are several models configured right out of the box from providers like Synthetic, Cerebras, OpenAI, Google, and Anthropic, Code Puppy integrates with [models.dev](https://models.dev) to let you browse and add models from **65+ providers** with a single command:
|
|
56
127
|
|
|
57
128
|
```bash
|
|
58
|
-
|
|
59
|
-
code-puppy "write me a C++ hello world program in /tmp/main.cpp then compile it and run it"
|
|
129
|
+
/add_model
|
|
60
130
|
```
|
|
61
131
|
|
|
132
|
+
This opens an interactive TUI where you can:
|
|
133
|
+
- **Browse providers** - See all available AI providers (OpenAI, Anthropic, Groq, Mistral, xAI, Cohere, Perplexity, DeepInfra, and many more)
|
|
134
|
+
- **Preview model details** - View capabilities, pricing, context length, and features
|
|
135
|
+
- **One-click add** - Automatically configures the model with correct endpoints and API keys
|
|
136
|
+
|
|
137
|
+
#### Live API with Offline Fallback
|
|
138
|
+
|
|
139
|
+
The `/add_model` command fetches the latest model data from models.dev in real-time. If the API is unavailable, it falls back to a bundled database:
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
📡 Fetched latest models from models.dev # Live API
|
|
143
|
+
📦 Using bundled models database # Offline fallback
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
#### Supported Providers
|
|
147
|
+
|
|
148
|
+
Code Puppy integrates with https://models.dev giving you access to 65 providers and >1000 different model offerings.
|
|
149
|
+
|
|
150
|
+
There are **39+ additional providers** that already have OpenAI-compatible APIs configured in models.dev!
|
|
151
|
+
|
|
152
|
+
These providers are automatically configured with correct OpenAI-compatible endpoints, but have **not** been tested thoroughly:
|
|
153
|
+
|
|
154
|
+
| Provider | Endpoint | API Key Env Var |
|
|
155
|
+
|----------|----------|----------------|
|
|
156
|
+
| **xAI** (Grok) | `https://api.x.ai/v1` | `XAI_API_KEY` |
|
|
157
|
+
| **Groq** | `https://api.groq.com/openai/v1` | `GROQ_API_KEY` |
|
|
158
|
+
| **Mistral** | `https://api.mistral.ai/v1` | `MISTRAL_API_KEY` |
|
|
159
|
+
| **Together AI** | `https://api.together.xyz/v1` | `TOGETHER_API_KEY` |
|
|
160
|
+
| **Perplexity** | `https://api.perplexity.ai` | `PERPLEXITY_API_KEY` |
|
|
161
|
+
| **DeepInfra** | `https://api.deepinfra.com/v1/openai` | `DEEPINFRA_API_KEY` |
|
|
162
|
+
| **Cohere** | `https://api.cohere.com/compatibility/v1` | `COHERE_API_KEY` |
|
|
163
|
+
| **AIHubMix** | `https://aihubmix.com/v1` | `AIHUBMIX_API_KEY` |
|
|
164
|
+
|
|
165
|
+
#### Smart Warnings
|
|
166
|
+
|
|
167
|
+
- **⚠️ Unsupported Providers** - Providers like Amazon Bedrock and Google Vertex that require special authentication are clearly marked
|
|
168
|
+
- **⚠️ No Tool Calling** - Models without tool calling support show a big warning since they can't use Code Puppy's file/shell tools
|
|
169
|
+
|
|
170
|
+
### Durable Execution
|
|
171
|
+
|
|
172
|
+
Code Puppy now supports **[DBOS](https://github.com/dbos-inc/dbos-transact-py)** durable execution.
|
|
173
|
+
|
|
174
|
+
When enabled, every agent is automatically wrapped as a `DBOSAgent`, checkpointing key interactions (including agent inputs, LLM responses, MCP calls, and tool calls) in a database for durability and recovery.
|
|
175
|
+
|
|
176
|
+
You can toggle DBOS via either of these options:
|
|
177
|
+
|
|
178
|
+
- CLI config (persists): `/set enable_dbos true` (or `false` to disable)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
Config takes precedence if set; otherwise the environment variable is used.
|
|
182
|
+
|
|
183
|
+
### Configuration
|
|
184
|
+
|
|
185
|
+
The following environment variables control DBOS behavior:
|
|
186
|
+
- `DBOS_CONDUCTOR_KEY`: If set, Code Puppy connects to the [DBOS Management Console](https://console.dbos.dev/). Make sure you first register an app named `dbos-code-puppy` on the console to generate a Conductor key. Default: `None`.
|
|
187
|
+
- `DBOS_LOG_LEVEL`: Logging verbosity: `CRITICAL`, `ERROR`, `WARNING`, `INFO`, or `DEBUG`. Default: `ERROR`.
|
|
188
|
+
- `DBOS_SYSTEM_DATABASE_URL`: Database URL used by DBOS. Can point to a local SQLite file or a Postgres instance. Example: `postgresql://postgres:dbos@localhost:5432/postgres`. Default: `dbos_store.sqlite` file in the config directory.
|
|
189
|
+
- `DBOS_APP_VERSION`: If set, Code Puppy uses it as the [DBOS application version](https://docs.dbos.dev/architecture#application-and-workflow-versions) and automatically tries to recover pending workflows for this version. Default: Code Puppy version + Unix timestamp in millisecond (disable automatic recovery).
|
|
190
|
+
|
|
191
|
+
|
|
62
192
|
## Requirements
|
|
63
193
|
|
|
64
194
|
- Python 3.11+
|
|
@@ -68,10 +198,6 @@ code-puppy "write me a C++ hello world program in /tmp/main.cpp then compile it
|
|
|
68
198
|
- Anthropic key (for Claude models)
|
|
69
199
|
- Ollama endpoint available
|
|
70
200
|
|
|
71
|
-
## License
|
|
72
|
-
|
|
73
|
-
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
74
|
-
|
|
75
201
|
## Agent Rules
|
|
76
202
|
We support AGENT.md files for defining coding standards and styles that your code should comply with. These rules can cover various aspects such as formatting, naming conventions, and even design guidelines.
|
|
77
203
|
|
|
@@ -81,8 +207,6 @@ For examples and more information about agent rules, visit [https://agent.md](ht
|
|
|
81
207
|
|
|
82
208
|
Use the `/mcp` command to manage MCP (list, start, stop, status, etc.)
|
|
83
209
|
|
|
84
|
-
In the TUI you can click on MCP settings on the footer and interact with a mini-marketplace.
|
|
85
|
-
|
|
86
210
|
Watch this video for examples! https://www.youtube.com/watch?v=1t1zEetOqlo
|
|
87
211
|
|
|
88
212
|
|
|
@@ -594,8 +718,28 @@ Consider contributing agent templates for:
|
|
|
594
718
|
|
|
595
719
|
---
|
|
596
720
|
|
|
597
|
-
|
|
721
|
+
# Code Puppy Privacy Commitment
|
|
722
|
+
|
|
723
|
+
**Zero-compromise privacy policy. Always.**
|
|
724
|
+
|
|
725
|
+
Unlike other Agentic Coding software, there is no corporate or investor backing for this project, which means **zero pressure to compromise our principles for profit**. This isn't just a nice-to-have feature – it's fundamental to the project's DNA.
|
|
726
|
+
|
|
727
|
+
### What Code Puppy _absolutely does not_ collect:
|
|
728
|
+
- ❌ **Zero telemetry** – no usage analytics, crash reports, or behavioral tracking
|
|
729
|
+
- ❌ **Zero prompt logging** – your code, conversations, or project details are never stored
|
|
730
|
+
- ❌ **Zero behavioral profiling** – we don't track what you build, how you code, or when you use the tool
|
|
731
|
+
- ❌ **Zero third-party data sharing** – your information is never sold, traded, or given away
|
|
732
|
+
|
|
733
|
+
### What data flows where:
|
|
734
|
+
- **LLM Provider Communication**: Your prompts are sent directly to whichever LLM provider you've configured (OpenAI, Anthropic, local models, etc.) – this is unavoidable for AI functionality
|
|
735
|
+
- **Complete Local Option**: Run your own VLLM/SGLang/Llama.cpp server locally → **zero data leaves your network**. Configure this with `~/.code_puppy/extra_models.json`
|
|
736
|
+
- **Direct Developer Contact**: All feature requests, bug reports, and discussions happen directly with me – no middleman analytics platforms or customer data harvesting tools
|
|
598
737
|
|
|
738
|
+
### Our privacy-first architecture:
|
|
739
|
+
Code Puppy is designed with privacy-by-design principles. Every feature has been evaluated through a privacy lens, and every integration respects user data sovereignty. When you use Code Puppy, you're not the product – you're just a developer getting things done.
|
|
599
740
|
|
|
600
|
-
|
|
601
|
-
|
|
741
|
+
**This commitment is enforceable because it's structurally impossible to violate it.** No external pressures, no investor demands, no quarterly earnings targets to hit. Just solid code that respects your privacy.
|
|
742
|
+
|
|
743
|
+
## License
|
|
744
|
+
|
|
745
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import importlib.metadata
|
|
2
|
+
|
|
3
|
+
# Biscuit was here! 🐶
|
|
4
|
+
try:
|
|
5
|
+
_detected_version = importlib.metadata.version("code-puppy")
|
|
6
|
+
# Ensure we never end up with None or empty string
|
|
7
|
+
__version__ = _detected_version if _detected_version else "0.0.0-dev"
|
|
8
|
+
except Exception:
|
|
9
|
+
# Fallback for dev environments where metadata might not be available
|
|
10
|
+
__version__ = "0.0.0-dev"
|