Workspace dependencies
Workspace dependencies allow you to manage dependencies centrally at the workspace level. Create shared dependency files that multiple scripts can reference, giving you control over dependency resolution and enabling consistent environments across your workspace.
Quick start
Section titled “Quick start”- Create dependency files in workspace settings under
Dependencies - Reference them in scripts using annotations like
# requirements: myfile
Dependency files location
Section titled “Dependency files location”Locally all dependency files are stored under /dependencies in your workspace:
/dependencies/├── ml.requirements.in # Named Python dependencies├── api.package.json # Named TypeScript dependencies├── web.composer.json # Named PHP dependencies├── requirements.in # Python default (requirements mode)├── extra.requirements.in # Python default (extra mode)└── package.json # TypeScript defaultNaming rules:
- Named files:
<name>.<extension>(e.g.,ml.requirements.in) - Unnamed defaults:
<extension>orextra.<extension> - Cannot use
defaultas a filename - One unnamed default per language (either standard OR
extra.form)
Using dependency files in scripts
Section titled “Using dependency files in scripts”Requirements mode (explicit dependencies)
Section titled “Requirements mode (explicit dependencies)”Disables import inference, uses only specified files:
# requirements: mlimport pandas as pdimport requestsdef main(): return "Uses only ml.requirements.in"// package_json: frontendimport axios from 'axios';import lodash from 'lodash';export async function main() { return "Uses only frontend.package.json";}Including workspace defaults
Section titled “Including workspace defaults”Use default token to include unnamed default files:
# requirements: default# Includes /dependencies/requirements.in// package_json: default// Includes /dependencies/package.jsonSupported languages and features
Section titled “Supported languages and features”| Language | Syntax | Extra implicit | Manual implicit | Manual explicit | Extra explicit |
|---|---|---|---|---|---|
| Python | # (extra_)requirements: | ❌ | ✅ | one external or less or inline | inline only |
| TypeScript (Bun) | // (extra_)package_json: | ❌ | ✅ | one external or less | ❌ |
| PHP | // (extra_)composer_json: | ❌ | ✅ | one external or less | ❌ |
| Go | // (extra_)go_mod: | ❌ | ❌ | ❌ | ❌ |
| PowerShell | # (extra_)psd1: | ❌ | ❌ | ❌ | ❌ |
Setting up workspace dependencies
Section titled “Setting up workspace dependencies”Requires workspace admin permissions.
- Go to workspace settings → Dependencies
- Create new dependencies files
Creating dependency files
Section titled “Creating dependency files”Python example (ml.requirements.in):
pandas>=1.5.0numpy>=1.21.0scikit-learn==1.1.2matplotlib>=3.5.0TypeScript example (api.package.json):
{ "dependencies": { "axios": "^0.27.2", "lodash": "^4.17.21", "orvanta-client": "^1.147.3" }}PHP example (web.composer.json):
{ "require": { "guzzlehttp/guzzle": "^7.4", "monolog/monolog": "^2.8" }}Setting workspace defaults
Section titled “Setting workspace defaults”Choose default behavior for scripts without annotations:
Requirements mode default: Creates /dependencies/requirements.in
- Scripts without annotations use this file only
- Import inference disabled by default
Advanced usage
Section titled “Advanced usage”Opting out of defaults
Section titled “Opting out of defaults”# requirements:# Script ignores workspace defaultsimport pandas as pd # Must be available in environmentdef main(): return "No workspace dependencies"CLI usage
Section titled “CLI usage”Sync dependency files
Section titled “Sync dependency files”# Pull all workspace content including dependenciesorvanta sync pull# Push dependency changesorvanta sync pushGenerate lockfiles
Section titled “Generate lockfiles”# Create lockfile using workspace dependenciesorvanta generate-metadata my_script.pyManage dependencies
Section titled “Manage dependencies”# List available dependency filesls dependencies# View dependency file contentcat dependencies/frontend.package.jsonVersioning and deployment
Section titled “Versioning and deployment”- Dependency files are versioned like scripts
- Lockfiles record specific dependency file versions
- Updating dependency files triggers redeployment of dependent scripts
Common patterns
Section titled “Common patterns”Team-based dependencies
Section titled “Team-based dependencies”/dependencies/├── frontend.package.json # Frontend team deps├── backend.package.json # Backend team deps├── data.requirements.in # Data team deps└── shared.requirements.in # Common dependenciesEnvironment-based
Section titled “Environment-based”/dependencies/├── prod.requirements.in # Production-ready versions├── dev.requirements.in # Development dependencies└── test.requirements.in # Testing utilitiesFeature-based
Section titled “Feature-based”/dependencies/├── ml.requirements.in # Machine learning├── api.requirements.in # API integrations├── ui.package.json # UI components└── data.requirements.in # Data processingTroubleshooting
Section titled “Troubleshooting”Missing dependencies
Section titled “Missing dependencies”- Check annotation syntax:
# requirements: filename - Verify file exists in workspace
/dependencies - Ensure file contains required packages
Annotation conflicts
Section titled “Annotation conflicts”- Use either
# requirements:OR# extra_requirements:, not both # requirements:takes precedence if both present
CLI problems
Section titled “CLI problems”- Upgrade to latest Orvanta CLI
- Ensure admin permissions for dependency management
- Check dependency file format validity
Import errors
Section titled “Import errors”- Requirements mode disables import inference
- Add missing packages to dependency files
- Consider switching to extra mode if you want inference + workspace deps
For debugging, generate and inspect lockfiles:
orvanta script generate-metadata script_pathcat script_path.lock