oats-coder 1.0.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.
- oats_coder-1.0.0/.gitignore +84 -0
- oats_coder-1.0.0/LICENSE +1 -0
- oats_coder-1.0.0/MANIFEST.in +13 -0
- oats_coder-1.0.0/PKG-INFO +269 -0
- oats_coder-1.0.0/README.md +226 -0
- oats_coder-1.0.0/example-env.sh +48 -0
- oats_coder-1.0.0/oats/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/AGENT.python.tools.md +131 -0
- oats_coder-1.0.0/oats/agent/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/agent/AGENT.python.tools.md +19 -0
- oats_coder-1.0.0/oats/agent/agent.py +176 -0
- oats_coder-1.0.0/oats/agent/agent.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/agent_get_tool_choices_for_prompt.py +32 -0
- oats_coder-1.0.0/oats/agent_get_tool_choices_for_prompt.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/call_tool_with_loader1.py +430 -0
- oats_coder-1.0.0/oats/call_tool_with_loader1.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/cli/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/cli/AGENT.python.tools.md +33 -0
- oats_coder-1.0.0/oats/cli/approval.py +154 -0
- oats_coder-1.0.0/oats/cli/approval.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/cli/check_providers.py +25 -0
- oats_coder-1.0.0/oats/cli/check_providers.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/cli/interactive.py +550 -0
- oats_coder-1.0.0/oats/cli/interactive.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/cli/process_message.py +153 -0
- oats_coder-1.0.0/oats/cli/process_message.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/cli/tui/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/cli/tui/AGENT.python.tools.md +19 -0
- oats_coder-1.0.0/oats/cli/tui/tui_banner.py +114 -0
- oats_coder-1.0.0/oats/cli/tui/tui_banner.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/cli/tui/tui_consts.py +120 -0
- oats_coder-1.0.0/oats/cli/tui/tui_consts.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/cli/tui/tui_utils.py +492 -0
- oats_coder-1.0.0/oats/cli/tui/tui_utils.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/config/coder.json +27 -0
- oats_coder-1.0.0/oats/core/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/core/AGENT.python.tools.md +117 -0
- oats_coder-1.0.0/oats/core/__init__.py +19 -0
- oats_coder-1.0.0/oats/core/bus.py +170 -0
- oats_coder-1.0.0/oats/core/bus.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/core/config.py +270 -0
- oats_coder-1.0.0/oats/core/config.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/core/features.py +118 -0
- oats_coder-1.0.0/oats/core/features.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/core/id.py +17 -0
- oats_coder-1.0.0/oats/core/id.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/core/offline.py +93 -0
- oats_coder-1.0.0/oats/core/offline.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/core/profiles.py +179 -0
- oats_coder-1.0.0/oats/core/profiles.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/core/storage.py +207 -0
- oats_coder-1.0.0/oats/core/storage.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/core/tokens.py +80 -0
- oats_coder-1.0.0/oats/core/tokens.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/date.py +83 -0
- oats_coder-1.0.0/oats/date.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/determine_best_tools1.py +311 -0
- oats_coder-1.0.0/oats/determine_best_tools1.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/get_oat_config.py +12 -0
- oats_coder-1.0.0/oats/get_oat_config.py.AGENT.python.tools.json +3 -0
- oats_coder-1.0.0/oats/git/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/git/AGENT.python.tools.md +89 -0
- oats_coder-1.0.0/oats/git/__init__.py +6 -0
- oats_coder-1.0.0/oats/git/build_git_repo_to_dataset.py +185 -0
- oats_coder-1.0.0/oats/git/build_git_repo_to_dataset.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/git/coauthor.py +75 -0
- oats_coder-1.0.0/oats/git/coauthor.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/git/git_commit_search1.py +537 -0
- oats_coder-1.0.0/oats/git/git_commit_search1.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/git/git_diff_extractor.py +221 -0
- oats_coder-1.0.0/oats/git/git_diff_extractor.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/git/git_to_df_converter.py +115 -0
- oats_coder-1.0.0/oats/git/git_to_df_converter.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/git/repo_to_parquet.py +81 -0
- oats_coder-1.0.0/oats/git/repo_to_parquet.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/git/walk_up_dir_path_to_find_git_config.py +56 -0
- oats_coder-1.0.0/oats/git/walk_up_dir_path_to_find_git_config.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/git/worktree.py +184 -0
- oats_coder-1.0.0/oats/git/worktree.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/hook/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/hook/AGENT.python.tools.md +19 -0
- oats_coder-1.0.0/oats/hook/__init__.py +23 -0
- oats_coder-1.0.0/oats/hook/engine.py +225 -0
- oats_coder-1.0.0/oats/hook/engine.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/load_tools_from_source1.py +594 -0
- oats_coder-1.0.0/oats/load_tools_from_source1.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/log.py +233 -0
- oats_coder-1.0.0/oats/log.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/lsp/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/lsp/AGENT.python.tools.md +19 -0
- oats_coder-1.0.0/oats/lsp/__init__.py +1 -0
- oats_coder-1.0.0/oats/lsp/client.py +381 -0
- oats_coder-1.0.0/oats/lsp/client.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/mcp/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/mcp/AGENT.python.tools.md +159 -0
- oats_coder-1.0.0/oats/mcp/config.py +201 -0
- oats_coder-1.0.0/oats/mcp/config.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/mcp/example_mcp_config.json +58 -0
- oats_coder-1.0.0/oats/mcp/fetch.py +405 -0
- oats_coder-1.0.0/oats/mcp/fetch.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/mcp/index.py +381 -0
- oats_coder-1.0.0/oats/mcp/index.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/mcp/intent.py +427 -0
- oats_coder-1.0.0/oats/mcp/intent.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/mcp/models.py +304 -0
- oats_coder-1.0.0/oats/mcp/models.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/mcp/orchestrator.py +653 -0
- oats_coder-1.0.0/oats/mcp/orchestrator.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/mcp/ranking.py +243 -0
- oats_coder-1.0.0/oats/mcp/ranking.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/mcp/registry.py +567 -0
- oats_coder-1.0.0/oats/mcp/registry.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/mcp/resolver.py +588 -0
- oats_coder-1.0.0/oats/mcp/resolver.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/mcp/tools.py +574 -0
- oats_coder-1.0.0/oats/mcp/tools.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/mcp/tracker.py +254 -0
- oats_coder-1.0.0/oats/mcp/tracker.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/memory/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/memory/AGENT.python.tools.md +19 -0
- oats_coder-1.0.0/oats/memory/__init__.py +14 -0
- oats_coder-1.0.0/oats/memory/manager.py +180 -0
- oats_coder-1.0.0/oats/memory/manager.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/memory/models.py +97 -0
- oats_coder-1.0.0/oats/memory/models.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/models.py +332 -0
- oats_coder-1.0.0/oats/models.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/oweb/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/oweb/AGENT.python.tools.md +33 -0
- oats_coder-1.0.0/oats/oweb/get_auth.py +56 -0
- oats_coder-1.0.0/oats/oweb/get_auth.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/oweb/login.py +72 -0
- oats_coder-1.0.0/oats/oweb/login.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/plugins/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/plugins/AGENT.python.tools.md +33 -0
- oats_coder-1.0.0/oats/plugins/__init__.py +24 -0
- oats_coder-1.0.0/oats/plugins/loader.py +278 -0
- oats_coder-1.0.0/oats/plugins/loader.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/plugins/manifest.py +171 -0
- oats_coder-1.0.0/oats/plugins/manifest.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/pp.py +8 -0
- oats_coder-1.0.0/oats/pp.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/provider/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/provider/AGENT.python.tools.md +33 -0
- oats_coder-1.0.0/oats/provider/models.py +249 -0
- oats_coder-1.0.0/oats/provider/models.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/provider/provider.py +822 -0
- oats_coder-1.0.0/oats/provider/provider.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/session/AGENT.python.tools.md +201 -0
- oats_coder-1.0.0/oats/session/__init__.py +35 -0
- oats_coder-1.0.0/oats/session/build_system_prompt.py +184 -0
- oats_coder-1.0.0/oats/session/build_system_prompt.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/caveman.py +177 -0
- oats_coder-1.0.0/oats/session/caveman.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/compaction.py +463 -0
- oats_coder-1.0.0/oats/session/compaction.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/debug_trace.py +41 -0
- oats_coder-1.0.0/oats/session/debug_trace.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/file_cache.py +108 -0
- oats_coder-1.0.0/oats/session/file_cache.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/message.py +214 -0
- oats_coder-1.0.0/oats/session/message.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/metrics.py +52 -0
- oats_coder-1.0.0/oats/session/metrics.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/models.py +43 -0
- oats_coder-1.0.0/oats/session/models.py.AGENT.python.tools.json +5 -0
- oats_coder-1.0.0/oats/session/modes.py +107 -0
- oats_coder-1.0.0/oats/session/modes.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/processor.py +1600 -0
- oats_coder-1.0.0/oats/session/processor.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/screenshot_store.py +157 -0
- oats_coder-1.0.0/oats/session/screenshot_store.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/session.py +224 -0
- oats_coder-1.0.0/oats/session/session.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/skill_selector.py +156 -0
- oats_coder-1.0.0/oats/session/skill_selector.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/task_budget.py +159 -0
- oats_coder-1.0.0/oats/session/task_budget.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/token_budget.py +90 -0
- oats_coder-1.0.0/oats/session/token_budget.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/tool_retention.py +80 -0
- oats_coder-1.0.0/oats/session/tool_retention.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/session/usage.py +139 -0
- oats_coder-1.0.0/oats/session/usage.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/tool/AGENT.python.tools.md +299 -0
- oats_coder-1.0.0/oats/tool/agent_tool.py +447 -0
- oats_coder-1.0.0/oats/tool/agent_tool.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/aws_safety.py +189 -0
- oats_coder-1.0.0/oats/tool/aws_safety.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/bash.py +188 -0
- oats_coder-1.0.0/oats/tool/bash.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/edit.py +437 -0
- oats_coder-1.0.0/oats/tool/generate_readme.py +280 -0
- oats_coder-1.0.0/oats/tool/generate_readme.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/glob_tool.py +183 -0
- oats_coder-1.0.0/oats/tool/glob_tool.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/grep.py +337 -0
- oats_coder-1.0.0/oats/tool/grep.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/init_tools.py +152 -0
- oats_coder-1.0.0/oats/tool/init_tools.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/lsp_tool.py +315 -0
- oats_coder-1.0.0/oats/tool/lsp_tool.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/memory_tool.py +241 -0
- oats_coder-1.0.0/oats/tool/memory_tool.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/multiedit.py +198 -0
- oats_coder-1.0.0/oats/tool/multiedit.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/patch.py +343 -0
- oats_coder-1.0.0/oats/tool/patch.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/plan.py +318 -0
- oats_coder-1.0.0/oats/tool/plan.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/playwright_search.py +227 -0
- oats_coder-1.0.0/oats/tool/playwright_search.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/question.py +245 -0
- oats_coder-1.0.0/oats/tool/question.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/read.py +199 -0
- oats_coder-1.0.0/oats/tool/read.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/registry.py +184 -0
- oats_coder-1.0.0/oats/tool/registry.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/todowrite.py +224 -0
- oats_coder-1.0.0/oats/tool/todowrite.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/tool_search.py +176 -0
- oats_coder-1.0.0/oats/tool/tool_search.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/webfetch.py +200 -0
- oats_coder-1.0.0/oats/tool/webfetch.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/websearch.py +277 -0
- oats_coder-1.0.0/oats/tool/websearch.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/tool/write.py +154 -0
- oats_coder-1.0.0/oats/tool/write.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/trajectory/AGENT.dir.python.tools.json +1 -0
- oats_coder-1.0.0/oats/trajectory/AGENT.python.tools.md +61 -0
- oats_coder-1.0.0/oats/trajectory/__init__.py +17 -0
- oats_coder-1.0.0/oats/trajectory/logger.py +119 -0
- oats_coder-1.0.0/oats/trajectory/logger.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/trajectory/metrics.py +222 -0
- oats_coder-1.0.0/oats/trajectory/metrics.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/trajectory/report.py +37 -0
- oats_coder-1.0.0/oats/trajectory/report.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/trajectory/retrieval.py +140 -0
- oats_coder-1.0.0/oats/trajectory/retrieval.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/oats/trajectory/store.py +366 -0
- oats_coder-1.0.0/oats/trajectory/store.py.AGENT.python.tools.json +7 -0
- oats_coder-1.0.0/pyproject.toml +86 -0
- oats_coder-1.0.0/pyrightconfig.json +16 -0
- oats_coder-1.0.0/stack/.gitignore +1 -0
- oats_coder-1.0.0/stack/models/hf/qwen/.gitignore +5 -0
- oats_coder-1.0.0/stack/restart-tool-functiongemma-1.sh +36 -0
- oats_coder-1.0.0/stack/restart-vllm-qwen36-27b.sh +32 -0
- oats_coder-1.0.0/stack/restart-vllm-qwen36-35b.sh +32 -0
- oats_coder-1.0.0/stack/vllm/chat/config-qwen36-27b-awq4.yaml +19 -0
- oats_coder-1.0.0/stack/vllm/chat/config-qwen36-35b-awq4.yaml +19 -0
- oats_coder-1.0.0/stack/vllm/chat/qwen36-27b-awq4.yaml +35 -0
- oats_coder-1.0.0/stack/vllm/chat/qwen36-35b-awq4.yaml +33 -0
- oats_coder-1.0.0/stack/vllm/models/hf/google/.gitignore +1 -0
- oats_coder-1.0.0/stack/vllm/models/hf/qwen/.gitignore +2 -0
- oats_coder-1.0.0/stack/vllm/tools/functiongemma/config-functiongemma.yaml +12 -0
- oats_coder-1.0.0/stack/vllm/tools/functiongemma/docker-compose-functiongemma.yaml +34 -0
- oats_coder-1.0.0/tox.ini +3 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
.Python
|
|
7
|
+
develop-eggs/
|
|
8
|
+
dist/
|
|
9
|
+
downloads/
|
|
10
|
+
eggs/
|
|
11
|
+
.eggs/
|
|
12
|
+
lib/
|
|
13
|
+
lib64/
|
|
14
|
+
parts/
|
|
15
|
+
sdist/
|
|
16
|
+
var/
|
|
17
|
+
wheels/
|
|
18
|
+
*.egg-info/
|
|
19
|
+
.installed.cfg
|
|
20
|
+
*.egg
|
|
21
|
+
|
|
22
|
+
# Virtual environments
|
|
23
|
+
venv/
|
|
24
|
+
ENV/
|
|
25
|
+
env/
|
|
26
|
+
.venv/
|
|
27
|
+
|
|
28
|
+
# IDE
|
|
29
|
+
.idea/
|
|
30
|
+
.vscode/
|
|
31
|
+
*.swp
|
|
32
|
+
*.swo
|
|
33
|
+
*~
|
|
34
|
+
|
|
35
|
+
# Testing
|
|
36
|
+
.tox/
|
|
37
|
+
.coverage
|
|
38
|
+
.coverage.*
|
|
39
|
+
htmlcov/
|
|
40
|
+
.pytest_cache/
|
|
41
|
+
.mypy_cache/
|
|
42
|
+
|
|
43
|
+
# Environment
|
|
44
|
+
.env
|
|
45
|
+
.env.local
|
|
46
|
+
*.local
|
|
47
|
+
|
|
48
|
+
# Data
|
|
49
|
+
*.log
|
|
50
|
+
*.sqlite
|
|
51
|
+
*.db
|
|
52
|
+
|
|
53
|
+
# OS
|
|
54
|
+
.DS_Store
|
|
55
|
+
Thumbs.db
|
|
56
|
+
|
|
57
|
+
# Other
|
|
58
|
+
*.tgz
|
|
59
|
+
*.zip
|
|
60
|
+
*.gz
|
|
61
|
+
*.pq
|
|
62
|
+
*.parquet
|
|
63
|
+
*.csv
|
|
64
|
+
*.xlsx
|
|
65
|
+
*.png
|
|
66
|
+
*.jpeg
|
|
67
|
+
*.jpg
|
|
68
|
+
*.gif
|
|
69
|
+
*.mp3
|
|
70
|
+
*.mp4
|
|
71
|
+
*.wav
|
|
72
|
+
*.deb
|
|
73
|
+
*.pkl
|
|
74
|
+
*.egg-info*
|
|
75
|
+
*.pyc
|
|
76
|
+
__pycache__
|
|
77
|
+
nohup.out
|
|
78
|
+
|
|
79
|
+
oats/.projectplan
|
|
80
|
+
.oats
|
|
81
|
+
.coder
|
|
82
|
+
mcp_index.json
|
|
83
|
+
unsloth_compiled_cache
|
|
84
|
+
stack/models/hf/google/functiongemma-270m-it
|
oats_coder-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Apache 2.0
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: oats-coder
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Open Agent Tools (oats) enables small-to-large self-hosted ai models to use local source code when running tool-calling agentic workloads. We actively data mine 20,800+ (2+ TB) popular github repos using large and small ai models to create reuseable: json, markdown and parquet files for local-first tool-calling models.
|
|
5
|
+
Project-URL: Homepage, https://openagent.tools/
|
|
6
|
+
Project-URL: Documentation, https://openagent.tools/
|
|
7
|
+
Project-URL: Repository, https://github.com/district-solutions/open-agent-tools-coder
|
|
8
|
+
Author-email: jayjohnson <jay@districtsolutions.ai>
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: ai,assistant,cli,coding,llm,tool-calling
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
|
+
Classifier: Topic :: Software Development
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Requires-Dist: aiofiles
|
|
24
|
+
Requires-Dist: autopep8
|
|
25
|
+
Requires-Dist: black
|
|
26
|
+
Requires-Dist: fastapi
|
|
27
|
+
Requires-Dist: fastparquet
|
|
28
|
+
Requires-Dist: litellm==1.83.14
|
|
29
|
+
Requires-Dist: prompt-toolkit
|
|
30
|
+
Requires-Dist: pydantic
|
|
31
|
+
Requires-Dist: pydantic-settings
|
|
32
|
+
Requires-Dist: rank-bm25
|
|
33
|
+
Requires-Dist: rich
|
|
34
|
+
Requires-Dist: sse-starlette
|
|
35
|
+
Requires-Dist: ujson
|
|
36
|
+
Provides-Extra: browser
|
|
37
|
+
Requires-Dist: playwright>=1.40.0; extra == 'browser'
|
|
38
|
+
Provides-Extra: dev
|
|
39
|
+
Requires-Dist: black>=24.0.0; extra == 'dev'
|
|
40
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
41
|
+
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
42
|
+
Description-Content-Type: text/markdown
|
|
43
|
+
|
|
44
|
+
# Open Agent Tools Coder
|
|
45
|
+
|
|
46
|
+
Open Agent Tools (oats) enables small-to-large self-hosted ai models to use local source code when running tool-calling agentic workloads. We actively data mine 20,800+ (2+ TB) popular github repos using large and small ai models to create reuseable: json, markdown and parquet files for local-first tool-calling models. How does it work? Over multiple passes, we compile and export a fast, compressed prompt index for all python source code in any repo. Agents refer to the local prompt index to use already-written source code on disk instead of http with mcp or having an expensive frontier ai model re-build something that is already working locally with expensive tokens. We use oats to free up large model tokens usage by delegating the local tool-calling to smaller, open source ai models.
|
|
47
|
+
|
|
48
|
+

|
|
49
|
+
|
|
50
|
+
- Supports running local self-hosted models that can run 1-250+ local tool-calling commands using an agentic coding ai.
|
|
51
|
+
|
|
52
|
+
- Supports over ``141,000`` tools using the [open-agent-tools prompt indices repo](https://github.com/district-solutions/open-agent-tools). Requires cloning the repo(s) locally for the tool-calling to function.
|
|
53
|
+
|
|
54
|
+
## Install
|
|
55
|
+
|
|
56
|
+
Here is a recording showing how to install and get started quickly:
|
|
57
|
+
|
|
58
|
+
[](https://asciinema.org/a/3ZhMCyUKjr2dmIH1)
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
git clone https://github.com/district-solutions/open-agent-tools-coder oats
|
|
62
|
+
cd oats
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
pip install -e .
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
# litellm installs a older aiohttp version, upgrade this to the new version and ignore the warning
|
|
71
|
+
pip install --upgrade aiohttp
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Setup
|
|
75
|
+
|
|
76
|
+
### Local Tool Calling Alignment and Prompt Index Validation with RLHF Curation
|
|
77
|
+
|
|
78
|
+
This section does not require any ai models, it is validating that your local python runtime is ready for matching prompts to local tools. You can modify the prompt index file locally to map functions to different prompts. Let us know what you find!
|
|
79
|
+
|
|
80
|
+
We do this before deploying ai models because we can validate the prompt-to-tool mapping works before we add complexity with multiple self-hosted local ai models.
|
|
81
|
+
|
|
82
|
+
Confirm your local repo is setup for using the included ``repo_uses`` prompt index file. This command lets you quickly check which tools will show up for any prompt before burning any tokens on ai messages. Use this approach to validate a prompt will map to the expected tool before chatting to an ai model:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
get-tools -p 'get third friday'
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
The output should be a valid json dictionary with a dictionary containing minimal choices for a small agentic ai model to process locally with local source code tool-calling:
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
{
|
|
92
|
+
"status": true,
|
|
93
|
+
"actions": [
|
|
94
|
+
"get_third_friday"
|
|
95
|
+
],
|
|
96
|
+
"prompts": [
|
|
97
|
+
"generate third Friday dates for the next 6 months in YYYYMMDD format"
|
|
98
|
+
],
|
|
99
|
+
"src_files": [
|
|
100
|
+
"coder/date.py"
|
|
101
|
+
],
|
|
102
|
+
"partial_actions": [],
|
|
103
|
+
"partial_prompts": [],
|
|
104
|
+
"partial_src_files": [],
|
|
105
|
+
"index_files": [
|
|
106
|
+
"/opt/ds/coder/.ai/AGENT.repo_uses.python.tools.json"
|
|
107
|
+
],
|
|
108
|
+
"tool_data": {
|
|
109
|
+
"query": "get third friday",
|
|
110
|
+
"model": "bm25",
|
|
111
|
+
"reranked": false,
|
|
112
|
+
"best_files": [
|
|
113
|
+
"coder/date.py"
|
|
114
|
+
],
|
|
115
|
+
"best_uses": {
|
|
116
|
+
"coder/date.py": {
|
|
117
|
+
"utc": "utc datetime",
|
|
118
|
+
"get_utc_str": "get utc",
|
|
119
|
+
"get_utc_datetime": "get the current timezone-aware UTC datetime",
|
|
120
|
+
"get_naive_datetime": "get the current timezone-naive datetime from UTC",
|
|
121
|
+
"get_third_friday_dates": "generate third Friday dates for the next 6 months in YYYYMMDD format",
|
|
122
|
+
"run_date_tool": "run the date module to print third Friday dates for the next 6 months"
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"results": [
|
|
126
|
+
{
|
|
127
|
+
"file": "coder/date.py",
|
|
128
|
+
"func": "get_third_friday_dates",
|
|
129
|
+
"description": "generate third Friday dates for the next 6 months in YYYYMMDD format",
|
|
130
|
+
"score": 1.0,
|
|
131
|
+
"retrieval_score": 1.0
|
|
132
|
+
}
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
"version": "9"
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Start vLLM Chat and Tool Calling Models
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
cd stack
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
#### Deploy vLLM with Qwen36 27B or the Qwen36 35B model
|
|
146
|
+
|
|
147
|
+
We only need 1 of these models loaded on a 5090 or on an nvidia blackwell RTX 6000 to run completely locally:
|
|
148
|
+
|
|
149
|
+
- Download the quantized version of 27B: https://huggingface.co/cyankiwi/Qwen3.6-27B-AWQ-INT4 to ``./stack/models/hf/qwen/Qwen3.6-27B-AWQ-INT4``
|
|
150
|
+
|
|
151
|
+
and/or
|
|
152
|
+
|
|
153
|
+
- Download the quantized version of 35B: https://huggingface.co/cyankiwi/Qwen3.6-35B-A3B-AWQ-4bit to ``./stack/models/hf/qwen/Qwen3.6-35B-A3B-AWQ-4bit``
|
|
154
|
+
|
|
155
|
+
- Deploying the Qwen36 27B with vLLM requires >35 GB VRAM:
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
./restart-vllm-qwen36-27b.sh
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
- Deploying the Qwen36 35B with vLLM requires >35 GB VRAM:
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
./restart-vllm-qwen36-35b.sh
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
#### Deploy vLLM with FunctionGemma 270m Instruct
|
|
168
|
+
|
|
169
|
+
- Download FunctionGemma from HuggingFace: https://huggingface.co/google/functiongemma-270m-it to the dir below. Use your huggingface username and huggingface token as the git username/password.
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
git clone https://huggingface.co/google/functiongemma-270m-it stack/models/hf/google/functiongemma-270m-it
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
- Now that the model is ready, deployment requires ~6 GB RAM/VRAM
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
./restart-tool-functiongemma-1.sh
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Local Model Setup with the coder.json
|
|
182
|
+
|
|
183
|
+
To use local models from any directory on disk, make sure to set the ``CODER_CONFIG_FILE`` env variable to the default
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
# may want to add to your ~/.bashrc to always load at the abosolute path on disk:
|
|
187
|
+
# export CODER_CONFIG_FILE=PATH/coder.json
|
|
188
|
+
# for testing from the repo's root directory:
|
|
189
|
+
export CODER_CONFIG_FILE=$(pwd)/oats/config/coder.json
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
#### Optional - Setup the coder.json File for vLLM or Additional Local Models
|
|
193
|
+
|
|
194
|
+
We usually keep the credentials outside the repo like:
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
# from the repo root dir
|
|
198
|
+
cp ./oats/config/coder.json /opt/oats-coder.json
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Then we edit the ``/opt/oats-coder.json`` file and then set the env variable in our ``~/.bashrc``:
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
export CODER_CONFIG_FILE=/opt/oats-coder.json
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Chatting with AI
|
|
208
|
+
|
|
209
|
+
### Start the OATs Coder
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
$ ff
|
|
213
|
+
Let's build together!! ๐ค ๐ค ๐จ ๐ง
|
|
214
|
+
Starting up oats coder please wait...
|
|
215
|
+
If you hit an error, please open an issue so we can help fix it:
|
|
216
|
+
github.com/district-solutions/open-agent-tools-coder/issues
|
|
217
|
+
|
|
218
|
+
coder v1.2.0 ยท chat:latest ยท vllm-small
|
|
219
|
+
/opt/ds/oats
|
|
220
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
221
|
+
Enter to send ยท Alt+Enter for newline ยท /help for commands
|
|
222
|
+
|
|
223
|
+
mode: edit โ edit โ supervised, ask before writes. Switch with /edit /auto /plan /caveman
|
|
224
|
+
|
|
225
|
+
โฏ
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Verify Chat Works
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
โฏ say hello
|
|
232
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
233
|
+
2026-05-12 17:01:23 - sprc - INFO - loading_core_tools: 15
|
|
234
|
+
2026-05-12 17:01:23 - sprc - INFO - using_core_tools: {'tool_search', 'websearch', 'grep', 'todowrite', 'read', 'todoread', 'edit',
|
|
235
|
+
'memory_write', 'bash', 'webfetch', 'glob', 'multiedit', 'memory_read', 'write', 'question'} model_id: vllm-small@hosted_vllm/chat:latest
|
|
236
|
+
|
|
237
|
+
Hello! How can I help you today?
|
|
238
|
+
|
|
239
|
+
2.0s
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Troubleshooting
|
|
243
|
+
|
|
244
|
+
### vllm Unauthorized Error
|
|
245
|
+
|
|
246
|
+
If you see this error, then you need to ensure your ``CODER_CONFIG_FILE`` environment variable is set to the correct file:
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
LLM error: litellm.AuthenticationError: AuthenticationError: Hosted_vllmException - {"error":"Unauthorized"}
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Confirm the ``providers`` show up as expected:
|
|
253
|
+
|
|
254
|
+
```
|
|
255
|
+
$ pv
|
|
256
|
+
vllm-small (vllm-small): configured
|
|
257
|
+
t1 (t1): configured
|
|
258
|
+
ow (ow): not configured
|
|
259
|
+
Anthropic (anthropic): not configured
|
|
260
|
+
OpenAI (openai): not configured
|
|
261
|
+
Azure OpenAI (azure): not configured
|
|
262
|
+
Google AI (google): not configured
|
|
263
|
+
Mistral (mistral): not configured
|
|
264
|
+
Groq (groq): not configured
|
|
265
|
+
OpenRouter (openrouter): not configured
|
|
266
|
+
Together AI (together): not configured
|
|
267
|
+
Cohere (cohere): not configured
|
|
268
|
+
Ollama (ollama): configured
|
|
269
|
+
```
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Open Agent Tools Coder
|
|
2
|
+
|
|
3
|
+
Open Agent Tools (oats) enables small-to-large self-hosted ai models to use local source code when running tool-calling agentic workloads. We actively data mine 20,800+ (2+ TB) popular github repos using large and small ai models to create reuseable: json, markdown and parquet files for local-first tool-calling models. How does it work? Over multiple passes, we compile and export a fast, compressed prompt index for all python source code in any repo. Agents refer to the local prompt index to use already-written source code on disk instead of http with mcp or having an expensive frontier ai model re-build something that is already working locally with expensive tokens. We use oats to free up large model tokens usage by delegating the local tool-calling to smaller, open source ai models.
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
- Supports running local self-hosted models that can run 1-250+ local tool-calling commands using an agentic coding ai.
|
|
8
|
+
|
|
9
|
+
- Supports over ``141,000`` tools using the [open-agent-tools prompt indices repo](https://github.com/district-solutions/open-agent-tools). Requires cloning the repo(s) locally for the tool-calling to function.
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
Here is a recording showing how to install and get started quickly:
|
|
14
|
+
|
|
15
|
+
[](https://asciinema.org/a/3ZhMCyUKjr2dmIH1)
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
git clone https://github.com/district-solutions/open-agent-tools-coder oats
|
|
19
|
+
cd oats
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
pip install -e .
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
# litellm installs a older aiohttp version, upgrade this to the new version and ignore the warning
|
|
28
|
+
pip install --upgrade aiohttp
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Setup
|
|
32
|
+
|
|
33
|
+
### Local Tool Calling Alignment and Prompt Index Validation with RLHF Curation
|
|
34
|
+
|
|
35
|
+
This section does not require any ai models, it is validating that your local python runtime is ready for matching prompts to local tools. You can modify the prompt index file locally to map functions to different prompts. Let us know what you find!
|
|
36
|
+
|
|
37
|
+
We do this before deploying ai models because we can validate the prompt-to-tool mapping works before we add complexity with multiple self-hosted local ai models.
|
|
38
|
+
|
|
39
|
+
Confirm your local repo is setup for using the included ``repo_uses`` prompt index file. This command lets you quickly check which tools will show up for any prompt before burning any tokens on ai messages. Use this approach to validate a prompt will map to the expected tool before chatting to an ai model:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
get-tools -p 'get third friday'
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The output should be a valid json dictionary with a dictionary containing minimal choices for a small agentic ai model to process locally with local source code tool-calling:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
{
|
|
49
|
+
"status": true,
|
|
50
|
+
"actions": [
|
|
51
|
+
"get_third_friday"
|
|
52
|
+
],
|
|
53
|
+
"prompts": [
|
|
54
|
+
"generate third Friday dates for the next 6 months in YYYYMMDD format"
|
|
55
|
+
],
|
|
56
|
+
"src_files": [
|
|
57
|
+
"coder/date.py"
|
|
58
|
+
],
|
|
59
|
+
"partial_actions": [],
|
|
60
|
+
"partial_prompts": [],
|
|
61
|
+
"partial_src_files": [],
|
|
62
|
+
"index_files": [
|
|
63
|
+
"/opt/ds/coder/.ai/AGENT.repo_uses.python.tools.json"
|
|
64
|
+
],
|
|
65
|
+
"tool_data": {
|
|
66
|
+
"query": "get third friday",
|
|
67
|
+
"model": "bm25",
|
|
68
|
+
"reranked": false,
|
|
69
|
+
"best_files": [
|
|
70
|
+
"coder/date.py"
|
|
71
|
+
],
|
|
72
|
+
"best_uses": {
|
|
73
|
+
"coder/date.py": {
|
|
74
|
+
"utc": "utc datetime",
|
|
75
|
+
"get_utc_str": "get utc",
|
|
76
|
+
"get_utc_datetime": "get the current timezone-aware UTC datetime",
|
|
77
|
+
"get_naive_datetime": "get the current timezone-naive datetime from UTC",
|
|
78
|
+
"get_third_friday_dates": "generate third Friday dates for the next 6 months in YYYYMMDD format",
|
|
79
|
+
"run_date_tool": "run the date module to print third Friday dates for the next 6 months"
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"results": [
|
|
83
|
+
{
|
|
84
|
+
"file": "coder/date.py",
|
|
85
|
+
"func": "get_third_friday_dates",
|
|
86
|
+
"description": "generate third Friday dates for the next 6 months in YYYYMMDD format",
|
|
87
|
+
"score": 1.0,
|
|
88
|
+
"retrieval_score": 1.0
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
"version": "9"
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Start vLLM Chat and Tool Calling Models
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
cd stack
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
#### Deploy vLLM with Qwen36 27B or the Qwen36 35B model
|
|
103
|
+
|
|
104
|
+
We only need 1 of these models loaded on a 5090 or on an nvidia blackwell RTX 6000 to run completely locally:
|
|
105
|
+
|
|
106
|
+
- Download the quantized version of 27B: https://huggingface.co/cyankiwi/Qwen3.6-27B-AWQ-INT4 to ``./stack/models/hf/qwen/Qwen3.6-27B-AWQ-INT4``
|
|
107
|
+
|
|
108
|
+
and/or
|
|
109
|
+
|
|
110
|
+
- Download the quantized version of 35B: https://huggingface.co/cyankiwi/Qwen3.6-35B-A3B-AWQ-4bit to ``./stack/models/hf/qwen/Qwen3.6-35B-A3B-AWQ-4bit``
|
|
111
|
+
|
|
112
|
+
- Deploying the Qwen36 27B with vLLM requires >35 GB VRAM:
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
./restart-vllm-qwen36-27b.sh
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
- Deploying the Qwen36 35B with vLLM requires >35 GB VRAM:
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
./restart-vllm-qwen36-35b.sh
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
#### Deploy vLLM with FunctionGemma 270m Instruct
|
|
125
|
+
|
|
126
|
+
- Download FunctionGemma from HuggingFace: https://huggingface.co/google/functiongemma-270m-it to the dir below. Use your huggingface username and huggingface token as the git username/password.
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
git clone https://huggingface.co/google/functiongemma-270m-it stack/models/hf/google/functiongemma-270m-it
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
- Now that the model is ready, deployment requires ~6 GB RAM/VRAM
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
./restart-tool-functiongemma-1.sh
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Local Model Setup with the coder.json
|
|
139
|
+
|
|
140
|
+
To use local models from any directory on disk, make sure to set the ``CODER_CONFIG_FILE`` env variable to the default
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
# may want to add to your ~/.bashrc to always load at the abosolute path on disk:
|
|
144
|
+
# export CODER_CONFIG_FILE=PATH/coder.json
|
|
145
|
+
# for testing from the repo's root directory:
|
|
146
|
+
export CODER_CONFIG_FILE=$(pwd)/oats/config/coder.json
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
#### Optional - Setup the coder.json File for vLLM or Additional Local Models
|
|
150
|
+
|
|
151
|
+
We usually keep the credentials outside the repo like:
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
# from the repo root dir
|
|
155
|
+
cp ./oats/config/coder.json /opt/oats-coder.json
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Then we edit the ``/opt/oats-coder.json`` file and then set the env variable in our ``~/.bashrc``:
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
export CODER_CONFIG_FILE=/opt/oats-coder.json
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Chatting with AI
|
|
165
|
+
|
|
166
|
+
### Start the OATs Coder
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
$ ff
|
|
170
|
+
Let's build together!! ๐ค ๐ค ๐จ ๐ง
|
|
171
|
+
Starting up oats coder please wait...
|
|
172
|
+
If you hit an error, please open an issue so we can help fix it:
|
|
173
|
+
github.com/district-solutions/open-agent-tools-coder/issues
|
|
174
|
+
|
|
175
|
+
coder v1.2.0 ยท chat:latest ยท vllm-small
|
|
176
|
+
/opt/ds/oats
|
|
177
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
178
|
+
Enter to send ยท Alt+Enter for newline ยท /help for commands
|
|
179
|
+
|
|
180
|
+
mode: edit โ edit โ supervised, ask before writes. Switch with /edit /auto /plan /caveman
|
|
181
|
+
|
|
182
|
+
โฏ
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Verify Chat Works
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
โฏ say hello
|
|
189
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
190
|
+
2026-05-12 17:01:23 - sprc - INFO - loading_core_tools: 15
|
|
191
|
+
2026-05-12 17:01:23 - sprc - INFO - using_core_tools: {'tool_search', 'websearch', 'grep', 'todowrite', 'read', 'todoread', 'edit',
|
|
192
|
+
'memory_write', 'bash', 'webfetch', 'glob', 'multiedit', 'memory_read', 'write', 'question'} model_id: vllm-small@hosted_vllm/chat:latest
|
|
193
|
+
|
|
194
|
+
Hello! How can I help you today?
|
|
195
|
+
|
|
196
|
+
2.0s
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Troubleshooting
|
|
200
|
+
|
|
201
|
+
### vllm Unauthorized Error
|
|
202
|
+
|
|
203
|
+
If you see this error, then you need to ensure your ``CODER_CONFIG_FILE`` environment variable is set to the correct file:
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
LLM error: litellm.AuthenticationError: AuthenticationError: Hosted_vllmException - {"error":"Unauthorized"}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Confirm the ``providers`` show up as expected:
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
$ pv
|
|
213
|
+
vllm-small (vllm-small): configured
|
|
214
|
+
t1 (t1): configured
|
|
215
|
+
ow (ow): not configured
|
|
216
|
+
Anthropic (anthropic): not configured
|
|
217
|
+
OpenAI (openai): not configured
|
|
218
|
+
Azure OpenAI (azure): not configured
|
|
219
|
+
Google AI (google): not configured
|
|
220
|
+
Mistral (mistral): not configured
|
|
221
|
+
Groq (groq): not configured
|
|
222
|
+
OpenRouter (openrouter): not configured
|
|
223
|
+
Together AI (together): not configured
|
|
224
|
+
Cohere (cohere): not configured
|
|
225
|
+
Ollama (ollama): configured
|
|
226
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export VLLM_PROVIDER_ID=vllm-small
|
|
2
|
+
export VLLM_MODEL_ID=hosted_vllm/chat:latest
|
|
3
|
+
|
|
4
|
+
export OATS_ENABLED=0
|
|
5
|
+
|
|
6
|
+
# disabled with 0, enabled with anything else
|
|
7
|
+
export CODER_DISABLED_CLOUD_MODELS=0
|
|
8
|
+
|
|
9
|
+
export CODER_CTX_LEN=8000
|
|
10
|
+
# export CODER_CHAT_URL=http://open-webui-host:port
|
|
11
|
+
export CODER_CHAT_URL=
|
|
12
|
+
export CODER_CHAT_PASSWORD=
|
|
13
|
+
export CODER_CHAT_EMAIL=
|
|
14
|
+
export CODER_NAME=
|
|
15
|
+
# export CODER_CONFIG_FILE=/opt/ds/oats.json
|
|
16
|
+
export CODER_CONFIG_FILE=
|
|
17
|
+
# export CODER_TOOL_USES_INDEX=/opt/ds/oats/.ai/AGENT.repo_uses.python.tools.json
|
|
18
|
+
export CODER_TOOL_USES_INDEX=.ai/AGENT.repo_uses.python.tools.json
|
|
19
|
+
|
|
20
|
+
# Coder - Tool - MCP Feature Flags
|
|
21
|
+
export CODER_PROFILE=full
|
|
22
|
+
export CODER_TOOL_USES_INDEX=
|
|
23
|
+
export CODER_TOOLS_API_KEY=
|
|
24
|
+
# export CODER_TOOL_BASE_DIR=/opt/ds/oats
|
|
25
|
+
export CODER_TOOL_BASE_DIR=
|
|
26
|
+
|
|
27
|
+
# OR custom feature flags
|
|
28
|
+
# export CODER_FEATURE_WEB_TOOLS=1
|
|
29
|
+
# export CODER_FEATURE_PLANNING=1
|
|
30
|
+
# export CODER_FEATURE_MEMORY=1
|
|
31
|
+
# export CODER_FEATURE_AGENTS=1
|
|
32
|
+
# export CODER_FEATURE_CERTIFICATES=1
|
|
33
|
+
# export CODER_FEATURE_LSP=1
|
|
34
|
+
# export CODER_FEATURE_MCP=1
|
|
35
|
+
|
|
36
|
+
# disable litellm token price downloading on startup
|
|
37
|
+
export LITELLM_LOCAL_MODEL_COST_MAP=True
|
|
38
|
+
|
|
39
|
+
export COLORS_ENABLED=1
|
|
40
|
+
export ENV_NAME=prod
|
|
41
|
+
|
|
42
|
+
export TOOL_API_KEY=CHANGE_PASSWORD
|
|
43
|
+
|
|
44
|
+
export VLLM_PROVIDER_ID=vllm-small
|
|
45
|
+
export VLLM_MODEL_ID=hosted_vllm/chat:latest
|
|
46
|
+
|
|
47
|
+
export PYTHONUNBUFFERED=1
|
|
48
|
+
export PYTHONDONTWRITEBYTECODE=1
|