Metadata-Version: 2.4
Name: nemo-platform
Version: 0.2.0.dev20260720224642
Summary: Convenience wrapper distribution for NeMo Platform Python packages
Author: NVIDIA Corporation
License-Expression: Apache-2.0
Classifier: Intended Audience :: Developers
Classifier: Operating System :: MacOS
Classifier: Operating System :: OS Independent
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: <3.15,>=3.11
Requires-Dist: nemo-platform[nemo-platform-plugin]
Requires-Dist: nemo-platform[nemo-platform-sdk]
Requires-Dist: nemo-platform[nmp-common]
Provides-Extra: aiohttp
Requires-Dist: aiohttp>=3.14.1; extra == 'aiohttp'
Requires-Dist: httpx-aiohttp>=0.1.9; extra == 'aiohttp'
Provides-Extra: all
Requires-Dist: aioboto3>=15.5.0; extra == 'all'
Requires-Dist: aiohttp>=3.14.1; extra == 'all'
Requires-Dist: aiohttp[speedups]>=3.14.1; extra == 'all'
Requires-Dist: aiosqlite>=0.20.0; extra == 'all'
Requires-Dist: alembic<2.0.0,>=1.10.4; extra == 'all'
Requires-Dist: alembic>=1.13.1; extra == 'all'
Requires-Dist: anthropic>=0.88.0; extra == 'all'
Requires-Dist: anyio>=4.0.0; extra == 'all'
Requires-Dist: asyncpg>=0.31.0; extra == 'all'
Requires-Dist: base58>=2.1.0; extra == 'all'
Requires-Dist: base58>=2.1.1; extra == 'all'
Requires-Dist: boto3<1.40.62,>=1.40.46; extra == 'all'
Requires-Dist: botocore<1.40.62,>=1.40.46; extra == 'all'
Requires-Dist: clickhouse-connect<1.0,>=0.7; extra == 'all'
Requires-Dist: cloudpickle>=3.1.1; extra == 'all'
Requires-Dist: nemo-platform[data-designer-nemo] ; extra == "all"
Requires-Dist: data-designer==0.7.0; extra == 'all'
Requires-Dist: datasets<=4.3.0,>=3.3.1; extra == 'all'
Requires-Dist: docker>=7.1.0; extra == 'all'
Requires-Dist: duckdb<2.0.0,>=1.1.3; extra == 'all'
Requires-Dist: duckdb>=1.1.3; extra == 'all'
Requires-Dist: fastapi; extra == 'all'
Requires-Dist: fastapi<1.0.0,>=0.115.5; extra == 'all'
Requires-Dist: fastapi>=0.100.0; extra == 'all'
Requires-Dist: fastapi>=0.109.0; extra == 'all'
Requires-Dist: fastapi>=0.115.8; extra == 'all'
Requires-Dist: fastapi[standard]>=0.115.4; extra == 'all'
Requires-Dist: fastmcp>=3.2.0; extra == 'all'
Requires-Dist: fsspec>=2024.10.0; extra == 'all'
Requires-Dist: nemo-platform[auditor-service] ; extra == "all"
Requires-Dist: greenlet>=3.0.0; extra == 'all'
Requires-Dist: gunicorn>=23.0.0; extra == 'all'
Requires-Dist: httpx>=0.27; extra == 'all'
Requires-Dist: httpx>=0.27.0; extra == 'all'
Requires-Dist: httpx>=0.27.2; extra == 'all'
Requires-Dist: hvac>=2.3.0; extra == 'all'
Requires-Dist: kubernetes>=30.1.0; extra == 'all'
Requires-Dist: kubernetes>=31.0.0; extra == 'all'
Requires-Dist: langchain-aws==1.1.0; extra == 'all'
Requires-Dist: langchain-community<0.4,>=0.3.31; extra == 'all'
Requires-Dist: langchain-core>=1.4.9; extra == 'all'
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.3; extra == 'all'
Requires-Dist: langchain-openai<2.0.0,>=1.3.5; extra == 'all'
Requires-Dist: langchain-openai>=1.3.5; extra == 'all'
Requires-Dist: langchain>=1.3.13; extra == 'all'
Requires-Dist: lark>=1.1.0; extra == 'all'
Requires-Dist: nemo-platform[nemo-agents-example-calculator] ; extra == "all"
Requires-Dist: nemo-anonymizer>=0.3.0; extra == 'all'
Requires-Dist: nemo-platform[nemo-auditor-plugin] ; extra == "all"
Requires-Dist: nemo-platform[nemo-evaluator-sdk] ; extra == "all"
Requires-Dist: nemo-fabric<0.2.0,>=0.1.0a20260717; extra == 'all'
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "all"
Requires-Dist: nemo-platform[nemo-platform-sdk] ; extra == "all"
Requires-Dist: nemo-safe-synthesizer==0.1.7; extra == 'all'
Requires-Dist: nemoguardrails[tracing]==0.23.0; extra == 'all'
Requires-Dist: ngcsdk>=4.9.10; extra == 'all'
Requires-Dist: nemo-platform[auth-service] ; extra == "all"
Requires-Dist: nemo-platform[nmp-common] ; extra == "all"
Requires-Dist: nemo-platform[guardrails-service] ; extra == "all"
Requires-Dist: nvidia-nat-config-optimizer<1.9,>=1.8.0; extra == 'all'
Requires-Dist: nvidia-nat-core<1.9,>=1.8.0; extra == 'all'
Requires-Dist: nvidia-nat-langchain<1.9,>=1.8.0; extra == 'all'
Requires-Dist: openai>=1.61.0; extra == 'all'
Requires-Dist: opentelemetry-distro>=0.64b0; extra == 'all'
Requires-Dist: opentelemetry-exporter-otlp>=1.22.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-fastapi>=0.64b0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-httpx>=0.64b0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-requests>=0.64b0; extra == 'all'
Requires-Dist: opentelemetry-proto>=1.27.0; extra == 'all'
Requires-Dist: opentelemetry-proto>=1.28.2; extra == 'all'
Requires-Dist: opentelemetry-sdk<2.0.0,>=1.27.0; extra == 'all'
Requires-Dist: pandas; extra == 'all'
Requires-Dist: pandas>=1.5.3; extra == 'all'
Requires-Dist: psycopg2-binary>=2.9.10; extra == 'all'
Requires-Dist: pydantic-settings<3.0.0,>=2.6.1; extra == 'all'
Requires-Dist: pydantic-settings>=2.0.0; extra == 'all'
Requires-Dist: pydantic-settings>=2.2.1; extra == 'all'
Requires-Dist: pydantic-settings>=2.6.1; extra == 'all'
Requires-Dist: pydantic-settings>=2.8.1; extra == 'all'
Requires-Dist: pydantic<3.0.0,>=2.9.2; extra == 'all'
Requires-Dist: pydantic>=2.0.0; extra == 'all'
Requires-Dist: pydantic>=2.10.3; extra == 'all'
Requires-Dist: pydantic>=2.10.6; extra == 'all'
Requires-Dist: pydantic[email]>=2.9.2; extra == 'all'
Requires-Dist: pyleak>=0.1.0; extra == 'all'
Requires-Dist: python-multipart~=0.0.9; extra == 'all'
Requires-Dist: pyyaml>=6.0; extra == 'all'
Requires-Dist: pyyaml>=6.0.0; extra == 'all'
Requires-Dist: pyyaml>=6.0.2; extra == 'all'
Requires-Dist: requests>=2.31.0; extra == 'all'
Requires-Dist: rich>=13.7.1; extra == 'all'
Requires-Dist: rich>=14.1.0; extra == 'all'
Requires-Dist: sqlalchemy>=2.0.0; extra == 'all'
Requires-Dist: sqlmodel>=0.0.22; extra == 'all'
Requires-Dist: streaming-form-data>=1.19.1; extra == 'all'
Requires-Dist: nemo-platform[switchyard-vendored] ; extra == "all"
Requires-Dist: tenacity>=8.5.0; extra == 'all'
Requires-Dist: typer>=0.20.0; extra == 'all'
Requires-Dist: typer>=0.9.0; extra == 'all'
Requires-Dist: types-aioboto3[s3]>=15.5.0; extra == 'all'
Requires-Dist: urllib3>=2.7.0; extra == 'all'
Requires-Dist: uvicorn<1.0.0,>=0.22.0; extra == 'all'
Requires-Dist: uvicorn>=0.32.1; extra == 'all'
Requires-Dist: uvicorn>=0.34.0; extra == 'all'
Requires-Dist: uvicorn[standard]>=0.12.0; extra == 'all'
Requires-Dist: uvicorn[standard]>=0.23.0; extra == 'all'
Requires-Dist: wasmtime>=20.0.0; extra == 'all'
Requires-Dist: yara-python==4.5.1; extra == 'all'
Provides-Extra: auditor-service
Requires-Dist: aiohttp>=3.14.1; extra == 'auditor-service'
Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'auditor-service'
Requires-Dist: pyyaml>=6.0.2; extra == 'auditor-service'
Requires-Dist: requests<3.0.0,>=2.32.3; extra == 'auditor-service'
Requires-Dist: xdg-base-dirs>=6.0.1; extra == 'auditor-service'
Provides-Extra: auth-service
Requires-Dist: fastapi[standard]>=0.115.4; extra == 'auth-service'
Requires-Dist: httpx>=0.27.0; extra == 'auth-service'
Requires-Dist: nemo-platform[nmp-common] ; extra == "auth-service"
Requires-Dist: pydantic-settings>=2.6.1; extra == 'auth-service'
Requires-Dist: pydantic>=2.10.3; extra == 'auth-service'
Requires-Dist: pyyaml>=6.0.0; extra == 'auth-service'
Requires-Dist: uvicorn[standard]>=0.12.0; extra == 'auth-service'
Requires-Dist: wasmtime>=20.0.0; extra == 'auth-service'
Provides-Extra: core-service
Requires-Dist: aioboto3>=15.5.0; extra == 'core-service'
Requires-Dist: aiohttp>=3.14.1; extra == 'core-service'
Requires-Dist: aiohttp[speedups]>=3.14.1; extra == 'core-service'
Requires-Dist: aiosqlite>=0.20.0; extra == 'core-service'
Requires-Dist: alembic>=1.13.1; extra == 'core-service'
Requires-Dist: anyio>=4.0.0; extra == 'core-service'
Requires-Dist: asyncpg>=0.31.0; extra == 'core-service'
Requires-Dist: base58>=2.1.0; extra == 'core-service'
Requires-Dist: base58>=2.1.1; extra == 'core-service'
Requires-Dist: docker>=7.1.0; extra == 'core-service'
Requires-Dist: duckdb<2.0.0,>=1.1.3; extra == 'core-service'
Requires-Dist: duckdb>=1.1.3; extra == 'core-service'
Requires-Dist: fastapi>=0.100.0; extra == 'core-service'
Requires-Dist: fastapi>=0.115.8; extra == 'core-service'
Requires-Dist: fastapi[standard]>=0.115.4; extra == 'core-service'
Requires-Dist: fastmcp>=3.2.0; extra == 'core-service'
Requires-Dist: greenlet>=3.0.0; extra == 'core-service'
Requires-Dist: httpx>=0.27.0; extra == 'core-service'
Requires-Dist: hvac>=2.3.0; extra == 'core-service'
Requires-Dist: kubernetes>=30.1.0; extra == 'core-service'
Requires-Dist: kubernetes>=31.0.0; extra == 'core-service'
Requires-Dist: lark>=1.1.0; extra == 'core-service'
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "core-service"
Requires-Dist: nemo-platform[nemo-platform-sdk] ; extra == "core-service"
Requires-Dist: ngcsdk>=4.9.10; extra == 'core-service'
Requires-Dist: nemo-platform[nmp-common] ; extra == "core-service"
Requires-Dist: opentelemetry-proto>=1.28.2; extra == 'core-service'
Requires-Dist: pandas>=1.5.3; extra == 'core-service'
Requires-Dist: psycopg2-binary>=2.9.10; extra == 'core-service'
Requires-Dist: pydantic-settings>=2.0.0; extra == 'core-service'
Requires-Dist: pydantic-settings>=2.6.1; extra == 'core-service'
Requires-Dist: pydantic-settings>=2.8.1; extra == 'core-service'
Requires-Dist: pydantic>=2.0.0; extra == 'core-service'
Requires-Dist: pydantic>=2.10.3; extra == 'core-service'
Requires-Dist: pydantic>=2.10.6; extra == 'core-service'
Requires-Dist: pyyaml>=6.0.0; extra == 'core-service'
Requires-Dist: pyyaml>=6.0.2; extra == 'core-service'
Requires-Dist: sqlalchemy>=2.0.0; extra == 'core-service'
Requires-Dist: sqlmodel>=0.0.22; extra == 'core-service'
Requires-Dist: streaming-form-data>=1.19.1; extra == 'core-service'
Requires-Dist: tenacity>=8.5.0; extra == 'core-service'
Requires-Dist: types-aioboto3[s3]>=15.5.0; extra == 'core-service'
Requires-Dist: urllib3>=2.7.0; extra == 'core-service'
Requires-Dist: uvicorn>=0.34.0; extra == 'core-service'
Requires-Dist: uvicorn[standard]>=0.12.0; extra == 'core-service'
Requires-Dist: uvicorn[standard]>=0.23.0; extra == 'core-service'
Requires-Dist: wasmtime>=20.0.0; extra == 'core-service'
Provides-Extra: data-designer-nemo
Requires-Dist: anyio>=4.0; extra == 'data-designer-nemo'
Requires-Dist: data-designer==0.7.0; extra == 'data-designer-nemo'
Requires-Dist: duckdb; extra == 'data-designer-nemo'
Requires-Dist: pydantic>=2; extra == 'data-designer-nemo'
Provides-Extra: entities-service
Requires-Dist: alembic>=1.13.1; extra == 'entities-service'
Requires-Dist: asyncpg>=0.31.0; extra == 'entities-service'
Requires-Dist: base58>=2.1.0; extra == 'entities-service'
Requires-Dist: fastapi>=0.100.0; extra == 'entities-service'
Requires-Dist: fastmcp>=3.2.0; extra == 'entities-service'
Requires-Dist: greenlet>=3.0.0; extra == 'entities-service'
Requires-Dist: lark>=1.1.0; extra == 'entities-service'
Requires-Dist: nemo-platform[nemo-platform-sdk] ; extra == "entities-service"
Requires-Dist: nemo-platform[nmp-common] ; extra == "entities-service"
Requires-Dist: psycopg2-binary>=2.9.10; extra == 'entities-service'
Requires-Dist: pydantic-settings>=2.0.0; extra == 'entities-service'
Requires-Dist: pydantic>=2.0.0; extra == 'entities-service'
Requires-Dist: sqlalchemy>=2.0.0; extra == 'entities-service'
Requires-Dist: uvicorn[standard]>=0.23.0; extra == 'entities-service'
Provides-Extra: files-service
Requires-Dist: aioboto3>=15.5.0; extra == 'files-service'
Requires-Dist: aiohttp>=3.14.1; extra == 'files-service'
Requires-Dist: anyio>=4.0.0; extra == 'files-service'
Requires-Dist: duckdb>=1.1.3; extra == 'files-service'
Requires-Dist: fastapi>=0.115.8; extra == 'files-service'
Requires-Dist: ngcsdk>=4.9.10; extra == 'files-service'
Requires-Dist: nemo-platform[nmp-common] ; extra == "files-service"
Requires-Dist: opentelemetry-proto>=1.28.2; extra == 'files-service'
Requires-Dist: pandas>=1.5.3; extra == 'files-service'
Requires-Dist: pydantic-settings>=2.8.1; extra == 'files-service'
Requires-Dist: pydantic>=2.10.6; extra == 'files-service'
Requires-Dist: pyyaml>=6.0.2; extra == 'files-service'
Requires-Dist: streaming-form-data>=1.19.1; extra == 'files-service'
Requires-Dist: types-aioboto3[s3]>=15.5.0; extra == 'files-service'
Requires-Dist: uvicorn>=0.34.0; extra == 'files-service'
Provides-Extra: guardrails-service
Requires-Dist: alembic<2.0.0,>=1.10.4; extra == 'guardrails-service'
Requires-Dist: fastapi>=0.109.0; extra == 'guardrails-service'
Requires-Dist: fsspec>=2024.10.0; extra == 'guardrails-service'
Requires-Dist: gunicorn>=23.0.0; extra == 'guardrails-service'
Requires-Dist: httpx>=0.27.2; extra == 'guardrails-service'
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.3; extra == 'guardrails-service'
Requires-Dist: langchain-openai<2.0.0,>=1.3.5; extra == 'guardrails-service'
Requires-Dist: nemoguardrails[tracing]==0.23.0; extra == 'guardrails-service'
Requires-Dist: nemo-platform[nmp-common] ; extra == "guardrails-service"
Requires-Dist: openai>=1.61.0; extra == 'guardrails-service'
Requires-Dist: opentelemetry-distro>=0.64b0; extra == 'guardrails-service'
Requires-Dist: opentelemetry-exporter-otlp>=1.22.0; extra == 'guardrails-service'
Requires-Dist: opentelemetry-instrumentation-fastapi>=0.64b0; extra == 'guardrails-service'
Requires-Dist: opentelemetry-instrumentation-httpx>=0.64b0; extra == 'guardrails-service'
Requires-Dist: opentelemetry-instrumentation-requests>=0.64b0; extra == 'guardrails-service'
Requires-Dist: opentelemetry-sdk<2.0.0,>=1.27.0; extra == 'guardrails-service'
Requires-Dist: pydantic-settings>=2.2.1; extra == 'guardrails-service'
Requires-Dist: python-multipart~=0.0.9; extra == 'guardrails-service'
Requires-Dist: requests>=2.31.0; extra == 'guardrails-service'
Requires-Dist: uvicorn>=0.32.1; extra == 'guardrails-service'
Requires-Dist: yara-python==4.5.1; extra == 'guardrails-service'
Provides-Extra: hello-world-service
Requires-Dist: fastapi[standard]>=0.115.4; extra == 'hello-world-service'
Requires-Dist: nemo-platform[nmp-common] ; extra == "hello-world-service"
Requires-Dist: uvicorn[standard]>=0.12.0; extra == 'hello-world-service'
Provides-Extra: inference-gateway-service
Requires-Dist: aiohttp[speedups]>=3.14.1; extra == 'inference-gateway-service'
Requires-Dist: fastapi>=0.115.8; extra == 'inference-gateway-service'
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "inference-gateway-service"
Requires-Dist: nemo-platform[nmp-common] ; extra == "inference-gateway-service"
Requires-Dist: pydantic-settings>=2.8.1; extra == 'inference-gateway-service'
Requires-Dist: pydantic>=2.10.6; extra == 'inference-gateway-service'
Requires-Dist: pyyaml>=6.0.2; extra == 'inference-gateway-service'
Requires-Dist: uvicorn>=0.34.0; extra == 'inference-gateway-service'
Provides-Extra: intake-service
Requires-Dist: clickhouse-connect<1.0,>=0.7; extra == 'intake-service'
Requires-Dist: fastapi<1.0.0,>=0.115.5; extra == 'intake-service'
Requires-Dist: nemo-platform[nmp-common] ; extra == "intake-service"
Requires-Dist: opentelemetry-proto>=1.27.0; extra == 'intake-service'
Requires-Dist: pydantic-settings<3.0.0,>=2.6.1; extra == 'intake-service'
Requires-Dist: pydantic<3.0.0,>=2.9.2; extra == 'intake-service'
Requires-Dist: uvicorn<1.0.0,>=0.22.0; extra == 'intake-service'
Provides-Extra: jobs-service
Requires-Dist: aiosqlite>=0.20.0; extra == 'jobs-service'
Requires-Dist: base58>=2.1.1; extra == 'jobs-service'
Requires-Dist: docker>=7.1.0; extra == 'jobs-service'
Requires-Dist: duckdb<2.0.0,>=1.1.3; extra == 'jobs-service'
Requires-Dist: fastapi>=0.115.8; extra == 'jobs-service'
Requires-Dist: hvac>=2.3.0; extra == 'jobs-service'
Requires-Dist: kubernetes>=30.1.0; extra == 'jobs-service'
Requires-Dist: nemo-platform[nmp-common] ; extra == "jobs-service"
Requires-Dist: pandas>=1.5.3; extra == 'jobs-service'
Requires-Dist: pydantic-settings>=2.8.1; extra == 'jobs-service'
Requires-Dist: pydantic>=2.10.6; extra == 'jobs-service'
Requires-Dist: pyyaml>=6.0.2; extra == 'jobs-service'
Requires-Dist: sqlmodel>=0.0.22; extra == 'jobs-service'
Requires-Dist: uvicorn>=0.34.0; extra == 'jobs-service'
Provides-Extra: models-service
Requires-Dist: docker>=7.1.0; extra == 'models-service'
Requires-Dist: fastapi>=0.115.8; extra == 'models-service'
Requires-Dist: kubernetes>=31.0.0; extra == 'models-service'
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "models-service"
Requires-Dist: nemo-platform[nmp-common] ; extra == "models-service"
Requires-Dist: pydantic-settings>=2.8.1; extra == 'models-service'
Requires-Dist: pydantic>=2.10.6; extra == 'models-service'
Requires-Dist: pyyaml>=6.0.2; extra == 'models-service'
Requires-Dist: sqlmodel>=0.0.22; extra == 'models-service'
Requires-Dist: tenacity>=8.5.0; extra == 'models-service'
Requires-Dist: urllib3>=2.7.0; extra == 'models-service'
Requires-Dist: uvicorn>=0.34.0; extra == 'models-service'
Provides-Extra: nemo-agents-example-calculator
Requires-Dist: nvidia-nat-core<1.9,>=1.8.0; extra == 'nemo-agents-example-calculator'
Requires-Dist: nvidia-nat-langchain<1.9,>=1.8.0; extra == 'nemo-agents-example-calculator'
Provides-Extra: nemo-agents-plugin
Requires-Dist: anthropic>=0.88.0; extra == 'nemo-agents-plugin'
Requires-Dist: boto3<1.40.62,>=1.40.46; extra == 'nemo-agents-plugin'
Requires-Dist: botocore<1.40.62,>=1.40.46; extra == 'nemo-agents-plugin'
Requires-Dist: httpx>=0.27; extra == 'nemo-agents-plugin'
Requires-Dist: langchain-aws==1.1.0; extra == 'nemo-agents-plugin'
Requires-Dist: nemo-platform[nemo-agents-example-calculator] ; extra == "nemo-agents-plugin"
Requires-Dist: nemo-fabric<0.2.0,>=0.1.0a20260717; extra == 'nemo-agents-plugin'
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "nemo-agents-plugin"
Requires-Dist: nvidia-nat-config-optimizer<1.9,>=1.8.0; extra == 'nemo-agents-plugin'
Requires-Dist: nvidia-nat-core<1.9,>=1.8.0; extra == 'nemo-agents-plugin'
Requires-Dist: nvidia-nat-langchain<1.9,>=1.8.0; extra == 'nemo-agents-plugin'
Requires-Dist: pyyaml>=6.0; extra == 'nemo-agents-plugin'
Requires-Dist: rich>=13.7.1; extra == 'nemo-agents-plugin'
Provides-Extra: nemo-anonymizer-plugin
Requires-Dist: nemo-platform[data-designer-nemo] ; extra == "nemo-anonymizer-plugin"
Requires-Dist: data-designer==0.7.0; extra == 'nemo-anonymizer-plugin'
Requires-Dist: fastapi; extra == 'nemo-anonymizer-plugin'
Requires-Dist: httpx>=0.27; extra == 'nemo-anonymizer-plugin'
Requires-Dist: nemo-anonymizer>=0.3.0; extra == 'nemo-anonymizer-plugin'
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "nemo-anonymizer-plugin"
Requires-Dist: pandas; extra == 'nemo-anonymizer-plugin'
Requires-Dist: pyyaml>=6.0.2; extra == 'nemo-anonymizer-plugin'
Provides-Extra: nemo-auditor-plugin
Requires-Dist: nemo-platform[auditor-service] ; extra == "nemo-auditor-plugin"
Requires-Dist: httpx>=0.27; extra == 'nemo-auditor-plugin'
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "nemo-auditor-plugin"
Requires-Dist: pydantic>=2.10.6; extra == 'nemo-auditor-plugin'
Requires-Dist: pyyaml>=6.0.2; extra == 'nemo-auditor-plugin'
Requires-Dist: typer>=0.20.0; extra == 'nemo-auditor-plugin'
Provides-Extra: nemo-data-designer-plugin
Requires-Dist: nemo-platform[data-designer-nemo] ; extra == "nemo-data-designer-plugin"
Requires-Dist: data-designer==0.7.0; extra == 'nemo-data-designer-plugin'
Requires-Dist: fastapi; extra == 'nemo-data-designer-plugin'
Requires-Dist: httpx>=0.27; extra == 'nemo-data-designer-plugin'
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "nemo-data-designer-plugin"
Requires-Dist: pandas; extra == 'nemo-data-designer-plugin'
Provides-Extra: nemo-evaluator-plugin
Requires-Dist: cloudpickle>=3.1.1; extra == 'nemo-evaluator-plugin'
Requires-Dist: nemo-platform[nemo-evaluator-sdk] ; extra == "nemo-evaluator-plugin"
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "nemo-evaluator-plugin"
Requires-Dist: nemo-platform[nemo-platform-sdk] ; extra == "nemo-evaluator-plugin"
Requires-Dist: pydantic>=2.10.6; extra == 'nemo-evaluator-plugin'
Requires-Dist: typer>=0.20.0; extra == 'nemo-evaluator-plugin'
Provides-Extra: nemo-evaluator-sdk
Requires-Dist: jinja2>=3.1.6; extra == 'nemo-evaluator-sdk'
Requires-Dist: jsonpath-ng>=1.7.0; extra == 'nemo-evaluator-sdk'
Requires-Dist: jsonschema>=4.23.0; extra == 'nemo-evaluator-sdk'
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.3; extra == 'nemo-evaluator-sdk'
Requires-Dist: langchain-openai>=1.3.5; extra == 'nemo-evaluator-sdk'
Requires-Dist: nemo-relay<0.5.0,>=0.4.0; extra == 'nemo-evaluator-sdk'
Requires-Dist: openai>=1.61.0; extra == 'nemo-evaluator-sdk'
Requires-Dist: pandas>=1.5.3; extra == 'nemo-evaluator-sdk'
Requires-Dist: pyarrow>=19.0.1; extra == 'nemo-evaluator-sdk'
Requires-Dist: pydantic>=2.10.6; extra == 'nemo-evaluator-sdk'
Requires-Dist: ragas==0.4.3; extra == 'nemo-evaluator-sdk'
Requires-Dist: rouge-score==0.1.2; extra == 'nemo-evaluator-sdk'
Requires-Dist: sacrebleu>=2.5.1; extra == 'nemo-evaluator-sdk'
Provides-Extra: nemo-guardrails-plugin
Requires-Dist: langchain-community<0.4,>=0.3.31; extra == 'nemo-guardrails-plugin'
Requires-Dist: langchain-core>=1.4.9; extra == 'nemo-guardrails-plugin'
Requires-Dist: langchain-openai>=1.3.5; extra == 'nemo-guardrails-plugin'
Requires-Dist: langchain>=1.3.13; extra == 'nemo-guardrails-plugin'
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "nemo-guardrails-plugin"
Requires-Dist: nemoguardrails[tracing]==0.23.0; extra == 'nemo-guardrails-plugin'
Provides-Extra: nemo-platform-plugin
Requires-Dist: anthropic>=0.88.0; extra == 'nemo-platform-plugin'
Requires-Dist: fastapi>=0.115.4; extra == 'nemo-platform-plugin'
Requires-Dist: jsonschema>=4.0.0; extra == 'nemo-platform-plugin'
Requires-Dist: lark>=1.1.0; extra == 'nemo-platform-plugin'
Requires-Dist: nemo-platform[nemo-platform-sdk] ; extra == "nemo-platform-plugin"
Requires-Dist: openai>=1.109.1; extra == 'nemo-platform-plugin'
Requires-Dist: pydantic-settings>=2.8.1; extra == 'nemo-platform-plugin'
Requires-Dist: pydantic>=2.10.3; extra == 'nemo-platform-plugin'
Requires-Dist: pyyaml>=6.0.2; extra == 'nemo-platform-plugin'
Requires-Dist: typer<0.26,>=0.20.0; extra == 'nemo-platform-plugin'
Provides-Extra: nemo-platform-sdk
Requires-Dist: anyio<5,>=4.0.0; extra == 'nemo-platform-sdk'
Requires-Dist: distro<2,>=1.7.0; extra == 'nemo-platform-sdk'
Requires-Dist: docker>=7.0.0; extra == 'nemo-platform-sdk'
Requires-Dist: fsspec>=2023.1.0; extra == 'nemo-platform-sdk'
Requires-Dist: httpx<1,>=0.23.0; extra == 'nemo-platform-sdk'
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "nemo-platform-sdk"
Requires-Dist: ngcsdk>=4.8.2; extra == 'nemo-platform-sdk'
Requires-Dist: nvidia-ml-py>=13.0.0; extra == 'nemo-platform-sdk'
Requires-Dist: openai; extra == 'nemo-platform-sdk'
Requires-Dist: prompt-toolkit>=3.0.0; extra == 'nemo-platform-sdk'
Requires-Dist: psutil>=5.9.0; extra == 'nemo-platform-sdk'
Requires-Dist: pydantic<3,>=2.0.0; extra == 'nemo-platform-sdk'
Requires-Dist: pyyaml>=6.0.0; extra == 'nemo-platform-sdk'
Requires-Dist: requests>=2.31.0; extra == 'nemo-platform-sdk'
Requires-Dist: rich>=13.7.1; extra == 'nemo-platform-sdk'
Requires-Dist: sniffio; extra == 'nemo-platform-sdk'
Requires-Dist: typer>=0.20.0; extra == 'nemo-platform-sdk'
Requires-Dist: typing-extensions<5,>=4.14; extra == 'nemo-platform-sdk'
Provides-Extra: nemo-safe-synthesizer-plugin
Requires-Dist: datasets<=4.3.0,>=3.3.1; extra == 'nemo-safe-synthesizer-plugin'
Requires-Dist: fastapi>=0.115.8; extra == 'nemo-safe-synthesizer-plugin'
Requires-Dist: fsspec>=2024.10.0; extra == 'nemo-safe-synthesizer-plugin'
Requires-Dist: gunicorn>=23.0.0; extra == 'nemo-safe-synthesizer-plugin'
Requires-Dist: httpx>=0.27.2; extra == 'nemo-safe-synthesizer-plugin'
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "nemo-safe-synthesizer-plugin"
Requires-Dist: nemo-safe-synthesizer==0.1.7; extra == 'nemo-safe-synthesizer-plugin'
Requires-Dist: pydantic-settings>=2.2.1; extra == 'nemo-safe-synthesizer-plugin'
Requires-Dist: pydantic[email]>=2.9.2; extra == 'nemo-safe-synthesizer-plugin'
Requires-Dist: python-multipart~=0.0.9; extra == 'nemo-safe-synthesizer-plugin'
Requires-Dist: requests>=2.31.0; extra == 'nemo-safe-synthesizer-plugin'
Requires-Dist: typer>=0.9.0; extra == 'nemo-safe-synthesizer-plugin'
Requires-Dist: uvicorn>=0.32.1; extra == 'nemo-safe-synthesizer-plugin'
Provides-Extra: nemo-switchyard
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "nemo-switchyard"
Requires-Dist: nemo-platform[switchyard-vendored] ; extra == "nemo-switchyard"
Provides-Extra: nmp-common
Requires-Dist: aiofiles>=24.1.0; extra == 'nmp-common'
Requires-Dist: base58>=2.1.1; extra == 'nmp-common'
Requires-Dist: fastapi[standard]>=0.115.4; extra == 'nmp-common'
Requires-Dist: huggingface-hub<2.0.0,>=1.0.1; extra == 'nmp-common'
Requires-Dist: hvac>=2.3.0; extra == 'nmp-common'
Requires-Dist: kubernetes>=30.1.0; extra == 'nmp-common'
Requires-Dist: lark>=1.1.0; extra == 'nmp-common'
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "nmp-common"
Requires-Dist: nemo-platform[nemo-platform-sdk] ; extra == "nmp-common"
Requires-Dist: nvidia-ml-py>=13.0.0; extra == 'nmp-common'
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.38.0; extra == 'nmp-common'
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.38.0; extra == 'nmp-common'
Requires-Dist: opentelemetry-exporter-prometheus>=0.64b0; extra == 'nmp-common'
Requires-Dist: opentelemetry-instrumentation-fastapi>=0.64b0; extra == 'nmp-common'
Requires-Dist: opentelemetry-instrumentation-httpx>=0.64b0; extra == 'nmp-common'
Requires-Dist: opentelemetry-instrumentation-sqlalchemy>=0.64b0; extra == 'nmp-common'
Requires-Dist: opentelemetry-instrumentation-system-metrics>=0.64b0; extra == 'nmp-common'
Requires-Dist: opentelemetry-processor-baggage>=0.64b0; extra == 'nmp-common'
Requires-Dist: opentelemetry-sdk>=1.38.0; extra == 'nmp-common'
Requires-Dist: prometheus-client>=0.23.0; extra == 'nmp-common'
Requires-Dist: prometheus-fastapi-instrumentator>=8.0.2; extra == 'nmp-common'
Requires-Dist: pydantic-settings>=2.8.1; extra == 'nmp-common'
Requires-Dist: pydantic>=2.10.3; extra == 'nmp-common'
Requires-Dist: pyjwt[crypto]>=2.13.0; extra == 'nmp-common'
Requires-Dist: pyyaml>=6.0.2; extra == 'nmp-common'
Requires-Dist: sqlalchemy>=2.0.0; extra == 'nmp-common'
Requires-Dist: structlog>=24.1.0; extra == 'nmp-common'
Provides-Extra: platform-seed-service
Requires-Dist: nemo-platform[nemo-auditor-plugin] ; extra == "platform-seed-service"
Requires-Dist: nemo-platform[auth-service] ; extra == "platform-seed-service"
Requires-Dist: nemo-platform[nmp-common] ; extra == "platform-seed-service"
Requires-Dist: nemo-platform[guardrails-service] ; extra == "platform-seed-service"
Provides-Extra: plugins
Requires-Dist: anthropic>=0.88.0; extra == 'plugins'
Requires-Dist: boto3<1.40.62,>=1.40.46; extra == 'plugins'
Requires-Dist: botocore<1.40.62,>=1.40.46; extra == 'plugins'
Requires-Dist: cloudpickle>=3.1.1; extra == 'plugins'
Requires-Dist: nemo-platform[data-designer-nemo] ; extra == "plugins"
Requires-Dist: data-designer==0.7.0; extra == 'plugins'
Requires-Dist: datasets<=4.3.0,>=3.3.1; extra == 'plugins'
Requires-Dist: fastapi; extra == 'plugins'
Requires-Dist: fastapi>=0.115.8; extra == 'plugins'
Requires-Dist: fsspec>=2024.10.0; extra == 'plugins'
Requires-Dist: nemo-platform[auditor-service] ; extra == "plugins"
Requires-Dist: gunicorn>=23.0.0; extra == 'plugins'
Requires-Dist: httpx>=0.27; extra == 'plugins'
Requires-Dist: httpx>=0.27.2; extra == 'plugins'
Requires-Dist: langchain-aws==1.1.0; extra == 'plugins'
Requires-Dist: langchain-community<0.4,>=0.3.31; extra == 'plugins'
Requires-Dist: langchain-core>=1.4.9; extra == 'plugins'
Requires-Dist: langchain-openai>=1.3.5; extra == 'plugins'
Requires-Dist: langchain>=1.3.13; extra == 'plugins'
Requires-Dist: nemo-platform[nemo-agents-example-calculator] ; extra == "plugins"
Requires-Dist: nemo-anonymizer>=0.3.0; extra == 'plugins'
Requires-Dist: nemo-platform[nemo-evaluator-sdk] ; extra == "plugins"
Requires-Dist: nemo-fabric<0.2.0,>=0.1.0a20260717; extra == 'plugins'
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "plugins"
Requires-Dist: nemo-platform[nemo-platform-sdk] ; extra == "plugins"
Requires-Dist: nemo-safe-synthesizer==0.1.7; extra == 'plugins'
Requires-Dist: nemoguardrails[tracing]==0.23.0; extra == 'plugins'
Requires-Dist: nvidia-nat-config-optimizer<1.9,>=1.8.0; extra == 'plugins'
Requires-Dist: nvidia-nat-core<1.9,>=1.8.0; extra == 'plugins'
Requires-Dist: nvidia-nat-langchain<1.9,>=1.8.0; extra == 'plugins'
Requires-Dist: pandas; extra == 'plugins'
Requires-Dist: pydantic-settings>=2.2.1; extra == 'plugins'
Requires-Dist: pydantic>=2.10.6; extra == 'plugins'
Requires-Dist: pydantic[email]>=2.9.2; extra == 'plugins'
Requires-Dist: python-multipart~=0.0.9; extra == 'plugins'
Requires-Dist: pyyaml>=6.0; extra == 'plugins'
Requires-Dist: pyyaml>=6.0.2; extra == 'plugins'
Requires-Dist: requests>=2.31.0; extra == 'plugins'
Requires-Dist: rich>=13.7.1; extra == 'plugins'
Requires-Dist: nemo-platform[switchyard-vendored] ; extra == "plugins"
Requires-Dist: typer>=0.20.0; extra == 'plugins'
Requires-Dist: typer>=0.9.0; extra == 'plugins'
Requires-Dist: uvicorn>=0.32.1; extra == 'plugins'
Provides-Extra: secrets-service
Requires-Dist: fastapi>=0.115.8; extra == 'secrets-service'
Requires-Dist: nemo-platform[nmp-common] ; extra == "secrets-service"
Requires-Dist: uvicorn>=0.34.0; extra == 'secrets-service'
Provides-Extra: services
Requires-Dist: aioboto3>=15.5.0; extra == 'services'
Requires-Dist: aiohttp>=3.14.1; extra == 'services'
Requires-Dist: aiohttp[speedups]>=3.14.1; extra == 'services'
Requires-Dist: aiosqlite>=0.20.0; extra == 'services'
Requires-Dist: alembic<2.0.0,>=1.10.4; extra == 'services'
Requires-Dist: alembic>=1.13.1; extra == 'services'
Requires-Dist: anthropic>=0.88.0; extra == 'services'
Requires-Dist: anyio>=4.0.0; extra == 'services'
Requires-Dist: asyncpg>=0.31.0; extra == 'services'
Requires-Dist: base58>=2.1.0; extra == 'services'
Requires-Dist: base58>=2.1.1; extra == 'services'
Requires-Dist: boto3<1.40.62,>=1.40.46; extra == 'services'
Requires-Dist: botocore<1.40.62,>=1.40.46; extra == 'services'
Requires-Dist: clickhouse-connect<1.0,>=0.7; extra == 'services'
Requires-Dist: cloudpickle>=3.1.1; extra == 'services'
Requires-Dist: nemo-platform[data-designer-nemo] ; extra == "services"
Requires-Dist: data-designer==0.7.0; extra == 'services'
Requires-Dist: datasets<=4.3.0,>=3.3.1; extra == 'services'
Requires-Dist: docker>=7.1.0; extra == 'services'
Requires-Dist: duckdb<2.0.0,>=1.1.3; extra == 'services'
Requires-Dist: duckdb>=1.1.3; extra == 'services'
Requires-Dist: fastapi; extra == 'services'
Requires-Dist: fastapi<1.0.0,>=0.115.5; extra == 'services'
Requires-Dist: fastapi>=0.100.0; extra == 'services'
Requires-Dist: fastapi>=0.109.0; extra == 'services'
Requires-Dist: fastapi>=0.115.8; extra == 'services'
Requires-Dist: fastapi[standard]>=0.115.4; extra == 'services'
Requires-Dist: fastmcp>=3.2.0; extra == 'services'
Requires-Dist: fsspec>=2024.10.0; extra == 'services'
Requires-Dist: nemo-platform[auditor-service] ; extra == "services"
Requires-Dist: greenlet>=3.0.0; extra == 'services'
Requires-Dist: gunicorn>=23.0.0; extra == 'services'
Requires-Dist: httpx>=0.27; extra == 'services'
Requires-Dist: httpx>=0.27.0; extra == 'services'
Requires-Dist: httpx>=0.27.2; extra == 'services'
Requires-Dist: hvac>=2.3.0; extra == 'services'
Requires-Dist: kubernetes>=30.1.0; extra == 'services'
Requires-Dist: kubernetes>=31.0.0; extra == 'services'
Requires-Dist: langchain-aws==1.1.0; extra == 'services'
Requires-Dist: langchain-community<0.4,>=0.3.31; extra == 'services'
Requires-Dist: langchain-core>=1.4.9; extra == 'services'
Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.4.3; extra == 'services'
Requires-Dist: langchain-openai<2.0.0,>=1.3.5; extra == 'services'
Requires-Dist: langchain-openai>=1.3.5; extra == 'services'
Requires-Dist: langchain>=1.3.13; extra == 'services'
Requires-Dist: lark>=1.1.0; extra == 'services'
Requires-Dist: nemo-platform[nemo-agents-example-calculator] ; extra == "services"
Requires-Dist: nemo-anonymizer>=0.3.0; extra == 'services'
Requires-Dist: nemo-platform[nemo-auditor-plugin] ; extra == "services"
Requires-Dist: nemo-platform[nemo-evaluator-sdk] ; extra == "services"
Requires-Dist: nemo-fabric<0.2.0,>=0.1.0a20260717; extra == 'services'
Requires-Dist: nemo-platform[nemo-platform-plugin] ; extra == "services"
Requires-Dist: nemo-platform[nemo-platform-sdk] ; extra == "services"
Requires-Dist: nemo-safe-synthesizer==0.1.7; extra == 'services'
Requires-Dist: nemoguardrails[tracing]==0.23.0; extra == 'services'
Requires-Dist: ngcsdk>=4.9.10; extra == 'services'
Requires-Dist: nemo-platform[auth-service] ; extra == "services"
Requires-Dist: nemo-platform[nmp-common] ; extra == "services"
Requires-Dist: nemo-platform[guardrails-service] ; extra == "services"
Requires-Dist: nvidia-nat-config-optimizer<1.9,>=1.8.0; extra == 'services'
Requires-Dist: nvidia-nat-core<1.9,>=1.8.0; extra == 'services'
Requires-Dist: nvidia-nat-langchain<1.9,>=1.8.0; extra == 'services'
Requires-Dist: openai>=1.61.0; extra == 'services'
Requires-Dist: opentelemetry-distro>=0.64b0; extra == 'services'
Requires-Dist: opentelemetry-exporter-otlp>=1.22.0; extra == 'services'
Requires-Dist: opentelemetry-instrumentation-fastapi>=0.64b0; extra == 'services'
Requires-Dist: opentelemetry-instrumentation-httpx>=0.64b0; extra == 'services'
Requires-Dist: opentelemetry-instrumentation-requests>=0.64b0; extra == 'services'
Requires-Dist: opentelemetry-proto>=1.27.0; extra == 'services'
Requires-Dist: opentelemetry-proto>=1.28.2; extra == 'services'
Requires-Dist: opentelemetry-sdk<2.0.0,>=1.27.0; extra == 'services'
Requires-Dist: pandas; extra == 'services'
Requires-Dist: pandas>=1.5.3; extra == 'services'
Requires-Dist: psycopg2-binary>=2.9.10; extra == 'services'
Requires-Dist: pydantic-settings<3.0.0,>=2.6.1; extra == 'services'
Requires-Dist: pydantic-settings>=2.0.0; extra == 'services'
Requires-Dist: pydantic-settings>=2.2.1; extra == 'services'
Requires-Dist: pydantic-settings>=2.6.1; extra == 'services'
Requires-Dist: pydantic-settings>=2.8.1; extra == 'services'
Requires-Dist: pydantic<3.0.0,>=2.9.2; extra == 'services'
Requires-Dist: pydantic>=2.0.0; extra == 'services'
Requires-Dist: pydantic>=2.10.3; extra == 'services'
Requires-Dist: pydantic>=2.10.6; extra == 'services'
Requires-Dist: pydantic[email]>=2.9.2; extra == 'services'
Requires-Dist: pyleak>=0.1.0; extra == 'services'
Requires-Dist: python-multipart~=0.0.9; extra == 'services'
Requires-Dist: pyyaml>=6.0; extra == 'services'
Requires-Dist: pyyaml>=6.0.0; extra == 'services'
Requires-Dist: pyyaml>=6.0.2; extra == 'services'
Requires-Dist: requests>=2.31.0; extra == 'services'
Requires-Dist: rich>=13.7.1; extra == 'services'
Requires-Dist: rich>=14.1.0; extra == 'services'
Requires-Dist: sqlalchemy>=2.0.0; extra == 'services'
Requires-Dist: sqlmodel>=0.0.22; extra == 'services'
Requires-Dist: streaming-form-data>=1.19.1; extra == 'services'
Requires-Dist: nemo-platform[switchyard-vendored] ; extra == "services"
Requires-Dist: tenacity>=8.5.0; extra == 'services'
Requires-Dist: typer>=0.20.0; extra == 'services'
Requires-Dist: typer>=0.9.0; extra == 'services'
Requires-Dist: types-aioboto3[s3]>=15.5.0; extra == 'services'
Requires-Dist: urllib3>=2.7.0; extra == 'services'
Requires-Dist: uvicorn<1.0.0,>=0.22.0; extra == 'services'
Requires-Dist: uvicorn>=0.32.1; extra == 'services'
Requires-Dist: uvicorn>=0.34.0; extra == 'services'
Requires-Dist: uvicorn[standard]>=0.12.0; extra == 'services'
Requires-Dist: uvicorn[standard]>=0.23.0; extra == 'services'
Requires-Dist: wasmtime>=20.0.0; extra == 'services'
Requires-Dist: yara-python==4.5.1; extra == 'services'
Provides-Extra: studio-service
Requires-Dist: fastapi[standard]>=0.115.4; extra == 'studio-service'
Requires-Dist: nemo-platform[nmp-common] ; extra == "studio-service"
Requires-Dist: uvicorn[standard]>=0.12.0; extra == 'studio-service'
Provides-Extra: switchyard-vendored
Requires-Dist: anthropic<1.0,>=0.99.0; extra == 'switchyard-vendored'
Requires-Dist: httpx<1.0,>=0.28.1; extra == 'switchyard-vendored'
Requires-Dist: openai<3.0,>=2.34.0; extra == 'switchyard-vendored'
Requires-Dist: pydantic<3.0,>=2.13.3; extra == 'switchyard-vendored'
Description-Content-Type: text/markdown

# NeMo Platform

[![License](https://img.shields.io/badge/license-Apache_2.0-D22128?style=flat-square)](https://github.com/NVIDIA-NeMo/nemo-platform/blob/main/LICENSE)
[![Python](https://img.shields.io/badge/python-3.11--3.14-3776AB?style=flat-square&logo=python&logoColor=white)](https://www.python.org/)
[![Docs](https://img.shields.io/static/v1?label=docs&message=docs.nvidia.com%2Fnemo-platform&color=76B900&style=flat-square&logo=readthedocs&logoColor=white)](https://docs.nvidia.com/nemo-platform)

Make the agents you ship faster, more accurate, and safer.

NeMo Platform brings NVIDIA NeMo libraries together under one CLI, Python SDK, and web UI. Hardening, evaluation, and tuning for the agents you put in production.

## What's here today

- **Secure agents.** Guardrails (content safety, jailbreak detection, PII redaction), Auditor (red-teaming via garak), Anonymizer (PII handling for training data).
- **Evaluate agents.** LLM-as-judge, deterministic, agentic, and RAG benchmarks. Harbor-backed eval suites for regression testing.
- **Tune agents.** Skill optimization, prompt and hyperparameter tuning, Switchyard model routing.
- **Build agents.** NVIDIA NeMo Agent Toolkit (NAT) for LangGraph-based agents. Shared infrastructure: Inference Gateway, Secrets, Files, Entity Store, Jobs.
- **Generate synthetic data.** Generate synthetic data for training or evaluation purposes using Data Designer.
- **NeMo Studio (alpha).** Browser UI for chat, monitoring, and reviewing optimization suggestions. Studio's agent-focused features are still a work in progress; the CLI is the primary surface today.

## Install

**Prerequisites:** Python 3.11–3.14 and an API key for an inference provider (NVIDIA Build, OpenAI, Anthropic, Google Gemini, or a local Ollama instance).

The `nemo-platform` distribution is a convenience wrapper that bundles the SDK, shared runtime packages, default first-party plugins, and platform services into a single wheel. Install just the SDK and CLI, or install everything needed to run the platform locally:

```bash
# SDK + CLI only
pip install nemo-platform

# SDK + CLI + all platform services and default plugins (recommended)
pip install "nemo-platform[all]"
```

On Python 3.14, prefix the `nemo-platform[all]` install with
`PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1` while the transitive `litellm` Rust
extension catches up to Python 3.14:

```bash
PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 pip install "nemo-platform[all]"
```

Then bring up the platform:

```bash
nemo setup
```

`nemo setup` starts local services, registers your LLM provider, discovers available models, installs agent skills, and (optionally) deploys a sample agent.

Verify:

```bash
nemo services status
```

The recommended developer setup is to clone the repo and use `make bootstrap` instead of installing from PyPI — see the [setup playbook](https://github.com/NVIDIA-NeMo/nemo-platform/blob/main/SETUP.md) for the full walkthrough, including local data dir, DB reset, and troubleshooting.

## Where to go next

After `nemo setup` completes, the CLI prompts you to pick one of two paths. The same two paths are the recommended starting points if you came in via PyPI:

- **Build and optimize agents.** Open a coding agent session inside your agent's project directory and ask: _"Build and optimize an agent using NeMo Platform."_ The shipped skills will scaffold the agent, deploy it, run evaluations, suggest optimizations, and add guardrails on request.
- **Explore the platform.** From any coding agent session, ask: _"What can I do with NeMo Platform?"_ to get a guided tour of the capabilities surfaced through skills.

NeMo skills work with Claude Code, Codex, Cursor, OpenCode, and other coding agents. Install or refresh them with `nemo skills install --agent <agent>`, for example:

```bash
nemo skills install --agent claude
```

## Operating the platform

A few useful CLI commands once setup completes:

```bash
nemo --help                # All commands
nemo models list           # Available models
nemo services status       # Platform health
nemo skills list           # Skills installed on the platform
```

Every capability is also available via REST API. Model inference uses the model IDs returned from `nemo models list` and is available at:

```text
http://localhost:8080/apis/inference-gateway/v2/workspaces/default/openai/-/v1/chat/completions
```

## Links

- **Source:** https://github.com/NVIDIA-NeMo/nemo-platform
- **Documentation:** https://docs.nvidia.com/nemo-platform/
- **Setup playbook:** https://github.com/NVIDIA-NeMo/nemo-platform/blob/main/SETUP.md
- **CLI reference:** https://github.com/NVIDIA-NeMo/nemo-platform/blob/main/docs/cli/index.md
- **API reference:** https://github.com/NVIDIA-NeMo/nemo-platform/blob/main/docs/api/index.md
- **Issue tracker:** https://github.com/NVIDIA-NeMo/nemo-platform/issues

## License

NeMo Platform is licensed under the [Apache License 2.0](https://github.com/NVIDIA-NeMo/nemo-platform/blob/main/LICENSE). Third-party open-source dependencies have their own licenses; review them before use.
