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.
Files changed (259) hide show
  1. oats_coder-1.0.0/.gitignore +84 -0
  2. oats_coder-1.0.0/LICENSE +1 -0
  3. oats_coder-1.0.0/MANIFEST.in +13 -0
  4. oats_coder-1.0.0/PKG-INFO +269 -0
  5. oats_coder-1.0.0/README.md +226 -0
  6. oats_coder-1.0.0/example-env.sh +48 -0
  7. oats_coder-1.0.0/oats/AGENT.dir.python.tools.json +1 -0
  8. oats_coder-1.0.0/oats/AGENT.python.tools.md +131 -0
  9. oats_coder-1.0.0/oats/agent/AGENT.dir.python.tools.json +1 -0
  10. oats_coder-1.0.0/oats/agent/AGENT.python.tools.md +19 -0
  11. oats_coder-1.0.0/oats/agent/agent.py +176 -0
  12. oats_coder-1.0.0/oats/agent/agent.py.AGENT.python.tools.json +7 -0
  13. oats_coder-1.0.0/oats/agent_get_tool_choices_for_prompt.py +32 -0
  14. oats_coder-1.0.0/oats/agent_get_tool_choices_for_prompt.py.AGENT.python.tools.json +7 -0
  15. oats_coder-1.0.0/oats/call_tool_with_loader1.py +430 -0
  16. oats_coder-1.0.0/oats/call_tool_with_loader1.py.AGENT.python.tools.json +7 -0
  17. oats_coder-1.0.0/oats/cli/AGENT.dir.python.tools.json +1 -0
  18. oats_coder-1.0.0/oats/cli/AGENT.python.tools.md +33 -0
  19. oats_coder-1.0.0/oats/cli/approval.py +154 -0
  20. oats_coder-1.0.0/oats/cli/approval.py.AGENT.python.tools.json +7 -0
  21. oats_coder-1.0.0/oats/cli/check_providers.py +25 -0
  22. oats_coder-1.0.0/oats/cli/check_providers.py.AGENT.python.tools.json +7 -0
  23. oats_coder-1.0.0/oats/cli/interactive.py +550 -0
  24. oats_coder-1.0.0/oats/cli/interactive.py.AGENT.python.tools.json +7 -0
  25. oats_coder-1.0.0/oats/cli/process_message.py +153 -0
  26. oats_coder-1.0.0/oats/cli/process_message.py.AGENT.python.tools.json +7 -0
  27. oats_coder-1.0.0/oats/cli/tui/AGENT.dir.python.tools.json +1 -0
  28. oats_coder-1.0.0/oats/cli/tui/AGENT.python.tools.md +19 -0
  29. oats_coder-1.0.0/oats/cli/tui/tui_banner.py +114 -0
  30. oats_coder-1.0.0/oats/cli/tui/tui_banner.py.AGENT.python.tools.json +7 -0
  31. oats_coder-1.0.0/oats/cli/tui/tui_consts.py +120 -0
  32. oats_coder-1.0.0/oats/cli/tui/tui_consts.py.AGENT.python.tools.json +7 -0
  33. oats_coder-1.0.0/oats/cli/tui/tui_utils.py +492 -0
  34. oats_coder-1.0.0/oats/cli/tui/tui_utils.py.AGENT.python.tools.json +7 -0
  35. oats_coder-1.0.0/oats/config/coder.json +27 -0
  36. oats_coder-1.0.0/oats/core/AGENT.dir.python.tools.json +1 -0
  37. oats_coder-1.0.0/oats/core/AGENT.python.tools.md +117 -0
  38. oats_coder-1.0.0/oats/core/__init__.py +19 -0
  39. oats_coder-1.0.0/oats/core/bus.py +170 -0
  40. oats_coder-1.0.0/oats/core/bus.py.AGENT.python.tools.json +7 -0
  41. oats_coder-1.0.0/oats/core/config.py +270 -0
  42. oats_coder-1.0.0/oats/core/config.py.AGENT.python.tools.json +7 -0
  43. oats_coder-1.0.0/oats/core/features.py +118 -0
  44. oats_coder-1.0.0/oats/core/features.py.AGENT.python.tools.json +7 -0
  45. oats_coder-1.0.0/oats/core/id.py +17 -0
  46. oats_coder-1.0.0/oats/core/id.py.AGENT.python.tools.json +7 -0
  47. oats_coder-1.0.0/oats/core/offline.py +93 -0
  48. oats_coder-1.0.0/oats/core/offline.py.AGENT.python.tools.json +7 -0
  49. oats_coder-1.0.0/oats/core/profiles.py +179 -0
  50. oats_coder-1.0.0/oats/core/profiles.py.AGENT.python.tools.json +7 -0
  51. oats_coder-1.0.0/oats/core/storage.py +207 -0
  52. oats_coder-1.0.0/oats/core/storage.py.AGENT.python.tools.json +7 -0
  53. oats_coder-1.0.0/oats/core/tokens.py +80 -0
  54. oats_coder-1.0.0/oats/core/tokens.py.AGENT.python.tools.json +7 -0
  55. oats_coder-1.0.0/oats/date.py +83 -0
  56. oats_coder-1.0.0/oats/date.py.AGENT.python.tools.json +7 -0
  57. oats_coder-1.0.0/oats/determine_best_tools1.py +311 -0
  58. oats_coder-1.0.0/oats/determine_best_tools1.py.AGENT.python.tools.json +7 -0
  59. oats_coder-1.0.0/oats/get_oat_config.py +12 -0
  60. oats_coder-1.0.0/oats/get_oat_config.py.AGENT.python.tools.json +3 -0
  61. oats_coder-1.0.0/oats/git/AGENT.dir.python.tools.json +1 -0
  62. oats_coder-1.0.0/oats/git/AGENT.python.tools.md +89 -0
  63. oats_coder-1.0.0/oats/git/__init__.py +6 -0
  64. oats_coder-1.0.0/oats/git/build_git_repo_to_dataset.py +185 -0
  65. oats_coder-1.0.0/oats/git/build_git_repo_to_dataset.py.AGENT.python.tools.json +7 -0
  66. oats_coder-1.0.0/oats/git/coauthor.py +75 -0
  67. oats_coder-1.0.0/oats/git/coauthor.py.AGENT.python.tools.json +7 -0
  68. oats_coder-1.0.0/oats/git/git_commit_search1.py +537 -0
  69. oats_coder-1.0.0/oats/git/git_commit_search1.py.AGENT.python.tools.json +7 -0
  70. oats_coder-1.0.0/oats/git/git_diff_extractor.py +221 -0
  71. oats_coder-1.0.0/oats/git/git_diff_extractor.py.AGENT.python.tools.json +7 -0
  72. oats_coder-1.0.0/oats/git/git_to_df_converter.py +115 -0
  73. oats_coder-1.0.0/oats/git/git_to_df_converter.py.AGENT.python.tools.json +7 -0
  74. oats_coder-1.0.0/oats/git/repo_to_parquet.py +81 -0
  75. oats_coder-1.0.0/oats/git/repo_to_parquet.py.AGENT.python.tools.json +7 -0
  76. oats_coder-1.0.0/oats/git/walk_up_dir_path_to_find_git_config.py +56 -0
  77. oats_coder-1.0.0/oats/git/walk_up_dir_path_to_find_git_config.py.AGENT.python.tools.json +7 -0
  78. oats_coder-1.0.0/oats/git/worktree.py +184 -0
  79. oats_coder-1.0.0/oats/git/worktree.py.AGENT.python.tools.json +7 -0
  80. oats_coder-1.0.0/oats/hook/AGENT.dir.python.tools.json +1 -0
  81. oats_coder-1.0.0/oats/hook/AGENT.python.tools.md +19 -0
  82. oats_coder-1.0.0/oats/hook/__init__.py +23 -0
  83. oats_coder-1.0.0/oats/hook/engine.py +225 -0
  84. oats_coder-1.0.0/oats/hook/engine.py.AGENT.python.tools.json +7 -0
  85. oats_coder-1.0.0/oats/load_tools_from_source1.py +594 -0
  86. oats_coder-1.0.0/oats/load_tools_from_source1.py.AGENT.python.tools.json +7 -0
  87. oats_coder-1.0.0/oats/log.py +233 -0
  88. oats_coder-1.0.0/oats/log.py.AGENT.python.tools.json +7 -0
  89. oats_coder-1.0.0/oats/lsp/AGENT.dir.python.tools.json +1 -0
  90. oats_coder-1.0.0/oats/lsp/AGENT.python.tools.md +19 -0
  91. oats_coder-1.0.0/oats/lsp/__init__.py +1 -0
  92. oats_coder-1.0.0/oats/lsp/client.py +381 -0
  93. oats_coder-1.0.0/oats/lsp/client.py.AGENT.python.tools.json +7 -0
  94. oats_coder-1.0.0/oats/mcp/AGENT.dir.python.tools.json +1 -0
  95. oats_coder-1.0.0/oats/mcp/AGENT.python.tools.md +159 -0
  96. oats_coder-1.0.0/oats/mcp/config.py +201 -0
  97. oats_coder-1.0.0/oats/mcp/config.py.AGENT.python.tools.json +7 -0
  98. oats_coder-1.0.0/oats/mcp/example_mcp_config.json +58 -0
  99. oats_coder-1.0.0/oats/mcp/fetch.py +405 -0
  100. oats_coder-1.0.0/oats/mcp/fetch.py.AGENT.python.tools.json +7 -0
  101. oats_coder-1.0.0/oats/mcp/index.py +381 -0
  102. oats_coder-1.0.0/oats/mcp/index.py.AGENT.python.tools.json +7 -0
  103. oats_coder-1.0.0/oats/mcp/intent.py +427 -0
  104. oats_coder-1.0.0/oats/mcp/intent.py.AGENT.python.tools.json +7 -0
  105. oats_coder-1.0.0/oats/mcp/models.py +304 -0
  106. oats_coder-1.0.0/oats/mcp/models.py.AGENT.python.tools.json +7 -0
  107. oats_coder-1.0.0/oats/mcp/orchestrator.py +653 -0
  108. oats_coder-1.0.0/oats/mcp/orchestrator.py.AGENT.python.tools.json +7 -0
  109. oats_coder-1.0.0/oats/mcp/ranking.py +243 -0
  110. oats_coder-1.0.0/oats/mcp/ranking.py.AGENT.python.tools.json +7 -0
  111. oats_coder-1.0.0/oats/mcp/registry.py +567 -0
  112. oats_coder-1.0.0/oats/mcp/registry.py.AGENT.python.tools.json +7 -0
  113. oats_coder-1.0.0/oats/mcp/resolver.py +588 -0
  114. oats_coder-1.0.0/oats/mcp/resolver.py.AGENT.python.tools.json +7 -0
  115. oats_coder-1.0.0/oats/mcp/tools.py +574 -0
  116. oats_coder-1.0.0/oats/mcp/tools.py.AGENT.python.tools.json +7 -0
  117. oats_coder-1.0.0/oats/mcp/tracker.py +254 -0
  118. oats_coder-1.0.0/oats/mcp/tracker.py.AGENT.python.tools.json +7 -0
  119. oats_coder-1.0.0/oats/memory/AGENT.dir.python.tools.json +1 -0
  120. oats_coder-1.0.0/oats/memory/AGENT.python.tools.md +19 -0
  121. oats_coder-1.0.0/oats/memory/__init__.py +14 -0
  122. oats_coder-1.0.0/oats/memory/manager.py +180 -0
  123. oats_coder-1.0.0/oats/memory/manager.py.AGENT.python.tools.json +7 -0
  124. oats_coder-1.0.0/oats/memory/models.py +97 -0
  125. oats_coder-1.0.0/oats/memory/models.py.AGENT.python.tools.json +7 -0
  126. oats_coder-1.0.0/oats/models.py +332 -0
  127. oats_coder-1.0.0/oats/models.py.AGENT.python.tools.json +7 -0
  128. oats_coder-1.0.0/oats/oweb/AGENT.dir.python.tools.json +1 -0
  129. oats_coder-1.0.0/oats/oweb/AGENT.python.tools.md +33 -0
  130. oats_coder-1.0.0/oats/oweb/get_auth.py +56 -0
  131. oats_coder-1.0.0/oats/oweb/get_auth.py.AGENT.python.tools.json +7 -0
  132. oats_coder-1.0.0/oats/oweb/login.py +72 -0
  133. oats_coder-1.0.0/oats/oweb/login.py.AGENT.python.tools.json +7 -0
  134. oats_coder-1.0.0/oats/plugins/AGENT.dir.python.tools.json +1 -0
  135. oats_coder-1.0.0/oats/plugins/AGENT.python.tools.md +33 -0
  136. oats_coder-1.0.0/oats/plugins/__init__.py +24 -0
  137. oats_coder-1.0.0/oats/plugins/loader.py +278 -0
  138. oats_coder-1.0.0/oats/plugins/loader.py.AGENT.python.tools.json +7 -0
  139. oats_coder-1.0.0/oats/plugins/manifest.py +171 -0
  140. oats_coder-1.0.0/oats/plugins/manifest.py.AGENT.python.tools.json +7 -0
  141. oats_coder-1.0.0/oats/pp.py +8 -0
  142. oats_coder-1.0.0/oats/pp.py.AGENT.python.tools.json +7 -0
  143. oats_coder-1.0.0/oats/provider/AGENT.dir.python.tools.json +1 -0
  144. oats_coder-1.0.0/oats/provider/AGENT.python.tools.md +33 -0
  145. oats_coder-1.0.0/oats/provider/models.py +249 -0
  146. oats_coder-1.0.0/oats/provider/models.py.AGENT.python.tools.json +7 -0
  147. oats_coder-1.0.0/oats/provider/provider.py +822 -0
  148. oats_coder-1.0.0/oats/provider/provider.py.AGENT.python.tools.json +7 -0
  149. oats_coder-1.0.0/oats/session/AGENT.dir.python.tools.json +1 -0
  150. oats_coder-1.0.0/oats/session/AGENT.python.tools.md +201 -0
  151. oats_coder-1.0.0/oats/session/__init__.py +35 -0
  152. oats_coder-1.0.0/oats/session/build_system_prompt.py +184 -0
  153. oats_coder-1.0.0/oats/session/build_system_prompt.py.AGENT.python.tools.json +7 -0
  154. oats_coder-1.0.0/oats/session/caveman.py +177 -0
  155. oats_coder-1.0.0/oats/session/caveman.py.AGENT.python.tools.json +7 -0
  156. oats_coder-1.0.0/oats/session/compaction.py +463 -0
  157. oats_coder-1.0.0/oats/session/compaction.py.AGENT.python.tools.json +7 -0
  158. oats_coder-1.0.0/oats/session/debug_trace.py +41 -0
  159. oats_coder-1.0.0/oats/session/debug_trace.py.AGENT.python.tools.json +7 -0
  160. oats_coder-1.0.0/oats/session/file_cache.py +108 -0
  161. oats_coder-1.0.0/oats/session/file_cache.py.AGENT.python.tools.json +7 -0
  162. oats_coder-1.0.0/oats/session/message.py +214 -0
  163. oats_coder-1.0.0/oats/session/message.py.AGENT.python.tools.json +7 -0
  164. oats_coder-1.0.0/oats/session/metrics.py +52 -0
  165. oats_coder-1.0.0/oats/session/metrics.py.AGENT.python.tools.json +7 -0
  166. oats_coder-1.0.0/oats/session/models.py +43 -0
  167. oats_coder-1.0.0/oats/session/models.py.AGENT.python.tools.json +5 -0
  168. oats_coder-1.0.0/oats/session/modes.py +107 -0
  169. oats_coder-1.0.0/oats/session/modes.py.AGENT.python.tools.json +7 -0
  170. oats_coder-1.0.0/oats/session/processor.py +1600 -0
  171. oats_coder-1.0.0/oats/session/processor.py.AGENT.python.tools.json +7 -0
  172. oats_coder-1.0.0/oats/session/screenshot_store.py +157 -0
  173. oats_coder-1.0.0/oats/session/screenshot_store.py.AGENT.python.tools.json +7 -0
  174. oats_coder-1.0.0/oats/session/session.py +224 -0
  175. oats_coder-1.0.0/oats/session/session.py.AGENT.python.tools.json +7 -0
  176. oats_coder-1.0.0/oats/session/skill_selector.py +156 -0
  177. oats_coder-1.0.0/oats/session/skill_selector.py.AGENT.python.tools.json +7 -0
  178. oats_coder-1.0.0/oats/session/task_budget.py +159 -0
  179. oats_coder-1.0.0/oats/session/task_budget.py.AGENT.python.tools.json +7 -0
  180. oats_coder-1.0.0/oats/session/token_budget.py +90 -0
  181. oats_coder-1.0.0/oats/session/token_budget.py.AGENT.python.tools.json +7 -0
  182. oats_coder-1.0.0/oats/session/tool_retention.py +80 -0
  183. oats_coder-1.0.0/oats/session/tool_retention.py.AGENT.python.tools.json +7 -0
  184. oats_coder-1.0.0/oats/session/usage.py +139 -0
  185. oats_coder-1.0.0/oats/session/usage.py.AGENT.python.tools.json +7 -0
  186. oats_coder-1.0.0/oats/tool/AGENT.dir.python.tools.json +1 -0
  187. oats_coder-1.0.0/oats/tool/AGENT.python.tools.md +299 -0
  188. oats_coder-1.0.0/oats/tool/agent_tool.py +447 -0
  189. oats_coder-1.0.0/oats/tool/agent_tool.py.AGENT.python.tools.json +7 -0
  190. oats_coder-1.0.0/oats/tool/aws_safety.py +189 -0
  191. oats_coder-1.0.0/oats/tool/aws_safety.py.AGENT.python.tools.json +7 -0
  192. oats_coder-1.0.0/oats/tool/bash.py +188 -0
  193. oats_coder-1.0.0/oats/tool/bash.py.AGENT.python.tools.json +7 -0
  194. oats_coder-1.0.0/oats/tool/edit.py +437 -0
  195. oats_coder-1.0.0/oats/tool/generate_readme.py +280 -0
  196. oats_coder-1.0.0/oats/tool/generate_readme.py.AGENT.python.tools.json +7 -0
  197. oats_coder-1.0.0/oats/tool/glob_tool.py +183 -0
  198. oats_coder-1.0.0/oats/tool/glob_tool.py.AGENT.python.tools.json +7 -0
  199. oats_coder-1.0.0/oats/tool/grep.py +337 -0
  200. oats_coder-1.0.0/oats/tool/grep.py.AGENT.python.tools.json +7 -0
  201. oats_coder-1.0.0/oats/tool/init_tools.py +152 -0
  202. oats_coder-1.0.0/oats/tool/init_tools.py.AGENT.python.tools.json +7 -0
  203. oats_coder-1.0.0/oats/tool/lsp_tool.py +315 -0
  204. oats_coder-1.0.0/oats/tool/lsp_tool.py.AGENT.python.tools.json +7 -0
  205. oats_coder-1.0.0/oats/tool/memory_tool.py +241 -0
  206. oats_coder-1.0.0/oats/tool/memory_tool.py.AGENT.python.tools.json +7 -0
  207. oats_coder-1.0.0/oats/tool/multiedit.py +198 -0
  208. oats_coder-1.0.0/oats/tool/multiedit.py.AGENT.python.tools.json +7 -0
  209. oats_coder-1.0.0/oats/tool/patch.py +343 -0
  210. oats_coder-1.0.0/oats/tool/patch.py.AGENT.python.tools.json +7 -0
  211. oats_coder-1.0.0/oats/tool/plan.py +318 -0
  212. oats_coder-1.0.0/oats/tool/plan.py.AGENT.python.tools.json +7 -0
  213. oats_coder-1.0.0/oats/tool/playwright_search.py +227 -0
  214. oats_coder-1.0.0/oats/tool/playwright_search.py.AGENT.python.tools.json +7 -0
  215. oats_coder-1.0.0/oats/tool/question.py +245 -0
  216. oats_coder-1.0.0/oats/tool/question.py.AGENT.python.tools.json +7 -0
  217. oats_coder-1.0.0/oats/tool/read.py +199 -0
  218. oats_coder-1.0.0/oats/tool/read.py.AGENT.python.tools.json +7 -0
  219. oats_coder-1.0.0/oats/tool/registry.py +184 -0
  220. oats_coder-1.0.0/oats/tool/registry.py.AGENT.python.tools.json +7 -0
  221. oats_coder-1.0.0/oats/tool/todowrite.py +224 -0
  222. oats_coder-1.0.0/oats/tool/todowrite.py.AGENT.python.tools.json +7 -0
  223. oats_coder-1.0.0/oats/tool/tool_search.py +176 -0
  224. oats_coder-1.0.0/oats/tool/tool_search.py.AGENT.python.tools.json +7 -0
  225. oats_coder-1.0.0/oats/tool/webfetch.py +200 -0
  226. oats_coder-1.0.0/oats/tool/webfetch.py.AGENT.python.tools.json +7 -0
  227. oats_coder-1.0.0/oats/tool/websearch.py +277 -0
  228. oats_coder-1.0.0/oats/tool/websearch.py.AGENT.python.tools.json +7 -0
  229. oats_coder-1.0.0/oats/tool/write.py +154 -0
  230. oats_coder-1.0.0/oats/tool/write.py.AGENT.python.tools.json +7 -0
  231. oats_coder-1.0.0/oats/trajectory/AGENT.dir.python.tools.json +1 -0
  232. oats_coder-1.0.0/oats/trajectory/AGENT.python.tools.md +61 -0
  233. oats_coder-1.0.0/oats/trajectory/__init__.py +17 -0
  234. oats_coder-1.0.0/oats/trajectory/logger.py +119 -0
  235. oats_coder-1.0.0/oats/trajectory/logger.py.AGENT.python.tools.json +7 -0
  236. oats_coder-1.0.0/oats/trajectory/metrics.py +222 -0
  237. oats_coder-1.0.0/oats/trajectory/metrics.py.AGENT.python.tools.json +7 -0
  238. oats_coder-1.0.0/oats/trajectory/report.py +37 -0
  239. oats_coder-1.0.0/oats/trajectory/report.py.AGENT.python.tools.json +7 -0
  240. oats_coder-1.0.0/oats/trajectory/retrieval.py +140 -0
  241. oats_coder-1.0.0/oats/trajectory/retrieval.py.AGENT.python.tools.json +7 -0
  242. oats_coder-1.0.0/oats/trajectory/store.py +366 -0
  243. oats_coder-1.0.0/oats/trajectory/store.py.AGENT.python.tools.json +7 -0
  244. oats_coder-1.0.0/pyproject.toml +86 -0
  245. oats_coder-1.0.0/pyrightconfig.json +16 -0
  246. oats_coder-1.0.0/stack/.gitignore +1 -0
  247. oats_coder-1.0.0/stack/models/hf/qwen/.gitignore +5 -0
  248. oats_coder-1.0.0/stack/restart-tool-functiongemma-1.sh +36 -0
  249. oats_coder-1.0.0/stack/restart-vllm-qwen36-27b.sh +32 -0
  250. oats_coder-1.0.0/stack/restart-vllm-qwen36-35b.sh +32 -0
  251. oats_coder-1.0.0/stack/vllm/chat/config-qwen36-27b-awq4.yaml +19 -0
  252. oats_coder-1.0.0/stack/vllm/chat/config-qwen36-35b-awq4.yaml +19 -0
  253. oats_coder-1.0.0/stack/vllm/chat/qwen36-27b-awq4.yaml +35 -0
  254. oats_coder-1.0.0/stack/vllm/chat/qwen36-35b-awq4.yaml +33 -0
  255. oats_coder-1.0.0/stack/vllm/models/hf/google/.gitignore +1 -0
  256. oats_coder-1.0.0/stack/vllm/models/hf/qwen/.gitignore +2 -0
  257. oats_coder-1.0.0/stack/vllm/tools/functiongemma/config-functiongemma.yaml +12 -0
  258. oats_coder-1.0.0/stack/vllm/tools/functiongemma/docker-compose-functiongemma.yaml +34 -0
  259. 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
@@ -0,0 +1 @@
1
+ Apache 2.0
@@ -0,0 +1,13 @@
1
+ prune .venv
2
+ prune venv
3
+ prune node_modules
4
+ prune .git
5
+ prune build
6
+ prune dist
7
+ prune .pytest_cache
8
+ prune .mypy_cache
9
+ prune .tox
10
+ prune .nox
11
+ prune htmlcov
12
+ global-exclude __pycache__/*
13
+ global-exclude *.py[cod]
@@ -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
+ ![Open Agent Tools (oats) - Architecture - Intro Tool Calling Pipeline for Powering Up Small AI Models](https://raw.githubusercontent.com/district-solutions/open-agent-tools-coder/refs/heads/main/stack/img/oats-intro.jpg)
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
+ [![Getting Started with Open Agent Tools Agentic Coder - Install, Chats and Tool-Calling with Qwen36 27B and FunctionGemma using vLLM](https://asciinema.org/a/3ZhMCyUKjr2dmIH1.svg)](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
+ ![Open Agent Tools (oats) - Architecture - Intro Tool Calling Pipeline for Powering Up Small AI Models](https://raw.githubusercontent.com/district-solutions/open-agent-tools-coder/refs/heads/main/stack/img/oats-intro.jpg)
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
+ [![Getting Started with Open Agent Tools Agentic Coder - Install, Chats and Tool-Calling with Qwen36 27B and FunctionGemma using vLLM](https://asciinema.org/a/3ZhMCyUKjr2dmIH1.svg)](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