Install agent
Stand up a new agent — or wire an existing one — straight from a project. The Install agent wizard points at a git repository and generates everything the agent needs to ship and report: a CI/CD pipeline, a Dockerfile, a Cloud Foundry manifest, and the telemetry wiring that makes the agent report back to this Boidra Platform. Then it either hands you the files or pushes them to the repo as a pull request.
The result: a project is where a team both provisions its agents and observes them. An installed agent is immediately a scoped member of the project, so it shows up in that project's Summary and Traces the moment it starts reporting.
Where to find it
Open Projects in the sidebar, then click Install agent on any project card. The wizard walks through five steps.
The five steps
- Type — New agent scaffolds an instrumented Python skeleton; Existing agent assumes your code exists and only adds deploy + CI + telemetry wiring.
- Repo — pick GitHub (Actions) or Azure DevOps (Pipelines), paste the repository URL, and choose a container registry (GHCR or Azure CR).
- Deploy & telemetry — the agent's telemetry name (also added to the project's scope), the Cloud Foundry app name and memory, the resource group, and the OTLP endpoint — which is pre-filled with this dashboard so the agent auto-reports here.
- Review — preview every generated file before anything leaves the wizard.
- Deliver — hand-off or push (see below).
What gets generated
Every install produces:
- CI/CD pipeline —
.github/workflows/deploy.yml(GitHub) orazure-pipelines.yml(Azure): build a Docker image → push it to the registry →cf pushto SAP BTP. Secrets are referenced as named variables only (CF_API,CF_USERNAME, …) — never filled in. You set them in GitHub/Azure. Dockerfile— a Python-slim container image.manifest.yml— the Cloud Foundry manifest, withOTEL_EXPORTER_OTLP_ENDPOINTbaked in (pointing at this Boidra Platform), so a deployed agent reports automatically..env.example— the same telemetry variables for local runs.
A new agent also gets an instrumented skeleton — otel_setup.py (OpenTelemetry GenAI span helpers), an agent.py with the invoke_agent → chat → execute_tool span shape the dashboard renders, requirements.txt, and a README.md. An existing agent gets otel_setup.py plus a BOIDTELEMETRY.md instrumentation guide instead of the skeleton — reporting without rewriting your agent.
Delivering the files
The final step offers two paths:
- Hand-off (no credentials). Download the whole bundle as a
.zip, or copy / download agit applypatch that adds every file at once. Nothing is pushed; you add the files yourself. This is the safe default and needs no token. - Push to repo. Enter a personal access token and Boidra Platform opens a pull request on a new branch (
add-boidtelemetry-agent) by default — or commits straight to the default branch if you prefer.
Your token is used once and never stored
The push path sends your PAT directly from your browser to the GitHub / Azure DevOps API — the dashboard backend never sees it. The token is held in memory only for the duration of the push: it is never written to app-state, the database, or logs, and it's cleared from the form as soon as the push completes. Use a short-lived, minimally-scoped token (repo contents + pull requests). For anything beyond a self-organizing team tool, prefer OAuth or an org-wide app — those are on the roadmap.
After installing
Finishing records the agent on the project (repo, platform, app name, telemetry endpoint) and adds it to the project's scope. The project card lists its installed agents with a link back to the repo, and the agent appears in that project's Summary and Traces once traces arrive.
Scope & limits (v1)
- Python agents, Cloud Foundry (
cf push) deploy target. - Targets an existing repository (repo creation is not part of the wizard yet).
- Generated pipelines are starting points — they assume a Docker build and a CF target; tune the specifics for your setup.
- Boidra Platform generates and (optionally) pushes the files; it does not trigger or monitor pipeline runs — those happen in your repo.
