corvus-ai 0.3.78__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.
- corvus_ai-0.3.78/PKG-INFO +363 -0
- corvus_ai-0.3.78/README.md +235 -0
- corvus_ai-0.3.78/pyproject.toml +313 -0
- corvus_ai-0.3.78/setup.cfg +4 -0
- corvus_ai-0.3.78/src/corvus/__init__.py +12 -0
- corvus_ai-0.3.78/src/corvus/agents/__init__.py +45 -0
- corvus_ai-0.3.78/src/corvus/agents/executor.py +879 -0
- corvus_ai-0.3.78/src/corvus/agents/renderers.py +1126 -0
- corvus_ai-0.3.78/src/corvus/agents/router_agent.py +1765 -0
- corvus_ai-0.3.78/src/corvus/agents/state.py +384 -0
- corvus_ai-0.3.78/src/corvus/agents/types.py +195 -0
- corvus_ai-0.3.78/src/corvus/api/__init__.py +7 -0
- corvus_ai-0.3.78/src/corvus/api/admin_router.py +678 -0
- corvus_ai-0.3.78/src/corvus/api/app.py +122 -0
- corvus_ai-0.3.78/src/corvus/api/audit_writer.py +66 -0
- corvus_ai-0.3.78/src/corvus/api/auth.py +101 -0
- corvus_ai-0.3.78/src/corvus/api/auth_router.py +153 -0
- corvus_ai-0.3.78/src/corvus/api/config_router.py +321 -0
- corvus_ai-0.3.78/src/corvus/api/feedback_router.py +168 -0
- corvus_ai-0.3.78/src/corvus/api/health.py +25 -0
- corvus_ai-0.3.78/src/corvus/api/keys.py +59 -0
- corvus_ai-0.3.78/src/corvus/api/logging.py +46 -0
- corvus_ai-0.3.78/src/corvus/api/org_policy.py +120 -0
- corvus_ai-0.3.78/src/corvus/api/org_router.py +883 -0
- corvus_ai-0.3.78/src/corvus/api/privacy_router.py +112 -0
- corvus_ai-0.3.78/src/corvus/api/rbac.py +60 -0
- corvus_ai-0.3.78/src/corvus/api/router.py +192 -0
- corvus_ai-0.3.78/src/corvus/api/scim_router.py +466 -0
- corvus_ai-0.3.78/src/corvus/api/webhook.py +78 -0
- corvus_ai-0.3.78/src/corvus/api/workspace_router.py +118 -0
- corvus_ai-0.3.78/src/corvus/auth/__init__.py +22 -0
- corvus_ai-0.3.78/src/corvus/auth/db.py +55 -0
- corvus_ai-0.3.78/src/corvus/auth/device_flow.py +113 -0
- corvus_ai-0.3.78/src/corvus/auth/jwt_utils.py +66 -0
- corvus_ai-0.3.78/src/corvus/auth/models.py +292 -0
- corvus_ai-0.3.78/src/corvus/auth/sso.py +94 -0
- corvus_ai-0.3.78/src/corvus/auth/token_store.py +94 -0
- corvus_ai-0.3.78/src/corvus/cli.py +3613 -0
- corvus_ai-0.3.78/src/corvus/core/__init__.py +100 -0
- corvus_ai-0.3.78/src/corvus/core/config.py +315 -0
- corvus_ai-0.3.78/src/corvus/core/debug.py +268 -0
- corvus_ai-0.3.78/src/corvus/core/exceptions.py +101 -0
- corvus_ai-0.3.78/src/corvus/core/health.py +131 -0
- corvus_ai-0.3.78/src/corvus/core/logging.py +325 -0
- corvus_ai-0.3.78/src/corvus/core/monitoring.py +275 -0
- corvus_ai-0.3.78/src/corvus/core/progress.py +478 -0
- corvus_ai-0.3.78/src/corvus/core/prometheus.py +414 -0
- corvus_ai-0.3.78/src/corvus/core/session.py +478 -0
- corvus_ai-0.3.78/src/corvus/core/usage_tracker.py +412 -0
- corvus_ai-0.3.78/src/corvus/execution/__init__.py +13 -0
- corvus_ai-0.3.78/src/corvus/execution/backends/__init__.py +37 -0
- corvus_ai-0.3.78/src/corvus/execution/backends/azure.py +83 -0
- corvus_ai-0.3.78/src/corvus/execution/backends/k8s.py +111 -0
- corvus_ai-0.3.78/src/corvus/execution/backends/local.py +67 -0
- corvus_ai-0.3.78/src/corvus/execution/backends/modal.py +98 -0
- corvus_ai-0.3.78/src/corvus/execution/backends/sagemaker.py +109 -0
- corvus_ai-0.3.78/src/corvus/execution/backends/skypilot.py +88 -0
- corvus_ai-0.3.78/src/corvus/execution/backends/vertex.py +87 -0
- corvus_ai-0.3.78/src/corvus/execution/exec_runner.py +60 -0
- corvus_ai-0.3.78/src/corvus/execution/runner.py +162 -0
- corvus_ai-0.3.78/src/corvus/execution/types.py +74 -0
- corvus_ai-0.3.78/src/corvus/jupyter/__init__.py +39 -0
- corvus_ai-0.3.78/src/corvus/jupyter/magic.py +495 -0
- corvus_ai-0.3.78/src/corvus/jupyter/output.py +262 -0
- corvus_ai-0.3.78/src/corvus/jupyter/server_extension.py +62 -0
- corvus_ai-0.3.78/src/corvus/knowledge/__init__.py +277 -0
- corvus_ai-0.3.78/src/corvus/knowledge/chunking.py +868 -0
- corvus_ai-0.3.78/src/corvus/knowledge/context.py +928 -0
- corvus_ai-0.3.78/src/corvus/knowledge/document_ingestion.py +849 -0
- corvus_ai-0.3.78/src/corvus/knowledge/domain_knowledge.py +747 -0
- corvus_ai-0.3.78/src/corvus/knowledge/embeddings.py +904 -0
- corvus_ai-0.3.78/src/corvus/knowledge/entity_extraction.py +910 -0
- corvus_ai-0.3.78/src/corvus/knowledge/graph_store.py +926 -0
- corvus_ai-0.3.78/src/corvus/knowledge/hybrid_retrieval.py +970 -0
- corvus_ai-0.3.78/src/corvus/knowledge/ingestion_orchestrator.py +532 -0
- corvus_ai-0.3.78/src/corvus/knowledge/memory.py +1507 -0
- corvus_ai-0.3.78/src/corvus/knowledge/qdrant_store.py +826 -0
- corvus_ai-0.3.78/src/corvus/knowledge/reranking.py +548 -0
- corvus_ai-0.3.78/src/corvus/llm/__init__.py +45 -0
- corvus_ai-0.3.78/src/corvus/llm/cache_backend.py +150 -0
- corvus_ai-0.3.78/src/corvus/llm/cost_tracker.py +323 -0
- corvus_ai-0.3.78/src/corvus/llm/fallback.py +390 -0
- corvus_ai-0.3.78/src/corvus/llm/router.py +839 -0
- corvus_ai-0.3.78/src/corvus/llm/types.py +520 -0
- corvus_ai-0.3.78/src/corvus/mcp/__init__.py +96 -0
- corvus_ai-0.3.78/src/corvus/mcp/client.py +401 -0
- corvus_ai-0.3.78/src/corvus/mcp/integrations/__init__.py +67 -0
- corvus_ai-0.3.78/src/corvus/mcp/integrations/base.py +152 -0
- corvus_ai-0.3.78/src/corvus/mcp/integrations/cloud_storage.py +1095 -0
- corvus_ai-0.3.78/src/corvus/mcp/integrations/docker.py +1090 -0
- corvus_ai-0.3.78/src/corvus/mcp/integrations/filesystem.py +637 -0
- corvus_ai-0.3.78/src/corvus/mcp/integrations/github.py +1395 -0
- corvus_ai-0.3.78/src/corvus/mcp/integrations/huggingface.py +575 -0
- corvus_ai-0.3.78/src/corvus/mcp/integrations/mlflow.py +923 -0
- corvus_ai-0.3.78/src/corvus/mcp/integrations/postgres.py +706 -0
- corvus_ai-0.3.78/src/corvus/mcp/server_manager.py +414 -0
- corvus_ai-0.3.78/src/corvus/mcp/tool_adapter.py +254 -0
- corvus_ai-0.3.78/src/corvus/mcp_server/__init__.py +16 -0
- corvus_ai-0.3.78/src/corvus/mcp_server/auth.py +71 -0
- corvus_ai-0.3.78/src/corvus/mcp_server/policy.py +70 -0
- corvus_ai-0.3.78/src/corvus/mcp_server/server.py +150 -0
- corvus_ai-0.3.78/src/corvus/mlflow/__init__.py +6 -0
- corvus_ai-0.3.78/src/corvus/mlflow/config.py +29 -0
- corvus_ai-0.3.78/src/corvus/mlflow/injector.py +59 -0
- corvus_ai-0.3.78/src/corvus/py.typed +2 -0
- corvus_ai-0.3.78/src/corvus/safety/__init__.py +293 -0
- corvus_ai-0.3.78/src/corvus/safety/approval_gates.py +729 -0
- corvus_ai-0.3.78/src/corvus/safety/context_sanitizer.py +559 -0
- corvus_ai-0.3.78/src/corvus/safety/dlp.py +1186 -0
- corvus_ai-0.3.78/src/corvus/safety/execution.py +685 -0
- corvus_ai-0.3.78/src/corvus/safety/grounding.py +846 -0
- corvus_ai-0.3.78/src/corvus/safety/memory_guard.py +665 -0
- corvus_ai-0.3.78/src/corvus/safety/prompt_guard.py +665 -0
- corvus_ai-0.3.78/src/corvus/safety/quality.py +1023 -0
- corvus_ai-0.3.78/src/corvus/safety/rate_limiter.py +712 -0
- corvus_ai-0.3.78/src/corvus/safety/retrieval_guard.py +661 -0
- corvus_ai-0.3.78/src/corvus/safety/tool_guard.py +928 -0
- corvus_ai-0.3.78/src/corvus/skills/__init__.py +53 -0
- corvus_ai-0.3.78/src/corvus/skills/adapters/__init__.py +16 -0
- corvus_ai-0.3.78/src/corvus/skills/adapters/base.py +72 -0
- corvus_ai-0.3.78/src/corvus/skills/adapters/claude_skill.py +419 -0
- corvus_ai-0.3.78/src/corvus/skills/adapters/langchain_tool.py +285 -0
- corvus_ai-0.3.78/src/corvus/skills/adapters/openapi.py +422 -0
- corvus_ai-0.3.78/src/corvus/skills/adapters/python_function.py +392 -0
- corvus_ai-0.3.78/src/corvus/skills/async_utils.py +61 -0
- corvus_ai-0.3.78/src/corvus/skills/contracts.py +288 -0
- corvus_ai-0.3.78/src/corvus/skills/embedding.py +383 -0
- corvus_ai-0.3.78/src/corvus/skills/extension_loader.py +77 -0
- corvus_ai-0.3.78/src/corvus/skills/library/__init__.py +507 -0
- corvus_ai-0.3.78/src/corvus/skills/library/_code_validator.py +71 -0
- corvus_ai-0.3.78/src/corvus/skills/library/_constraints.py +175 -0
- corvus_ai-0.3.78/src/corvus/skills/library/architecture_recommender.py +5089 -0
- corvus_ai-0.3.78/src/corvus/skills/library/cicd_generator.py +1911 -0
- corvus_ai-0.3.78/src/corvus/skills/library/dashboard_creator.py +1479 -0
- corvus_ai-0.3.78/src/corvus/skills/library/data_profiler.py +1563 -0
- corvus_ai-0.3.78/src/corvus/skills/library/distributed_config.py +1003 -0
- corvus_ai-0.3.78/src/corvus/skills/library/docker_generator.py +1459 -0
- corvus_ai-0.3.78/src/corvus/skills/library/drift_detector.py +5359 -0
- corvus_ai-0.3.78/src/corvus/skills/library/endpoint_generator.py +1760 -0
- corvus_ai-0.3.78/src/corvus/skills/library/experiment_advisor.py +416 -0
- corvus_ai-0.3.78/src/corvus/skills/library/experiment_tracker.py +4294 -0
- corvus_ai-0.3.78/src/corvus/skills/library/feature_recommender.py +1919 -0
- corvus_ai-0.3.78/src/corvus/skills/library/github_ml_skills.py +1531 -0
- corvus_ai-0.3.78/src/corvus/skills/library/huggingface_skills.py +1535 -0
- corvus_ai-0.3.78/src/corvus/skills/library/hyperparameter_optimizer.py +2715 -0
- corvus_ai-0.3.78/src/corvus/skills/library/k8s_manifest_generator.py +2265 -0
- corvus_ai-0.3.78/src/corvus/skills/library/ml_spec_generator.py +181 -0
- corvus_ai-0.3.78/src/corvus/skills/library/model_selector.py +2551 -0
- corvus_ai-0.3.78/src/corvus/skills/library/monitoring_setup.py +2502 -0
- corvus_ai-0.3.78/src/corvus/skills/library/pipeline_generator.py +1915 -0
- corvus_ai-0.3.78/src/corvus/skills/library/pytorch_codegen.py +3797 -0
- corvus_ai-0.3.78/src/corvus/skills/library/quantization_exporter.py +450 -0
- corvus_ai-0.3.78/src/corvus/skills/library/schema_designer.py +4166 -0
- corvus_ai-0.3.78/src/corvus/skills/library/terraform_generator.py +3083 -0
- corvus_ai-0.3.78/src/corvus/skills/library/validation_generator.py +3040 -0
- corvus_ai-0.3.78/src/corvus/skills/output_validator.py +276 -0
- corvus_ai-0.3.78/src/corvus/skills/postgres_backend.py +347 -0
- corvus_ai-0.3.78/src/corvus/skills/registry.py +539 -0
- corvus_ai-0.3.78/src/corvus/skills/sanitization.py +543 -0
- corvus_ai-0.3.78/src/corvus/skills/scaffolding.py +159 -0
- corvus_ai-0.3.78/src/corvus/skills/schema.py +145 -0
- corvus_ai-0.3.78/src/corvus/skills/sdk.py +112 -0
- corvus_ai-0.3.78/src/corvus/storage/__init__.py +9 -0
- corvus_ai-0.3.78/src/corvus/storage/databricks.py +60 -0
- corvus_ai-0.3.78/src/corvus/storage/resolver.py +310 -0
- corvus_ai-0.3.78/src/corvus/templates/__init__.py +22 -0
- corvus_ai-0.3.78/src/corvus/templates/generator.py +1250 -0
- corvus_ai-0.3.78/src/corvus/workspaces/__init__.py +1 -0
- corvus_ai-0.3.78/src/corvus/workspaces/context_injector.py +53 -0
- corvus_ai-0.3.78/src/corvus/workspaces/manager.py +212 -0
- corvus_ai-0.3.78/src/corvus_ai.egg-info/PKG-INFO +363 -0
- corvus_ai-0.3.78/src/corvus_ai.egg-info/SOURCES.txt +174 -0
- corvus_ai-0.3.78/src/corvus_ai.egg-info/dependency_links.txt +1 -0
- corvus_ai-0.3.78/src/corvus_ai.egg-info/entry_points.txt +2 -0
- corvus_ai-0.3.78/src/corvus_ai.egg-info/requires.txt +123 -0
- corvus_ai-0.3.78/src/corvus_ai.egg-info/top_level.txt +3 -0
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: corvus-ai
|
|
3
|
+
Version: 0.3.78
|
|
4
|
+
Summary: Platform-agnostic, extensible AI-powered ML Development Assistant
|
|
5
|
+
Author: Shah Rahman
|
|
6
|
+
Project-URL: Homepage, https://github.com/CloudlyIO/corvus
|
|
7
|
+
Project-URL: Documentation, https://github.com/CloudlyIO/corvus#readme
|
|
8
|
+
Project-URL: Repository, https://github.com/CloudlyIO/corvus
|
|
9
|
+
Project-URL: Issues, https://github.com/CloudlyIO/corvus/issues
|
|
10
|
+
Keywords: ml,ai,assistant,agents,langchain,claude,mcp
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
|
+
Requires-Python: >=3.10
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
Requires-Dist: pydantic>=2.0
|
|
21
|
+
Requires-Dist: pydantic-settings>=2.0
|
|
22
|
+
Requires-Dist: python-dotenv>=1.0
|
|
23
|
+
Requires-Dist: typer>=0.9
|
|
24
|
+
Requires-Dist: rich>=13.0
|
|
25
|
+
Requires-Dist: prompt-toolkit>=3.0
|
|
26
|
+
Requires-Dist: pyyaml>=6.0
|
|
27
|
+
Requires-Dist: litellm>=1.30
|
|
28
|
+
Requires-Dist: anthropic>=0.25
|
|
29
|
+
Requires-Dist: openai>=1.0
|
|
30
|
+
Requires-Dist: langgraph>=0.1
|
|
31
|
+
Requires-Dist: langchain>=0.2
|
|
32
|
+
Requires-Dist: langchain-core>=0.2
|
|
33
|
+
Requires-Dist: httpx>=0.25
|
|
34
|
+
Requires-Dist: aiofiles>=23.0
|
|
35
|
+
Requires-Dist: python-jose[cryptography]>=3.3
|
|
36
|
+
Requires-Dist: sqlalchemy>=2.0
|
|
37
|
+
Requires-Dist: alembic>=1.13
|
|
38
|
+
Requires-Dist: keyring>=24.0
|
|
39
|
+
Requires-Dist: aiohttp>=3.11.11
|
|
40
|
+
Requires-Dist: urllib3>=2.3.0
|
|
41
|
+
Requires-Dist: werkzeug>=3.1.3
|
|
42
|
+
Requires-Dist: starlette>=0.45.3
|
|
43
|
+
Requires-Dist: setuptools>=75.8.0
|
|
44
|
+
Requires-Dist: certifi>=2024.12.14
|
|
45
|
+
Requires-Dist: jinja2>=3.1.5
|
|
46
|
+
Requires-Dist: cryptography>=44.0.0
|
|
47
|
+
Provides-Extra: dev
|
|
48
|
+
Requires-Dist: pytest>=7.4; extra == "dev"
|
|
49
|
+
Requires-Dist: hypothesis>=6.0; extra == "dev"
|
|
50
|
+
Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
|
|
51
|
+
Requires-Dist: pytest-cov>=4.1; extra == "dev"
|
|
52
|
+
Requires-Dist: pytest-xdist>=3.3; extra == "dev"
|
|
53
|
+
Requires-Dist: pytest-split>=0.8; extra == "dev"
|
|
54
|
+
Requires-Dist: pytest-benchmark>=4.0; extra == "dev"
|
|
55
|
+
Requires-Dist: pytest-mock>=3.10; extra == "dev"
|
|
56
|
+
Requires-Dist: playwright>=1.40; extra == "dev"
|
|
57
|
+
Requires-Dist: ruff>=0.1; extra == "dev"
|
|
58
|
+
Requires-Dist: mypy>=1.5; extra == "dev"
|
|
59
|
+
Requires-Dist: black>=23.0; extra == "dev"
|
|
60
|
+
Requires-Dist: types-PyYAML>=6.0; extra == "dev"
|
|
61
|
+
Requires-Dist: pandas-stubs>=2.0; extra == "dev"
|
|
62
|
+
Requires-Dist: radon>=6.0; extra == "dev"
|
|
63
|
+
Requires-Dist: xenon>=0.9; extra == "dev"
|
|
64
|
+
Requires-Dist: pydocstyle>=6.3; extra == "dev"
|
|
65
|
+
Requires-Dist: sphinx>=7.0; extra == "dev"
|
|
66
|
+
Requires-Dist: sphinx-autodoc-typehints>=2.0; extra == "dev"
|
|
67
|
+
Requires-Dist: mkdocstrings[python]>=0.24; extra == "dev"
|
|
68
|
+
Requires-Dist: pre-commit>=3.5; extra == "dev"
|
|
69
|
+
Requires-Dist: mkdocs>=1.5; extra == "dev"
|
|
70
|
+
Requires-Dist: mkdocs-material>=9.4; extra == "dev"
|
|
71
|
+
Requires-Dist: pandas>=2.0; extra == "dev"
|
|
72
|
+
Requires-Dist: scikit-learn>=1.3; extra == "dev"
|
|
73
|
+
Requires-Dist: scipy>=1.11; extra == "dev"
|
|
74
|
+
Requires-Dist: pyarrow>=14.0; extra == "dev"
|
|
75
|
+
Provides-Extra: knowledge
|
|
76
|
+
Requires-Dist: qdrant-client>=1.7; extra == "knowledge"
|
|
77
|
+
Requires-Dist: sentence-transformers>=2.2; extra == "knowledge"
|
|
78
|
+
Requires-Dist: voyageai>=0.2; extra == "knowledge"
|
|
79
|
+
Requires-Dist: neo4j>=5.0; extra == "knowledge"
|
|
80
|
+
Requires-Dist: unstructured>=0.10; extra == "knowledge"
|
|
81
|
+
Provides-Extra: mcp
|
|
82
|
+
Requires-Dist: mcp>=1.0; extra == "mcp"
|
|
83
|
+
Provides-Extra: ml
|
|
84
|
+
Requires-Dist: torch>=2.0; extra == "ml"
|
|
85
|
+
Requires-Dist: transformers>=4.35; extra == "ml"
|
|
86
|
+
Requires-Dist: huggingface_hub>=0.20; extra == "ml"
|
|
87
|
+
Requires-Dist: mlflow>=2.9; extra == "ml"
|
|
88
|
+
Requires-Dist: wandb>=0.16; extra == "ml"
|
|
89
|
+
Requires-Dist: pandas>=2.0; extra == "ml"
|
|
90
|
+
Requires-Dist: pyarrow>=14.0; extra == "ml"
|
|
91
|
+
Requires-Dist: ydata-profiling>=4.6; extra == "ml"
|
|
92
|
+
Requires-Dist: mem0ai>=0.1; extra == "ml"
|
|
93
|
+
Provides-Extra: eval
|
|
94
|
+
Requires-Dist: dspy-ai>=2.4; extra == "eval"
|
|
95
|
+
Requires-Dist: ragas>=0.1; extra == "eval"
|
|
96
|
+
Requires-Dist: deepeval>=0.20; extra == "eval"
|
|
97
|
+
Requires-Dist: scipy>=1.11; extra == "eval"
|
|
98
|
+
Provides-Extra: api
|
|
99
|
+
Requires-Dist: fastapi>=0.115; extra == "api"
|
|
100
|
+
Requires-Dist: uvicorn[standard]>=0.32; extra == "api"
|
|
101
|
+
Requires-Dist: redis>=5.0; extra == "api"
|
|
102
|
+
Provides-Extra: jupyter
|
|
103
|
+
Requires-Dist: ipython>=7.0; extra == "jupyter"
|
|
104
|
+
Requires-Dist: nest-asyncio>=1.5; extra == "jupyter"
|
|
105
|
+
Requires-Dist: tornado>=6.0; extra == "jupyter"
|
|
106
|
+
Provides-Extra: modal
|
|
107
|
+
Requires-Dist: modal>=0.60; extra == "modal"
|
|
108
|
+
Provides-Extra: aws
|
|
109
|
+
Requires-Dist: sagemaker>=2.200; extra == "aws"
|
|
110
|
+
Requires-Dist: boto3>=1.34; extra == "aws"
|
|
111
|
+
Provides-Extra: gcp
|
|
112
|
+
Requires-Dist: google-cloud-aiplatform>=1.40; extra == "gcp"
|
|
113
|
+
Provides-Extra: azure
|
|
114
|
+
Requires-Dist: azure-ai-ml>=1.14; extra == "azure"
|
|
115
|
+
Requires-Dist: azure-identity>=1.15; extra == "azure"
|
|
116
|
+
Provides-Extra: databricks
|
|
117
|
+
Requires-Dist: databricks-connect>=13.0; extra == "databricks"
|
|
118
|
+
Provides-Extra: run
|
|
119
|
+
Requires-Dist: corvus-ai[aws,azure,gcp,modal]; extra == "run"
|
|
120
|
+
Provides-Extra: storage
|
|
121
|
+
Requires-Dist: fsspec>=2024.1; extra == "storage"
|
|
122
|
+
Requires-Dist: s3fs>=2024.1; extra == "storage"
|
|
123
|
+
Requires-Dist: gcsfs>=2024.1; extra == "storage"
|
|
124
|
+
Requires-Dist: adlfs>=2024.1; extra == "storage"
|
|
125
|
+
Requires-Dist: cloudpathlib[azure,gs,s3]>=0.18; extra == "storage"
|
|
126
|
+
Provides-Extra: all
|
|
127
|
+
Requires-Dist: corvus-ai[api,dev,eval,jupyter,knowledge,mcp,ml,run,storage]; extra == "all"
|
|
128
|
+
|
|
129
|
+
# Corvus - ML Development Assistant
|
|
130
|
+
|
|
131
|
+
[](https://github.com/CloudlyIO/corvus/actions/workflows/test.yml)
|
|
132
|
+
[](https://github.com/CloudlyIO/corvus/actions/workflows/lint.yml)
|
|
133
|
+
[](https://github.com/CloudlyIO/corvus/actions/workflows/security.yml)
|
|
134
|
+
[](https://www.python.org/downloads/)
|
|
135
|
+
[](CHANGELOG.md)
|
|
136
|
+
|
|
137
|
+
**Platform-agnostic, extensible AI-powered ML Development Assistant**
|
|
138
|
+
|
|
139
|
+
## Overview
|
|
140
|
+
|
|
141
|
+
Corvus is built on three pillars:
|
|
142
|
+
|
|
143
|
+
1. **Universal Skills Framework** - 24 ML skill functions across 24 modules for data engineering, model training, deployment, observability, and ML advisory
|
|
144
|
+
2. **MCP Integration** - 6 MCP server integrations for GitHub, PostgreSQL, Filesystem, MLflow, Docker, and Cloud Storage
|
|
145
|
+
3. **Knowledge Base** - Hybrid retrieval (BM25 + Vector + RRF), GraphRAG with Neo4j, persistent memory with Mem0
|
|
146
|
+
4. **AI Safety** - Defense-in-depth security with prompt injection defense, DLP, grounding validation, and quality monitoring
|
|
147
|
+
|
|
148
|
+
## Features
|
|
149
|
+
|
|
150
|
+
### Skills Library (24 Skills)
|
|
151
|
+
|
|
152
|
+
| Category | Skills |
|
|
153
|
+
|----------|--------|
|
|
154
|
+
| **Data Engineering** | data-profiler, feature-recommender, pipeline-generator, schema-designer, validation-generator |
|
|
155
|
+
| **Model Training** | model-selector, architecture-recommender, pytorch-codegen, experiment-tracker, distributed-config, hyperparameter-optimizer |
|
|
156
|
+
| **Deployment** | endpoint-generator, docker-generator, terraform-generator, k8s-manifest-generator, cicd-generator, quantization-exporter |
|
|
157
|
+
| **Observability** | monitoring-setup, drift-detector, dashboard-creator |
|
|
158
|
+
| **ML Advisory** | ml-spec-generator, experiment-advisor |
|
|
159
|
+
| **Model Hub** | huggingface-skills, github-ml-skills |
|
|
160
|
+
|
|
161
|
+
### MCP Integrations (6 Servers)
|
|
162
|
+
|
|
163
|
+
| Server | Capabilities |
|
|
164
|
+
|--------|--------------|
|
|
165
|
+
| **GitHub** | Repository access, PRs, issues, commits |
|
|
166
|
+
| **PostgreSQL** | Database queries, schema management |
|
|
167
|
+
| **Filesystem** | File operations, directory traversal |
|
|
168
|
+
| **MLflow** | Experiment tracking, model registry |
|
|
169
|
+
| **Docker** | Container management, image operations |
|
|
170
|
+
| **S3/GCS** | Cloud storage operations |
|
|
171
|
+
|
|
172
|
+
### Knowledge Base
|
|
173
|
+
|
|
174
|
+
| Component | Description |
|
|
175
|
+
|-----------|-------------|
|
|
176
|
+
| **Qdrant Vector Store** | Semantic search with voyage-code-3 embeddings |
|
|
177
|
+
| **Hybrid Retrieval** | BM25 + Vector search with RRF fusion |
|
|
178
|
+
| **Cross-Encoder Reranking** | Precision improvement for retrieval |
|
|
179
|
+
| **Neo4j GraphRAG** | Knowledge graph with entity extraction |
|
|
180
|
+
| **Mem0 Memory** | Persistent memory across sessions |
|
|
181
|
+
|
|
182
|
+
### AI Safety & Guardrails
|
|
183
|
+
|
|
184
|
+
| Component | Purpose |
|
|
185
|
+
|-----------|---------|
|
|
186
|
+
| **Prompt Guard** | Injection detection and input validation |
|
|
187
|
+
| **Tool Guard** | MCP security and sandboxing |
|
|
188
|
+
| **Memory Guard** | Memory injection prevention |
|
|
189
|
+
| **Grounding Validator** | Hallucination prevention with citations |
|
|
190
|
+
| **DLP Scanner** | PII/credential detection and redaction |
|
|
191
|
+
| **Quality Monitor** | Output quality and drift detection |
|
|
192
|
+
|
|
193
|
+
## Quick Start
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
# Clone
|
|
197
|
+
git clone https://github.com/CloudlyIO/corvus.git
|
|
198
|
+
cd corvus
|
|
199
|
+
|
|
200
|
+
# Install with all dependencies
|
|
201
|
+
pip install -e ".[all]"
|
|
202
|
+
|
|
203
|
+
# Install pre-commit hooks
|
|
204
|
+
pre-commit install --hook-type pre-commit --hook-type commit-msg
|
|
205
|
+
|
|
206
|
+
# Run tests
|
|
207
|
+
make test
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Usage Examples
|
|
211
|
+
|
|
212
|
+
### Using Skills
|
|
213
|
+
|
|
214
|
+
```python
|
|
215
|
+
import asyncio
|
|
216
|
+
from corvus.skills.library.model_selector import select_model
|
|
217
|
+
from corvus.skills.library.pytorch_codegen import generate_pytorch_code
|
|
218
|
+
|
|
219
|
+
async def main():
|
|
220
|
+
# Select a model for your task
|
|
221
|
+
result = await select_model(
|
|
222
|
+
task_type="classification",
|
|
223
|
+
data_characteristics={
|
|
224
|
+
"num_samples": 10000,
|
|
225
|
+
"num_features": 50,
|
|
226
|
+
"num_classes": 3,
|
|
227
|
+
},
|
|
228
|
+
)
|
|
229
|
+
print(f"Recommended: {result['recommended_model']}")
|
|
230
|
+
|
|
231
|
+
# Generate PyTorch training code
|
|
232
|
+
code = await generate_pytorch_code(
|
|
233
|
+
model_type="mlp_classifier",
|
|
234
|
+
input_features=50,
|
|
235
|
+
output_classes=3,
|
|
236
|
+
hidden_layers=[128, 64],
|
|
237
|
+
)
|
|
238
|
+
print(code["model_code"])
|
|
239
|
+
|
|
240
|
+
asyncio.run(main())
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Using Safety Features
|
|
244
|
+
|
|
245
|
+
```python
|
|
246
|
+
from corvus.safety import (
|
|
247
|
+
validate_input,
|
|
248
|
+
create_dlp_scanner,
|
|
249
|
+
assess_quality,
|
|
250
|
+
)
|
|
251
|
+
|
|
252
|
+
# Validate user input for injection attempts
|
|
253
|
+
result = validate_input("Help me build a classifier")
|
|
254
|
+
if result.is_safe:
|
|
255
|
+
print("Input is safe")
|
|
256
|
+
|
|
257
|
+
# Scan for sensitive data
|
|
258
|
+
scanner = create_dlp_scanner()
|
|
259
|
+
dlp_result = scanner.scan_content("Contact: john@example.com")
|
|
260
|
+
if dlp_result.pii_count > 0:
|
|
261
|
+
print("PII detected!")
|
|
262
|
+
|
|
263
|
+
# Assess response quality
|
|
264
|
+
quality = assess_quality(
|
|
265
|
+
"Here's a detailed explanation with examples...",
|
|
266
|
+
prompt="Explain gradient descent"
|
|
267
|
+
)
|
|
268
|
+
print(f"Quality score: {quality.overall_score:.2f}")
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Running the E2E Demo
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
# Run the complete ML workflow demo
|
|
275
|
+
python3 demos/e2e/ml_workflow_demo.py
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
## Development
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
# Testing (TDD)
|
|
282
|
+
make test # Unit tests
|
|
283
|
+
make test-all # All tests
|
|
284
|
+
make test-cov # With coverage
|
|
285
|
+
|
|
286
|
+
# Evaluation (EDD)
|
|
287
|
+
make benchmark # Run benchmarks
|
|
288
|
+
|
|
289
|
+
# Quality
|
|
290
|
+
make lint # Ruff linting
|
|
291
|
+
make format # Black formatting
|
|
292
|
+
make quality # Lint + typecheck
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
## Project Structure
|
|
296
|
+
|
|
297
|
+
```
|
|
298
|
+
corvus/
|
|
299
|
+
├── src/corvus/ # Main package
|
|
300
|
+
│ ├── core/ # Config, exceptions
|
|
301
|
+
│ ├── skills/ # Universal skills framework (24 skills)
|
|
302
|
+
│ ├── llm/ # LLM gateway (LiteLLM)
|
|
303
|
+
│ ├── agents/ # Agent orchestration (LangGraph)
|
|
304
|
+
│ ├── knowledge/ # Knowledge base (RAG/GraphRAG/Memory)
|
|
305
|
+
│ ├── mcp/ # MCP integrations (6 servers)
|
|
306
|
+
│ └── safety/ # AI safety & guardrails (6 components)
|
|
307
|
+
├── tests/ # Test suite
|
|
308
|
+
│ ├── unit/ # 10,168+ tests
|
|
309
|
+
│ ├── integration/ # integration tests
|
|
310
|
+
│ └── e2e/ # End-to-end tests
|
|
311
|
+
├── benchmarks/ # Performance benchmarks
|
|
312
|
+
├── demos/ # Executable examples
|
|
313
|
+
│ ├── skills/ # Individual skill demos
|
|
314
|
+
│ ├── knowledge/ # Knowledge base demos
|
|
315
|
+
│ ├── mcp/ # MCP integration demos
|
|
316
|
+
│ ├── safety/ # Safety feature demos
|
|
317
|
+
│ └── e2e/ # End-to-end workflow demos
|
|
318
|
+
└── docs/ # Documentation
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
## Documentation
|
|
322
|
+
|
|
323
|
+
| Document | Description |
|
|
324
|
+
|----------|-------------|
|
|
325
|
+
| [Documentation Index](docs/index.md) | All guides, API reference, architecture docs |
|
|
326
|
+
| [Status](docs/STATUS.md) | Current project status |
|
|
327
|
+
| [Architecture](docs/architecture/overview.md) | Technical architecture |
|
|
328
|
+
| [Contributing](CONTRIBUTING.md) | Developer workflow |
|
|
329
|
+
| [Changelog](CHANGELOG.md) | Version history |
|
|
330
|
+
|
|
331
|
+
## Configuration
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
# Core
|
|
335
|
+
CORVUS_DEBUG=true|false
|
|
336
|
+
CORVUS_LOG_LEVEL=INFO|DEBUG|WARNING|ERROR
|
|
337
|
+
|
|
338
|
+
# LLM
|
|
339
|
+
CORVUS_LLM_DEFAULT_PROVIDER=anthropic|openai
|
|
340
|
+
CORVUS_LLM_DEFAULT_MODEL=claude-sonnet-4-20250514
|
|
341
|
+
|
|
342
|
+
# Knowledge Base
|
|
343
|
+
CORVUS_KNOWLEDGE_VECTOR_STORE=qdrant
|
|
344
|
+
CORVUS_KNOWLEDGE_EMBEDDING_MODEL=voyage-code-3
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
## Technology Stack
|
|
348
|
+
|
|
349
|
+
| Layer | Technology |
|
|
350
|
+
|-------|------------|
|
|
351
|
+
| Agent Orchestration | LangGraph |
|
|
352
|
+
| LLM Gateway | LiteLLM |
|
|
353
|
+
| Primary LLM | Claude Sonnet 4 / Opus 4.5 |
|
|
354
|
+
| Vector Database | Qdrant |
|
|
355
|
+
| Knowledge Graph | Neo4j |
|
|
356
|
+
| Code Embeddings | voyage-code-3 |
|
|
357
|
+
| Text Embeddings | e5-large-v2 |
|
|
358
|
+
| Memory System | Mem0 |
|
|
359
|
+
| Tool Integration | MCP |
|
|
360
|
+
|
|
361
|
+
## License
|
|
362
|
+
|
|
363
|
+
MIT
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# Corvus - ML Development Assistant
|
|
2
|
+
|
|
3
|
+
[](https://github.com/CloudlyIO/corvus/actions/workflows/test.yml)
|
|
4
|
+
[](https://github.com/CloudlyIO/corvus/actions/workflows/lint.yml)
|
|
5
|
+
[](https://github.com/CloudlyIO/corvus/actions/workflows/security.yml)
|
|
6
|
+
[](https://www.python.org/downloads/)
|
|
7
|
+
[](CHANGELOG.md)
|
|
8
|
+
|
|
9
|
+
**Platform-agnostic, extensible AI-powered ML Development Assistant**
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
Corvus is built on three pillars:
|
|
14
|
+
|
|
15
|
+
1. **Universal Skills Framework** - 24 ML skill functions across 24 modules for data engineering, model training, deployment, observability, and ML advisory
|
|
16
|
+
2. **MCP Integration** - 6 MCP server integrations for GitHub, PostgreSQL, Filesystem, MLflow, Docker, and Cloud Storage
|
|
17
|
+
3. **Knowledge Base** - Hybrid retrieval (BM25 + Vector + RRF), GraphRAG with Neo4j, persistent memory with Mem0
|
|
18
|
+
4. **AI Safety** - Defense-in-depth security with prompt injection defense, DLP, grounding validation, and quality monitoring
|
|
19
|
+
|
|
20
|
+
## Features
|
|
21
|
+
|
|
22
|
+
### Skills Library (24 Skills)
|
|
23
|
+
|
|
24
|
+
| Category | Skills |
|
|
25
|
+
|----------|--------|
|
|
26
|
+
| **Data Engineering** | data-profiler, feature-recommender, pipeline-generator, schema-designer, validation-generator |
|
|
27
|
+
| **Model Training** | model-selector, architecture-recommender, pytorch-codegen, experiment-tracker, distributed-config, hyperparameter-optimizer |
|
|
28
|
+
| **Deployment** | endpoint-generator, docker-generator, terraform-generator, k8s-manifest-generator, cicd-generator, quantization-exporter |
|
|
29
|
+
| **Observability** | monitoring-setup, drift-detector, dashboard-creator |
|
|
30
|
+
| **ML Advisory** | ml-spec-generator, experiment-advisor |
|
|
31
|
+
| **Model Hub** | huggingface-skills, github-ml-skills |
|
|
32
|
+
|
|
33
|
+
### MCP Integrations (6 Servers)
|
|
34
|
+
|
|
35
|
+
| Server | Capabilities |
|
|
36
|
+
|--------|--------------|
|
|
37
|
+
| **GitHub** | Repository access, PRs, issues, commits |
|
|
38
|
+
| **PostgreSQL** | Database queries, schema management |
|
|
39
|
+
| **Filesystem** | File operations, directory traversal |
|
|
40
|
+
| **MLflow** | Experiment tracking, model registry |
|
|
41
|
+
| **Docker** | Container management, image operations |
|
|
42
|
+
| **S3/GCS** | Cloud storage operations |
|
|
43
|
+
|
|
44
|
+
### Knowledge Base
|
|
45
|
+
|
|
46
|
+
| Component | Description |
|
|
47
|
+
|-----------|-------------|
|
|
48
|
+
| **Qdrant Vector Store** | Semantic search with voyage-code-3 embeddings |
|
|
49
|
+
| **Hybrid Retrieval** | BM25 + Vector search with RRF fusion |
|
|
50
|
+
| **Cross-Encoder Reranking** | Precision improvement for retrieval |
|
|
51
|
+
| **Neo4j GraphRAG** | Knowledge graph with entity extraction |
|
|
52
|
+
| **Mem0 Memory** | Persistent memory across sessions |
|
|
53
|
+
|
|
54
|
+
### AI Safety & Guardrails
|
|
55
|
+
|
|
56
|
+
| Component | Purpose |
|
|
57
|
+
|-----------|---------|
|
|
58
|
+
| **Prompt Guard** | Injection detection and input validation |
|
|
59
|
+
| **Tool Guard** | MCP security and sandboxing |
|
|
60
|
+
| **Memory Guard** | Memory injection prevention |
|
|
61
|
+
| **Grounding Validator** | Hallucination prevention with citations |
|
|
62
|
+
| **DLP Scanner** | PII/credential detection and redaction |
|
|
63
|
+
| **Quality Monitor** | Output quality and drift detection |
|
|
64
|
+
|
|
65
|
+
## Quick Start
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Clone
|
|
69
|
+
git clone https://github.com/CloudlyIO/corvus.git
|
|
70
|
+
cd corvus
|
|
71
|
+
|
|
72
|
+
# Install with all dependencies
|
|
73
|
+
pip install -e ".[all]"
|
|
74
|
+
|
|
75
|
+
# Install pre-commit hooks
|
|
76
|
+
pre-commit install --hook-type pre-commit --hook-type commit-msg
|
|
77
|
+
|
|
78
|
+
# Run tests
|
|
79
|
+
make test
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Usage Examples
|
|
83
|
+
|
|
84
|
+
### Using Skills
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
import asyncio
|
|
88
|
+
from corvus.skills.library.model_selector import select_model
|
|
89
|
+
from corvus.skills.library.pytorch_codegen import generate_pytorch_code
|
|
90
|
+
|
|
91
|
+
async def main():
|
|
92
|
+
# Select a model for your task
|
|
93
|
+
result = await select_model(
|
|
94
|
+
task_type="classification",
|
|
95
|
+
data_characteristics={
|
|
96
|
+
"num_samples": 10000,
|
|
97
|
+
"num_features": 50,
|
|
98
|
+
"num_classes": 3,
|
|
99
|
+
},
|
|
100
|
+
)
|
|
101
|
+
print(f"Recommended: {result['recommended_model']}")
|
|
102
|
+
|
|
103
|
+
# Generate PyTorch training code
|
|
104
|
+
code = await generate_pytorch_code(
|
|
105
|
+
model_type="mlp_classifier",
|
|
106
|
+
input_features=50,
|
|
107
|
+
output_classes=3,
|
|
108
|
+
hidden_layers=[128, 64],
|
|
109
|
+
)
|
|
110
|
+
print(code["model_code"])
|
|
111
|
+
|
|
112
|
+
asyncio.run(main())
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Using Safety Features
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
from corvus.safety import (
|
|
119
|
+
validate_input,
|
|
120
|
+
create_dlp_scanner,
|
|
121
|
+
assess_quality,
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
# Validate user input for injection attempts
|
|
125
|
+
result = validate_input("Help me build a classifier")
|
|
126
|
+
if result.is_safe:
|
|
127
|
+
print("Input is safe")
|
|
128
|
+
|
|
129
|
+
# Scan for sensitive data
|
|
130
|
+
scanner = create_dlp_scanner()
|
|
131
|
+
dlp_result = scanner.scan_content("Contact: john@example.com")
|
|
132
|
+
if dlp_result.pii_count > 0:
|
|
133
|
+
print("PII detected!")
|
|
134
|
+
|
|
135
|
+
# Assess response quality
|
|
136
|
+
quality = assess_quality(
|
|
137
|
+
"Here's a detailed explanation with examples...",
|
|
138
|
+
prompt="Explain gradient descent"
|
|
139
|
+
)
|
|
140
|
+
print(f"Quality score: {quality.overall_score:.2f}")
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Running the E2E Demo
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# Run the complete ML workflow demo
|
|
147
|
+
python3 demos/e2e/ml_workflow_demo.py
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Development
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# Testing (TDD)
|
|
154
|
+
make test # Unit tests
|
|
155
|
+
make test-all # All tests
|
|
156
|
+
make test-cov # With coverage
|
|
157
|
+
|
|
158
|
+
# Evaluation (EDD)
|
|
159
|
+
make benchmark # Run benchmarks
|
|
160
|
+
|
|
161
|
+
# Quality
|
|
162
|
+
make lint # Ruff linting
|
|
163
|
+
make format # Black formatting
|
|
164
|
+
make quality # Lint + typecheck
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Project Structure
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
corvus/
|
|
171
|
+
├── src/corvus/ # Main package
|
|
172
|
+
│ ├── core/ # Config, exceptions
|
|
173
|
+
│ ├── skills/ # Universal skills framework (24 skills)
|
|
174
|
+
│ ├── llm/ # LLM gateway (LiteLLM)
|
|
175
|
+
│ ├── agents/ # Agent orchestration (LangGraph)
|
|
176
|
+
│ ├── knowledge/ # Knowledge base (RAG/GraphRAG/Memory)
|
|
177
|
+
│ ├── mcp/ # MCP integrations (6 servers)
|
|
178
|
+
│ └── safety/ # AI safety & guardrails (6 components)
|
|
179
|
+
├── tests/ # Test suite
|
|
180
|
+
│ ├── unit/ # 10,168+ tests
|
|
181
|
+
│ ├── integration/ # integration tests
|
|
182
|
+
│ └── e2e/ # End-to-end tests
|
|
183
|
+
├── benchmarks/ # Performance benchmarks
|
|
184
|
+
├── demos/ # Executable examples
|
|
185
|
+
│ ├── skills/ # Individual skill demos
|
|
186
|
+
│ ├── knowledge/ # Knowledge base demos
|
|
187
|
+
│ ├── mcp/ # MCP integration demos
|
|
188
|
+
│ ├── safety/ # Safety feature demos
|
|
189
|
+
│ └── e2e/ # End-to-end workflow demos
|
|
190
|
+
└── docs/ # Documentation
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Documentation
|
|
194
|
+
|
|
195
|
+
| Document | Description |
|
|
196
|
+
|----------|-------------|
|
|
197
|
+
| [Documentation Index](docs/index.md) | All guides, API reference, architecture docs |
|
|
198
|
+
| [Status](docs/STATUS.md) | Current project status |
|
|
199
|
+
| [Architecture](docs/architecture/overview.md) | Technical architecture |
|
|
200
|
+
| [Contributing](CONTRIBUTING.md) | Developer workflow |
|
|
201
|
+
| [Changelog](CHANGELOG.md) | Version history |
|
|
202
|
+
|
|
203
|
+
## Configuration
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# Core
|
|
207
|
+
CORVUS_DEBUG=true|false
|
|
208
|
+
CORVUS_LOG_LEVEL=INFO|DEBUG|WARNING|ERROR
|
|
209
|
+
|
|
210
|
+
# LLM
|
|
211
|
+
CORVUS_LLM_DEFAULT_PROVIDER=anthropic|openai
|
|
212
|
+
CORVUS_LLM_DEFAULT_MODEL=claude-sonnet-4-20250514
|
|
213
|
+
|
|
214
|
+
# Knowledge Base
|
|
215
|
+
CORVUS_KNOWLEDGE_VECTOR_STORE=qdrant
|
|
216
|
+
CORVUS_KNOWLEDGE_EMBEDDING_MODEL=voyage-code-3
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Technology Stack
|
|
220
|
+
|
|
221
|
+
| Layer | Technology |
|
|
222
|
+
|-------|------------|
|
|
223
|
+
| Agent Orchestration | LangGraph |
|
|
224
|
+
| LLM Gateway | LiteLLM |
|
|
225
|
+
| Primary LLM | Claude Sonnet 4 / Opus 4.5 |
|
|
226
|
+
| Vector Database | Qdrant |
|
|
227
|
+
| Knowledge Graph | Neo4j |
|
|
228
|
+
| Code Embeddings | voyage-code-3 |
|
|
229
|
+
| Text Embeddings | e5-large-v2 |
|
|
230
|
+
| Memory System | Mem0 |
|
|
231
|
+
| Tool Integration | MCP |
|
|
232
|
+
|
|
233
|
+
## License
|
|
234
|
+
|
|
235
|
+
MIT
|