Manage F5 Distributed Cloud (F5 XC) resources directly from Visual Studio Code.
- Profile Management: Configure multiple F5 XC tenant connections with secure credential storage
- Resource Explorer: Browse namespaces, resource types, and individual resources in a tree view
- CRUD Operations: Create, view, edit, and delete F5 XC resources
- JSON Validation: Built-in schema validation for resource configurations
- Diff Support: Compare local configurations with remote resources
- Authentication: Support for API Token and P12 certificate authentication
- Open VS Code
- Go to Extensions (
Ctrl+Shift+X/Cmd+Shift+X) - Search for "F5 Distributed Cloud Tools"
- Click Install
- Download the
.vsixfile from the releases page - Open VS Code
- Go to Extensions
- Click the
...menu and select "Install from VSIX..." - Select the downloaded file
- Open the F5 XC sidebar (click the F5 icon in the activity bar)
- Click the
+button in the Profiles section - Enter your profile details:
- Name: A friendly name for this connection
- API URL: Your F5 XC console URL (e.g.,
https://tenant.console.ves.volterra.io) - Auth Type: Choose between API Token or P12 Certificate
- Enter your credentials when prompted
Once a profile is configured and set as active:
- The Resources tree view will show available namespaces
- Expand a namespace to see resource categories
- Expand a category to see resource types
- Expand a resource type to see individual resources
Right-click on any resource to:
- View: Open the resource configuration in a new editor
- Edit: Modify the resource configuration
- Delete: Remove the resource (with confirmation)
- Compare with Remote: See differences between local and remote versions
Access settings via File > Preferences > Settings and search for "F5 XC":
| Setting | Description | Default |
|---|---|---|
f5xc.logLevel |
Log level (debug, info, warn, error) | info |
f5xc.defaultNamespace |
Default namespace for new resources | default |
f5xc.confirmDelete |
Show confirmation before deleting | true |
f5xc.autoRefreshInterval |
Auto-refresh interval in seconds (0 to disable) | 0 |
| Command | Windows/Linux | macOS |
|---|---|---|
| Apply Configuration | Ctrl+Shift+A |
Cmd+Shift+A |
| Refresh Explorer | Ctrl+Shift+R |
Cmd+Shift+R |
The extension supports 236 F5 XC resource types organized by category:
- Load Balancing: HTTP/TCP/UDP Load Balancers, Origin Pools, Health Checks
- Security: App Firewalls, Service Policies, Rate Limiters, WAF Exclusions
- Networking: Virtual Networks, Network Connectors, Network Policies
- Sites: AWS VPC, Azure VNET, GCP VPC, App Stack, SecureMesh
- DNS: DNS Zones, DNS Load Balancers, DNS LB Pools
- IAM: Namespaces, Users, Roles, API Credentials
- Observability: Alert Policies, Alert Receivers, Log Receivers
-
Node.js 24.x - Required for development and building
-
The repository includes
.nvmrcfile for automatic version management -
Use nvm to easily switch Node versions:
nvm use # Automatically reads .nvmrc and switches to Node 24
-
-
VS Code 1.85.0 or higher
For reproducible builds that match the CI/CD pipeline, see Build Reproduction Guide.
# Clone the repository
git clone https://github.com/robinmordasiewicz/vscode-f5xc-tools.git
cd vscode-f5xc-tools
# Ensure Node 24 is active (reads .nvmrc)
nvm use
# Install dependencies (use npm ci for deterministic builds)
npm ci
# Compile the extension
npm run compile# Run unit tests
npm test
# Run unit tests with coverage
npm run test:coverage
# Run integration tests (requires VS Code)
npm run test:integration
# Run all tests
npm run test:allnpm run compile # Build with webpack
npm run watch # Watch mode for development
npm run package # Production build
npm run build:ci-local # CI/CD-aligned build (see BUILD_REPRODUCTION.md)
npm run lint # Run ESLint
npm run lint:fix # Auto-fix ESLint issues
npm run typecheck # TypeScript type checking
npm run format # Format code with PrettierPress F5 in VS Code to launch the Extension Development Host with the
extension loaded.
The healthcheck form (src/providers/healthcheckFormProvider.ts) must maintain
alignment with API spec recommendations to ensure consistency across all
resource creation methods (form-based, JSON editing, inline completions).
Validation: Run npm run validate:forms before committing changes
Source of Truth:
- API Specs:
docs/specifications/api/domains/virtual.json - Generated Types:
src/generated/resourceTypesBase.ts - Field Metadata:
x-f5xc-recommended-valueannotations
Validation Process:
# Validate form defaults match API spec recommendations
npm run validate:forms
# This runs automatically during pretest
npm testIf form defaults need to diverge from specs:
- Document the reason in code comments with clear justification
- Add exception to validation script (
scripts/validate-form-defaults.ts) - Consider filing issue in upstream spec repo if spec is incorrect
Contributions are welcome! Please read our contributing guidelines before submitting pull requests.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.