acra-cli 0.1.1__tar.gz → 0.1.3__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 (182) hide show
  1. {acra_cli-0.1.1/acra_cli.egg-info → acra_cli-0.1.3}/PKG-INFO +31 -25
  2. {acra_cli-0.1.1 → acra_cli-0.1.3}/README.md +30 -24
  3. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/__init__.py +1 -1
  4. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/cli.py +33 -3
  5. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/commands/__init__.py +2 -0
  6. acra_cli-0.1.3/acra/commands/ask.py +95 -0
  7. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/commands/research.py +6 -2
  8. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/ui/__pycache__/banner.cpython-312.pyc +0 -0
  9. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/ui/banner.py +1 -1
  10. {acra_cli-0.1.1 → acra_cli-0.1.3/acra_cli.egg-info}/PKG-INFO +31 -25
  11. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra_cli.egg-info/SOURCES.txt +3 -1
  12. acra_cli-0.1.3/acra_cli.egg-info/entry_points.txt +2 -0
  13. {acra_cli-0.1.1 → acra_cli-0.1.3}/pyproject.toml +4 -1
  14. acra_cli-0.1.3/tests/test_cli.py +91 -0
  15. acra_cli-0.1.3/tests/test_interactive_routing.py +53 -0
  16. acra_cli-0.1.1/acra/commands/ask.py +0 -49
  17. acra_cli-0.1.1/tests/test_cli.py +0 -36
  18. {acra_cli-0.1.1 → acra_cli-0.1.3}/LICENSE +0 -0
  19. {acra_cli-0.1.1 → acra_cli-0.1.3}/MANIFEST.in +0 -0
  20. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/__main__.py +0 -0
  21. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/__init__.py +0 -0
  22. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/__pycache__/__init__.cpython-312.pyc +0 -0
  23. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/__pycache__/llm.cpython-312.pyc +0 -0
  24. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/__pycache__/llm_utils.cpython-312.pyc +0 -0
  25. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/coder/__init__.py +0 -0
  26. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/coder/__pycache__/__init__.cpython-312.pyc +0 -0
  27. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/coder/__pycache__/coder_agent.cpython-312.pyc +0 -0
  28. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/coder/__pycache__/coder_chain.cpython-312.pyc +0 -0
  29. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/coder/coder_agent.py +0 -0
  30. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/coder/coder_chain.py +0 -0
  31. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/critic/__init__.py +0 -0
  32. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/critic/__pycache__/__init__.cpython-312.pyc +0 -0
  33. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/critic/__pycache__/critic_agent.cpython-312.pyc +0 -0
  34. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/critic/__pycache__/critic_chain.cpython-312.pyc +0 -0
  35. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/critic/critic_agent.py +0 -0
  36. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/critic/critic_chain.py +0 -0
  37. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/executor/__init__.py +0 -0
  38. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/executor/__pycache__/__init__.cpython-312.pyc +0 -0
  39. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/executor/__pycache__/docker_runner.cpython-312.pyc +0 -0
  40. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/executor/__pycache__/executor_agent.cpython-312.pyc +0 -0
  41. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/executor/__pycache__/sandbox_runner.cpython-312.pyc +0 -0
  42. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/executor/docker_runner.py +0 -0
  43. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/executor/executor_agent.py +0 -0
  44. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/executor/sandbox_runner.py +0 -0
  45. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/human/__init__.py +0 -0
  46. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/human/__pycache__/__init__.cpython-312.pyc +0 -0
  47. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/human/__pycache__/human_node.cpython-312.pyc +0 -0
  48. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/human/human_node.py +0 -0
  49. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/llm.py +0 -0
  50. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/llm_utils.py +0 -0
  51. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/memory/__init__.py +0 -0
  52. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/memory/__pycache__/__init__.cpython-312.pyc +0 -0
  53. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/memory/__pycache__/memory_agent.cpython-312.pyc +0 -0
  54. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/memory/__pycache__/memory_manager.cpython-312.pyc +0 -0
  55. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/memory/__pycache__/retrieval.cpython-312.pyc +0 -0
  56. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/memory/memory_agent.py +0 -0
  57. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/memory/memory_manager.py +0 -0
  58. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/memory/retrieval.py +0 -0
  59. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/planner/__init__.py +0 -0
  60. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/planner/__pycache__/__init__.cpython-312.pyc +0 -0
  61. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/planner/__pycache__/planner_agent.cpython-312.pyc +0 -0
  62. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/planner/__pycache__/planner_chain.cpython-312.pyc +0 -0
  63. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/planner/planner_agent.py +0 -0
  64. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/planner/planner_chain.py +0 -0
  65. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/researcher/__init__.py +0 -0
  66. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/researcher/__pycache__/__init__.cpython-312.pyc +0 -0
  67. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/researcher/__pycache__/researcher_agent.cpython-312.pyc +0 -0
  68. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/researcher/__pycache__/researcher_chain.cpython-312.pyc +0 -0
  69. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/researcher/researcher_agent.py +0 -0
  70. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/agents/researcher/researcher_chain.py +0 -0
  71. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/brain/__init__.py +0 -0
  72. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/brain/model_registry.py +0 -0
  73. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/brain/provider_manager.py +0 -0
  74. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/commands/brain.py +0 -0
  75. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/commands/config.py +0 -0
  76. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/commands/context.py +0 -0
  77. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/commands/graph.py +0 -0
  78. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/commands/keys.py +0 -0
  79. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/commands/logs.py +0 -0
  80. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/commands/memory.py +0 -0
  81. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/commands/plugin.py +0 -0
  82. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/commands/serve.py +0 -0
  83. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/commands/session.py +0 -0
  84. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/commands/utils.py +0 -0
  85. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/config/__init__.py +0 -0
  86. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/config/__pycache__/__init__.cpython-312.pyc +0 -0
  87. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/config/__pycache__/defaults.cpython-312.pyc +0 -0
  88. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/config/__pycache__/profile_manager.cpython-312.pyc +0 -0
  89. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/config/defaults.py +0 -0
  90. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/config/profile_manager.py +0 -0
  91. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/execution/__init__.py +0 -0
  92. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/execution/logs/__init__.py +0 -0
  93. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/execution/logs/error_logs/__init__.py +0 -0
  94. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/execution/logs/execution_logs/__init__.py +0 -0
  95. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/execution/sandbox/__init__.py +0 -0
  96. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/execution/sandbox/docker_executor.py +0 -0
  97. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/execution/sandbox/isolated_runner.py +0 -0
  98. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/execution/sandbox/sandbox_manager.py +0 -0
  99. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/graph/__init__.py +0 -0
  100. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/graph/checkpoint.py +0 -0
  101. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/graph/conditional_edges.py +0 -0
  102. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/graph/edges.py +0 -0
  103. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/graph/graph_visualizer.py +0 -0
  104. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/graph/nodes.py +0 -0
  105. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/graph/router.py +0 -0
  106. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/graph/state.py +0 -0
  107. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/graph/workflow.py +0 -0
  108. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/memory/__init__.py +0 -0
  109. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/memory/checkpoints/__init__.py +0 -0
  110. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/memory/checkpoints/data/__init__.py +0 -0
  111. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/memory/checkpoints/postgres_checkpoint.py +0 -0
  112. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/memory/checkpoints/sqlite_checkpoint.py +0 -0
  113. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/memory/chroma_db/__init__.py +0 -0
  114. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/memory/conversation_memory/__init__.py +0 -0
  115. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/memory/conversation_memory/long_term.py +0 -0
  116. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/memory/conversation_memory/short_term.py +0 -0
  117. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/memory/storage/__init__.py +0 -0
  118. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/memory/vector_store/__init__.py +0 -0
  119. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/memory/vector_store/chroma_store.py +0 -0
  120. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/memory/vector_store/embeddings.py +0 -0
  121. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/observability/__init__.py +0 -0
  122. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/observability/langsmith_tracing.py +0 -0
  123. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/observability/metrics.py +0 -0
  124. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/observability/monitoring.py +0 -0
  125. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/observability/token_tracking.py +0 -0
  126. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/prompts/__init__.py +0 -0
  127. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/schemas/__init__.py +0 -0
  128. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/schemas/__pycache__/__init__.cpython-312.pyc +0 -0
  129. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/schemas/__pycache__/coder_schema.cpython-312.pyc +0 -0
  130. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/schemas/__pycache__/critic_schema.cpython-312.pyc +0 -0
  131. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/schemas/__pycache__/execution_schema.cpython-312.pyc +0 -0
  132. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/schemas/__pycache__/planner_schema.cpython-312.pyc +0 -0
  133. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/schemas/__pycache__/researcher_schema.cpython-312.pyc +0 -0
  134. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/schemas/__pycache__/shared_schema.cpython-312.pyc +0 -0
  135. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/schemas/coder_schema.py +0 -0
  136. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/schemas/critic_schema.py +0 -0
  137. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/schemas/execution_schema.py +0 -0
  138. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/schemas/planner_schema.py +0 -0
  139. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/schemas/researcher_schema.py +0 -0
  140. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/schemas/shared_schema.py +0 -0
  141. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/__init__.py +0 -0
  142. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/code_tools/__init__.py +0 -0
  143. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/code_tools/file_reader.py +0 -0
  144. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/code_tools/file_writer.py +0 -0
  145. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/code_tools/python_repl.py +0 -0
  146. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/code_tools/terminal_runner.py +0 -0
  147. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/github_tools/__init__.py +0 -0
  148. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/github_tools/commit_generator.py +0 -0
  149. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/github_tools/github_search.py +0 -0
  150. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/github_tools/repo_analyzer.py +0 -0
  151. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/integration_test_helper.py +0 -0
  152. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/validation_tools/__init__.py +0 -0
  153. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/validation_tools/dependency_checker.py +0 -0
  154. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/validation_tools/environment_config_validator.py +0 -0
  155. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/validation_tools/http_validator.py +0 -0
  156. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/validation_tools/response_validator.py +0 -0
  157. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/validation_tools/security_checker.py +0 -0
  158. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/validation_tools/syntax_checker.py +0 -0
  159. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/validation_tools/web_framework_validator.py +0 -0
  160. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/web_tools/__init__.py +0 -0
  161. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/web_tools/arxiv_search.py +0 -0
  162. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/web_tools/serpapi_search.py +0 -0
  163. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/tools/web_tools/tavily_search.py +0 -0
  164. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/ui/__init__.py +0 -0
  165. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/ui/__pycache__/__init__.cpython-312.pyc +0 -0
  166. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/ui/__pycache__/components.cpython-312.pyc +0 -0
  167. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/ui/__pycache__/shell.cpython-312.pyc +0 -0
  168. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/ui/__pycache__/theme.cpython-312.pyc +0 -0
  169. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/ui/components.py +0 -0
  170. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/ui/shell.py +0 -0
  171. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/ui/theme.py +0 -0
  172. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/utils/__init__.py +0 -0
  173. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/utils/context_manager.py +0 -0
  174. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/utils/keyring_manager.py +0 -0
  175. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/utils/output_formatter.py +0 -0
  176. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra/utils/session_manager.py +0 -0
  177. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra_cli.egg-info/dependency_links.txt +0 -0
  178. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra_cli.egg-info/requires.txt +0 -0
  179. {acra_cli-0.1.1 → acra_cli-0.1.3}/acra_cli.egg-info/top_level.txt +0 -0
  180. {acra_cli-0.1.1 → acra_cli-0.1.3}/requirements.txt +0 -0
  181. {acra_cli-0.1.1 → acra_cli-0.1.3}/setup.cfg +0 -0
  182. {acra_cli-0.1.1 → acra_cli-0.1.3}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: acra-cli
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: Agentic CLI for LLM task execution, research, and workflow automation.
5
5
  Author: Raj Tembe
6
6
  License: GNU Affero General Public License v3
@@ -54,17 +54,21 @@ Requires-Dist: pytest>=8.0.0; extra == "test"
54
54
  Dynamic: license-file
55
55
  Dynamic: requires-python
56
56
 
57
- # acra
57
+ # acra-cli
58
58
 
59
59
  Agentic CLI for LLM-powered research, task execution, code generation, workflow automation, memory, and sandboxed validation.
60
60
 
61
- `acra` is an installable Python package that provides the `acra` command-line tool and a reusable LangGraph-based agent workflow. It is built for developers who want a local CLI for asking an LLM-powered agent to research, plan, generate code, validate generated projects, and keep workflow context across runs.
61
+ `acra-cli` is an installable Python package that provides the `acra` command-line tool and a reusable LangGraph-based agent workflow. Install the package as `acra-cli`, run it from the terminal as `acra`, and import the Python package as `acra`.
62
+
63
+ It is built for developers who want a local CLI for asking an LLM-powered agent to research, plan, generate code, validate generated projects, and keep workflow context across runs.
62
64
 
63
65
  > Status: beta. The package is usable, but some CLI command groups are still scaffolds. The most complete surfaces today are installation, provider configuration, profile setup, key management, the interactive shell, research workflows, and Python-level workflow APIs.
64
66
 
65
67
  ## Highlights
66
68
 
67
- - Installable Python package with a console script: `acra`
69
+ - Installable PyPI package: `acra-cli`
70
+ - Console command: `acra`
71
+ - Python import package: `acra`
68
72
  - Interactive CLI shell powered by Typer, Rich, and prompt-toolkit
69
73
  - LangGraph workflow with planner, researcher, coder, executor, critic, memory, and human nodes
70
74
  - Provider support for Gemini, OpenAI, Groq, Ollama, and HuggingFace
@@ -86,29 +90,29 @@ Agentic CLI for LLM-powered research, task execution, code generation, workflow
86
90
  Install the base package:
87
91
 
88
92
  ```bash
89
- pip install acra
93
+ pip install acra-cli
90
94
  ```
91
95
 
92
96
  Install provider-specific extras as needed:
93
97
 
94
98
  ```bash
95
- pip install "acra[openai]"
96
- pip install "acra[groq]"
97
- pip install "acra[ollama]"
98
- pip install "acra[huggingface]"
99
+ pip install "acra-cli[openai]"
100
+ pip install "acra-cli[groq]"
101
+ pip install "acra-cli[ollama]"
102
+ pip install "acra-cli[huggingface]"
99
103
  ```
100
104
 
101
105
  Install checkpointing extras:
102
106
 
103
107
  ```bash
104
- pip install "acra[sqlite]"
105
- pip install "acra[postgres]"
108
+ pip install "acra-cli[sqlite]"
109
+ pip install "acra-cli[postgres]"
106
110
  ```
107
111
 
108
112
  Install multiple extras together:
109
113
 
110
114
  ```bash
111
- pip install "acra[openai,groq,sqlite]"
115
+ pip install "acra-cli[openai,groq,sqlite]"
112
116
  ```
113
117
 
114
118
  After installation, run:
@@ -202,7 +206,7 @@ export GOOGLE_GEMINI_API_KEY="your-key"
202
206
  ### OpenAI
203
207
 
204
208
  ```bash
205
- pip install "acra[openai]"
209
+ pip install "acra-cli[openai]"
206
210
 
207
211
  export LLM_PROVIDER=openai
208
212
  export OPENAI_MODEL=gpt-4o-mini
@@ -212,7 +216,7 @@ export OPENAI_API_KEY="your-key"
212
216
  ### Groq
213
217
 
214
218
  ```bash
215
- pip install "acra[groq]"
219
+ pip install "acra-cli[groq]"
216
220
 
217
221
  export LLM_PROVIDER=groq
218
222
  export GROQ_MODEL=llama-3.3-70b-versatile
@@ -222,7 +226,7 @@ export GROQ_API_KEY="your-key"
222
226
  ### Ollama
223
227
 
224
228
  ```bash
225
- pip install "acra[ollama]"
229
+ pip install "acra-cli[ollama]"
226
230
 
227
231
  export LLM_PROVIDER=ollama
228
232
  export OLLAMA_MODEL=mistral
@@ -238,7 +242,7 @@ ollama serve
238
242
  ### HuggingFace Cloud
239
243
 
240
244
  ```bash
241
- pip install "acra[huggingface]"
245
+ pip install "acra-cli[huggingface]"
242
246
 
243
247
  export LLM_PROVIDER=huggingface_cloud
244
248
  export HF_MODEL=mistralai/Mistral-7B-Instruct-v0.1
@@ -248,7 +252,7 @@ export HF_API_KEY="your-token"
248
252
  ### HuggingFace Local
249
253
 
250
254
  ```bash
251
- pip install "acra[huggingface]"
255
+ pip install "acra-cli[huggingface]"
252
256
 
253
257
  export LLM_PROVIDER=huggingface_local
254
258
  export HF_MODEL=mistralai/Mistral-7B-Instruct-v0.1
@@ -551,7 +555,7 @@ Important subdirectories:
551
555
 
552
556
  ## Current Beta Notes
553
557
 
554
- - The package version is `0.1.0`.
558
+ - The package version is `0.1.2`.
555
559
  - The top-level CLI currently attaches `serve`, `config`, `keys`, `research`, `memory`, `session`, `graph`, and `workspace`.
556
560
  - The codebase contains additional command modules such as `brain`, `context`, `logs`, and `plugin`, but they are not currently attached to the top-level CLI.
557
561
  - Some CLI command groups return placeholder output while the Python modules behind them continue to evolve.
@@ -563,10 +567,10 @@ Important subdirectories:
563
567
  Install the matching extra:
564
568
 
565
569
  ```bash
566
- pip install "acra[openai]"
567
- pip install "acra[groq]"
568
- pip install "acra[ollama]"
569
- pip install "acra[huggingface]"
570
+ pip install "acra-cli[openai]"
571
+ pip install "acra-cli[groq]"
572
+ pip install "acra-cli[ollama]"
573
+ pip install "acra-cli[huggingface]"
570
574
  ```
571
575
 
572
576
  ### Missing API key
@@ -605,12 +609,14 @@ export OLLAMA_BASE_URL=http://localhost:11434
605
609
 
606
610
  ## License
607
611
 
608
- `acra` is licensed under the GNU Affero General Public License v3.
612
+ `acra-cli` is licensed under the GNU Affero General Public License v3.
609
613
 
610
614
  ## Package Metadata
611
615
 
612
- - Package name: `acra`
613
- - Version: `0.1.0`
616
+ - PyPI package name: `acra-cli`
617
+ - Console command: `acra`
618
+ - Python import package: `acra`
619
+ - Version: `0.1.2`
614
620
  - Python: `>=3.11`
615
621
  - Console script: `acra=acra.cli:app_main`
616
622
  - Author: Raj Tembe
@@ -1,14 +1,18 @@
1
- # acra
1
+ # acra-cli
2
2
 
3
3
  Agentic CLI for LLM-powered research, task execution, code generation, workflow automation, memory, and sandboxed validation.
4
4
 
5
- `acra` is an installable Python package that provides the `acra` command-line tool and a reusable LangGraph-based agent workflow. It is built for developers who want a local CLI for asking an LLM-powered agent to research, plan, generate code, validate generated projects, and keep workflow context across runs.
5
+ `acra-cli` is an installable Python package that provides the `acra` command-line tool and a reusable LangGraph-based agent workflow. Install the package as `acra-cli`, run it from the terminal as `acra`, and import the Python package as `acra`.
6
+
7
+ It is built for developers who want a local CLI for asking an LLM-powered agent to research, plan, generate code, validate generated projects, and keep workflow context across runs.
6
8
 
7
9
  > Status: beta. The package is usable, but some CLI command groups are still scaffolds. The most complete surfaces today are installation, provider configuration, profile setup, key management, the interactive shell, research workflows, and Python-level workflow APIs.
8
10
 
9
11
  ## Highlights
10
12
 
11
- - Installable Python package with a console script: `acra`
13
+ - Installable PyPI package: `acra-cli`
14
+ - Console command: `acra`
15
+ - Python import package: `acra`
12
16
  - Interactive CLI shell powered by Typer, Rich, and prompt-toolkit
13
17
  - LangGraph workflow with planner, researcher, coder, executor, critic, memory, and human nodes
14
18
  - Provider support for Gemini, OpenAI, Groq, Ollama, and HuggingFace
@@ -30,29 +34,29 @@ Agentic CLI for LLM-powered research, task execution, code generation, workflow
30
34
  Install the base package:
31
35
 
32
36
  ```bash
33
- pip install acra
37
+ pip install acra-cli
34
38
  ```
35
39
 
36
40
  Install provider-specific extras as needed:
37
41
 
38
42
  ```bash
39
- pip install "acra[openai]"
40
- pip install "acra[groq]"
41
- pip install "acra[ollama]"
42
- pip install "acra[huggingface]"
43
+ pip install "acra-cli[openai]"
44
+ pip install "acra-cli[groq]"
45
+ pip install "acra-cli[ollama]"
46
+ pip install "acra-cli[huggingface]"
43
47
  ```
44
48
 
45
49
  Install checkpointing extras:
46
50
 
47
51
  ```bash
48
- pip install "acra[sqlite]"
49
- pip install "acra[postgres]"
52
+ pip install "acra-cli[sqlite]"
53
+ pip install "acra-cli[postgres]"
50
54
  ```
51
55
 
52
56
  Install multiple extras together:
53
57
 
54
58
  ```bash
55
- pip install "acra[openai,groq,sqlite]"
59
+ pip install "acra-cli[openai,groq,sqlite]"
56
60
  ```
57
61
 
58
62
  After installation, run:
@@ -146,7 +150,7 @@ export GOOGLE_GEMINI_API_KEY="your-key"
146
150
  ### OpenAI
147
151
 
148
152
  ```bash
149
- pip install "acra[openai]"
153
+ pip install "acra-cli[openai]"
150
154
 
151
155
  export LLM_PROVIDER=openai
152
156
  export OPENAI_MODEL=gpt-4o-mini
@@ -156,7 +160,7 @@ export OPENAI_API_KEY="your-key"
156
160
  ### Groq
157
161
 
158
162
  ```bash
159
- pip install "acra[groq]"
163
+ pip install "acra-cli[groq]"
160
164
 
161
165
  export LLM_PROVIDER=groq
162
166
  export GROQ_MODEL=llama-3.3-70b-versatile
@@ -166,7 +170,7 @@ export GROQ_API_KEY="your-key"
166
170
  ### Ollama
167
171
 
168
172
  ```bash
169
- pip install "acra[ollama]"
173
+ pip install "acra-cli[ollama]"
170
174
 
171
175
  export LLM_PROVIDER=ollama
172
176
  export OLLAMA_MODEL=mistral
@@ -182,7 +186,7 @@ ollama serve
182
186
  ### HuggingFace Cloud
183
187
 
184
188
  ```bash
185
- pip install "acra[huggingface]"
189
+ pip install "acra-cli[huggingface]"
186
190
 
187
191
  export LLM_PROVIDER=huggingface_cloud
188
192
  export HF_MODEL=mistralai/Mistral-7B-Instruct-v0.1
@@ -192,7 +196,7 @@ export HF_API_KEY="your-token"
192
196
  ### HuggingFace Local
193
197
 
194
198
  ```bash
195
- pip install "acra[huggingface]"
199
+ pip install "acra-cli[huggingface]"
196
200
 
197
201
  export LLM_PROVIDER=huggingface_local
198
202
  export HF_MODEL=mistralai/Mistral-7B-Instruct-v0.1
@@ -495,7 +499,7 @@ Important subdirectories:
495
499
 
496
500
  ## Current Beta Notes
497
501
 
498
- - The package version is `0.1.0`.
502
+ - The package version is `0.1.2`.
499
503
  - The top-level CLI currently attaches `serve`, `config`, `keys`, `research`, `memory`, `session`, `graph`, and `workspace`.
500
504
  - The codebase contains additional command modules such as `brain`, `context`, `logs`, and `plugin`, but they are not currently attached to the top-level CLI.
501
505
  - Some CLI command groups return placeholder output while the Python modules behind them continue to evolve.
@@ -507,10 +511,10 @@ Important subdirectories:
507
511
  Install the matching extra:
508
512
 
509
513
  ```bash
510
- pip install "acra[openai]"
511
- pip install "acra[groq]"
512
- pip install "acra[ollama]"
513
- pip install "acra[huggingface]"
514
+ pip install "acra-cli[openai]"
515
+ pip install "acra-cli[groq]"
516
+ pip install "acra-cli[ollama]"
517
+ pip install "acra-cli[huggingface]"
514
518
  ```
515
519
 
516
520
  ### Missing API key
@@ -549,12 +553,14 @@ export OLLAMA_BASE_URL=http://localhost:11434
549
553
 
550
554
  ## License
551
555
 
552
- `acra` is licensed under the GNU Affero General Public License v3.
556
+ `acra-cli` is licensed under the GNU Affero General Public License v3.
553
557
 
554
558
  ## Package Metadata
555
559
 
556
- - Package name: `acra`
557
- - Version: `0.1.0`
560
+ - PyPI package name: `acra-cli`
561
+ - Console command: `acra`
562
+ - Python import package: `acra`
563
+ - Version: `0.1.2`
558
564
  - Python: `>=3.11`
559
565
  - Console script: `acra=acra.cli:app_main`
560
566
  - Author: Raj Tembe
@@ -1,6 +1,6 @@
1
1
  """acra package root."""
2
2
 
3
- __version__ = "0.1.0"
3
+ __version__ = "0.1.2"
4
4
 
5
5
  from .cli import main
6
6
 
@@ -2,11 +2,17 @@
2
2
 
3
3
  import typer
4
4
 
5
+ import acra
6
+ from acra.commands.ask import ask, build, explain, fix, review, run
7
+ from acra.commands.research import research
5
8
  from acra.commands import (
6
9
  serve_app,
7
10
  config_app,
8
11
  keys_app,
9
- research_app,
12
+ brain_app,
13
+ context_app,
14
+ logs_app,
15
+ plugin_app,
10
16
  memory_app,
11
17
  session_app,
12
18
  graph_app,
@@ -19,11 +25,28 @@ app = typer.Typer(add_completion=True)
19
25
  app.add_typer(serve_app, name="serve")
20
26
  app.add_typer(config_app, name="config")
21
27
  app.add_typer(keys_app, name="keys")
22
- app.add_typer(research_app, name="research")
23
28
  app.add_typer(memory_app, name="memory")
24
29
  app.add_typer(session_app, name="session")
25
30
  app.add_typer(graph_app, name="graph")
26
31
  app.add_typer(utils_app, name="workspace")
32
+ app.add_typer(brain_app, name="brain", help="Brain management commands for acra.")
33
+ app.add_typer(context_app, name="context", help="Context management commands for acra.")
34
+ app.add_typer(logs_app, name="logs", help="Logging commands for acra.")
35
+ app.add_typer(plugin_app, name="plugin", help="Plugin commands for acra.")
36
+
37
+ app.command("ask")(ask)
38
+ app.command("build")(build)
39
+ app.command("fix")(fix)
40
+ app.command("review")(review)
41
+ app.command("explain")(explain)
42
+ app.command("run")(run)
43
+ app.command("research")(research)
44
+
45
+
46
+ def _version_callback(value: bool):
47
+ if value:
48
+ typer.echo(acra.__version__)
49
+ raise typer.Exit()
27
50
 
28
51
 
29
52
  def app_main() -> None:
@@ -34,9 +57,16 @@ def app_main() -> None:
34
57
  @app.callback(invoke_without_command=True)
35
58
  def main(
36
59
  ctx: typer.Context,
60
+ version: bool = typer.Option(
61
+ False,
62
+ "--version",
63
+ callback=_version_callback,
64
+ is_eager=True,
65
+ help="Show the installed acra version and exit.",
66
+ ),
37
67
  profile: str = typer.Option(None, "--profile", help="Profile to use."),
38
68
  workspace: str = typer.Option(None, "--workspace", help="Override workspace path."),
39
- no_memory: bool = typer.Option(False, "--no-memory", help="Run without memory."),
69
+ use_memory: bool = typer.Option(True, "--memory/--no-memory", help="Use memory."),
40
70
  dry_run: bool = typer.Option(False, "--dry-run", help="Display planned actions without executing."),
41
71
  json_output: bool = typer.Option(False, "--json", help="Output JSON-formatted results."),
42
72
  verbose: bool = typer.Option(False, "--verbose", "-v", help="Enable verbose logging."),
@@ -1,6 +1,7 @@
1
1
  """acra command modules."""
2
2
 
3
3
  from .serve import app as serve_app
4
+ from .ask import app as ask_app
4
5
  from .config import app as config_app
5
6
  from .brain import app as brain_app
6
7
  from .research import app as research_app
@@ -15,6 +16,7 @@ from .utils import app as utils_app
15
16
 
16
17
  __all__ = [
17
18
  "serve_app",
19
+ "ask_app",
18
20
  "config_app",
19
21
  "brain_app",
20
22
  "research_app",
@@ -0,0 +1,95 @@
1
+ """Agent task commands for acra."""
2
+
3
+ from typing import Optional
4
+
5
+ import typer
6
+
7
+ from acra.graph.workflow import OmniAgentCallbacks, omniagent_graph
8
+ from acra.ui.components import render_panel
9
+
10
+ app = typer.Typer(help="Agent task commands for acra.")
11
+
12
+
13
+ def _run_task(
14
+ task: str,
15
+ task_label: str,
16
+ profile: Optional[str] = None,
17
+ use_memory: bool = True,
18
+ interactive: bool = False,
19
+ ):
20
+ state = {
21
+ "user_request": task,
22
+ "task_label": task_label,
23
+ "no_memory": not use_memory,
24
+ "profile": profile,
25
+ "interactive": interactive,
26
+ }
27
+ result = omniagent_graph.invoke(state, config={"callbacks": [OmniAgentCallbacks()]})
28
+ render_panel(result, title=task_label)
29
+ return result
30
+
31
+
32
+ @app.command()
33
+ def ask(
34
+ task: str = typer.Argument(..., help="Task or question for the agent."),
35
+ profile: Optional[str] = typer.Option(None, help="Profile to use."),
36
+ use_memory: bool = typer.Option(True, "--memory/--no-memory", help="Use memory for this task."),
37
+ interactive: bool = typer.Option(False, "--interactive", help="Route agent approval requests to the human node."),
38
+ ):
39
+ """Ask the assistant a question."""
40
+ return _run_task(task, "ask", profile, use_memory, interactive)
41
+
42
+
43
+ @app.command()
44
+ def build(
45
+ task: str = typer.Argument(..., help="Build task for the agent."),
46
+ profile: Optional[str] = typer.Option(None, help="Profile to use."),
47
+ use_memory: bool = typer.Option(True, "--memory/--no-memory", help="Use memory for this task."),
48
+ interactive: bool = typer.Option(False, "--interactive", help="Route agent approval requests to the human node."),
49
+ ):
50
+ """Run a build workflow for a project task."""
51
+ return _run_task(task, "build", profile, use_memory, interactive)
52
+
53
+
54
+ @app.command()
55
+ def fix(
56
+ task: str = typer.Argument(..., help="Code issue or bug for the agent to fix."),
57
+ profile: Optional[str] = typer.Option(None, help="Profile to use."),
58
+ use_memory: bool = typer.Option(True, "--memory/--no-memory", help="Use memory for this task."),
59
+ interactive: bool = typer.Option(False, "--interactive", help="Route agent approval requests to the human node."),
60
+ ):
61
+ """Run a fix workflow for a code issue."""
62
+ return _run_task(task, "fix", profile, use_memory, interactive)
63
+
64
+
65
+ @app.command()
66
+ def review(
67
+ task: str = typer.Argument(..., help="Code, design, or task to review."),
68
+ profile: Optional[str] = typer.Option(None, help="Profile to use."),
69
+ use_memory: bool = typer.Option(True, "--memory/--no-memory", help="Use memory for this task."),
70
+ interactive: bool = typer.Option(False, "--interactive", help="Route agent approval requests to the human node."),
71
+ ):
72
+ """Review code or design with the critic pipeline."""
73
+ return _run_task(task, "review", profile, use_memory, interactive)
74
+
75
+
76
+ @app.command()
77
+ def explain(
78
+ task: str = typer.Argument(..., help="Concept or code path to explain."),
79
+ profile: Optional[str] = typer.Option(None, help="Profile to use."),
80
+ use_memory: bool = typer.Option(True, "--memory/--no-memory", help="Use memory for this task."),
81
+ interactive: bool = typer.Option(False, "--interactive", help="Route agent approval requests to the human node."),
82
+ ):
83
+ """Explain a technical concept or code path."""
84
+ return _run_task(task, "explain", profile, use_memory, interactive)
85
+
86
+
87
+ @app.command()
88
+ def run(
89
+ task: str = typer.Argument(..., help="Task for the agent to execute."),
90
+ profile: Optional[str] = typer.Option(None, help="Profile to use."),
91
+ use_memory: bool = typer.Option(True, "--memory/--no-memory", help="Use memory for this task."),
92
+ interactive: bool = typer.Option(False, "--interactive", help="Route agent approval requests to the human node."),
93
+ ):
94
+ """Execute a task using the executor agent."""
95
+ return _run_task(task, "run", profile, use_memory, interactive)
@@ -27,7 +27,11 @@ def research(
27
27
  output: Optional[str] = typer.Option(None, help="Write research output to a file."),
28
28
  save: bool = typer.Option(False, help="Persist research output into memory."),
29
29
  follow_up: bool = typer.Option(False, help="Keep the session open for follow-up questions."),
30
- no_memory: bool = typer.Option(False, help="Skip memory persistence for this research."),
30
+ use_memory: bool = typer.Option(
31
+ True,
32
+ "--memory/--no-memory",
33
+ help="Use memory persistence for this research.",
34
+ ),
31
35
  profile: Optional[str] = typer.Option(None, help="Profile to use."),
32
36
  json_output: bool = typer.Option(False, "--json", help="Output JSON instead of rich text."),
33
37
  verbose: bool = typer.Option(False, "--verbose", "-v", help="Show detailed debug output."),
@@ -45,7 +49,7 @@ def research(
45
49
  "research_depth": depth,
46
50
  "research_sources": source_list,
47
51
  "follow_up": follow_up,
48
- "save_to_memory": save and not no_memory,
52
+ "save_to_memory": save and use_memory,
49
53
  "profile": profile,
50
54
  }
51
55
 
@@ -18,7 +18,7 @@ WELCOME_TEXT = "acra: agentic CLI for LLM task workflows"
18
18
  def render_banner(provider: str, model: str, profile: str, workspace: str, theme: dict) -> Panel:
19
19
  console = Console()
20
20
  lines = [
21
- f"[bold {theme['accent']}]acra v0.1.0[/bold {theme['accent']}]",
21
+ f"[bold {theme['accent']}]acra v0.1.2[/bold {theme['accent']}]",
22
22
  f"Provider: {provider} · Model: {model}",
23
23
  f"Profile: {profile} · Workspace: {workspace}",
24
24
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: acra-cli
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: Agentic CLI for LLM task execution, research, and workflow automation.
5
5
  Author: Raj Tembe
6
6
  License: GNU Affero General Public License v3
@@ -54,17 +54,21 @@ Requires-Dist: pytest>=8.0.0; extra == "test"
54
54
  Dynamic: license-file
55
55
  Dynamic: requires-python
56
56
 
57
- # acra
57
+ # acra-cli
58
58
 
59
59
  Agentic CLI for LLM-powered research, task execution, code generation, workflow automation, memory, and sandboxed validation.
60
60
 
61
- `acra` is an installable Python package that provides the `acra` command-line tool and a reusable LangGraph-based agent workflow. It is built for developers who want a local CLI for asking an LLM-powered agent to research, plan, generate code, validate generated projects, and keep workflow context across runs.
61
+ `acra-cli` is an installable Python package that provides the `acra` command-line tool and a reusable LangGraph-based agent workflow. Install the package as `acra-cli`, run it from the terminal as `acra`, and import the Python package as `acra`.
62
+
63
+ It is built for developers who want a local CLI for asking an LLM-powered agent to research, plan, generate code, validate generated projects, and keep workflow context across runs.
62
64
 
63
65
  > Status: beta. The package is usable, but some CLI command groups are still scaffolds. The most complete surfaces today are installation, provider configuration, profile setup, key management, the interactive shell, research workflows, and Python-level workflow APIs.
64
66
 
65
67
  ## Highlights
66
68
 
67
- - Installable Python package with a console script: `acra`
69
+ - Installable PyPI package: `acra-cli`
70
+ - Console command: `acra`
71
+ - Python import package: `acra`
68
72
  - Interactive CLI shell powered by Typer, Rich, and prompt-toolkit
69
73
  - LangGraph workflow with planner, researcher, coder, executor, critic, memory, and human nodes
70
74
  - Provider support for Gemini, OpenAI, Groq, Ollama, and HuggingFace
@@ -86,29 +90,29 @@ Agentic CLI for LLM-powered research, task execution, code generation, workflow
86
90
  Install the base package:
87
91
 
88
92
  ```bash
89
- pip install acra
93
+ pip install acra-cli
90
94
  ```
91
95
 
92
96
  Install provider-specific extras as needed:
93
97
 
94
98
  ```bash
95
- pip install "acra[openai]"
96
- pip install "acra[groq]"
97
- pip install "acra[ollama]"
98
- pip install "acra[huggingface]"
99
+ pip install "acra-cli[openai]"
100
+ pip install "acra-cli[groq]"
101
+ pip install "acra-cli[ollama]"
102
+ pip install "acra-cli[huggingface]"
99
103
  ```
100
104
 
101
105
  Install checkpointing extras:
102
106
 
103
107
  ```bash
104
- pip install "acra[sqlite]"
105
- pip install "acra[postgres]"
108
+ pip install "acra-cli[sqlite]"
109
+ pip install "acra-cli[postgres]"
106
110
  ```
107
111
 
108
112
  Install multiple extras together:
109
113
 
110
114
  ```bash
111
- pip install "acra[openai,groq,sqlite]"
115
+ pip install "acra-cli[openai,groq,sqlite]"
112
116
  ```
113
117
 
114
118
  After installation, run:
@@ -202,7 +206,7 @@ export GOOGLE_GEMINI_API_KEY="your-key"
202
206
  ### OpenAI
203
207
 
204
208
  ```bash
205
- pip install "acra[openai]"
209
+ pip install "acra-cli[openai]"
206
210
 
207
211
  export LLM_PROVIDER=openai
208
212
  export OPENAI_MODEL=gpt-4o-mini
@@ -212,7 +216,7 @@ export OPENAI_API_KEY="your-key"
212
216
  ### Groq
213
217
 
214
218
  ```bash
215
- pip install "acra[groq]"
219
+ pip install "acra-cli[groq]"
216
220
 
217
221
  export LLM_PROVIDER=groq
218
222
  export GROQ_MODEL=llama-3.3-70b-versatile
@@ -222,7 +226,7 @@ export GROQ_API_KEY="your-key"
222
226
  ### Ollama
223
227
 
224
228
  ```bash
225
- pip install "acra[ollama]"
229
+ pip install "acra-cli[ollama]"
226
230
 
227
231
  export LLM_PROVIDER=ollama
228
232
  export OLLAMA_MODEL=mistral
@@ -238,7 +242,7 @@ ollama serve
238
242
  ### HuggingFace Cloud
239
243
 
240
244
  ```bash
241
- pip install "acra[huggingface]"
245
+ pip install "acra-cli[huggingface]"
242
246
 
243
247
  export LLM_PROVIDER=huggingface_cloud
244
248
  export HF_MODEL=mistralai/Mistral-7B-Instruct-v0.1
@@ -248,7 +252,7 @@ export HF_API_KEY="your-token"
248
252
  ### HuggingFace Local
249
253
 
250
254
  ```bash
251
- pip install "acra[huggingface]"
255
+ pip install "acra-cli[huggingface]"
252
256
 
253
257
  export LLM_PROVIDER=huggingface_local
254
258
  export HF_MODEL=mistralai/Mistral-7B-Instruct-v0.1
@@ -551,7 +555,7 @@ Important subdirectories:
551
555
 
552
556
  ## Current Beta Notes
553
557
 
554
- - The package version is `0.1.0`.
558
+ - The package version is `0.1.2`.
555
559
  - The top-level CLI currently attaches `serve`, `config`, `keys`, `research`, `memory`, `session`, `graph`, and `workspace`.
556
560
  - The codebase contains additional command modules such as `brain`, `context`, `logs`, and `plugin`, but they are not currently attached to the top-level CLI.
557
561
  - Some CLI command groups return placeholder output while the Python modules behind them continue to evolve.
@@ -563,10 +567,10 @@ Important subdirectories:
563
567
  Install the matching extra:
564
568
 
565
569
  ```bash
566
- pip install "acra[openai]"
567
- pip install "acra[groq]"
568
- pip install "acra[ollama]"
569
- pip install "acra[huggingface]"
570
+ pip install "acra-cli[openai]"
571
+ pip install "acra-cli[groq]"
572
+ pip install "acra-cli[ollama]"
573
+ pip install "acra-cli[huggingface]"
570
574
  ```
571
575
 
572
576
  ### Missing API key
@@ -605,12 +609,14 @@ export OLLAMA_BASE_URL=http://localhost:11434
605
609
 
606
610
  ## License
607
611
 
608
- `acra` is licensed under the GNU Affero General Public License v3.
612
+ `acra-cli` is licensed under the GNU Affero General Public License v3.
609
613
 
610
614
  ## Package Metadata
611
615
 
612
- - Package name: `acra`
613
- - Version: `0.1.0`
616
+ - PyPI package name: `acra-cli`
617
+ - Console command: `acra`
618
+ - Python import package: `acra`
619
+ - Version: `0.1.2`
614
620
  - Python: `>=3.11`
615
621
  - Console script: `acra=acra.cli:app_main`
616
622
  - Author: Raj Tembe