CLI
Source files
For compiled languages: Go, Rust, Java, Kotlin, Swift. Their stack frames already carry the original file and line, but the production binary ships without the source, so the dashboard has nothing to show at each frame until you upload it.
octri monitoring sources upload [paths...] [options]paths defaults to the current directory and is scanned recursively for source files.
Typical use
octri monitoring sources upload ./src \
--url https://monitoring.example.com \
--environment "$MONITORING_ENVIRONMENT" \
--release "$GIT_SHA"With the environment variables set, this collapses to:
octri monitoring sources upload ./srcSigned in with octri auth login, the CLI resolves the connection from the selected project and you can drop the credentials entirely.
Why this differs from source maps
A minified JavaScript frame says a.b.c:1:4823 and needs a map to become meaningful. A Go panic already says checkout.go:214. The frame is fine; what's missing is checkout.go itself, because your binary doesn't carry it.
sources upload sends the code so the dashboard can show it next to the frame.
Upload your source, not your repository
octri monitoring sources upload . from a repo root walks everything: fixtures, vendored dependencies, test data, and whatever else is lying around. Point it at the directory your code actually lives in.
octri monitoring sources upload ./src ./internalMultiple paths are fine.
What gets uploaded
This uploads source files. A .env committed next to your code, a fixture with real customer records, a key checked in years ago: if it's under the path you point at, it's uploaded.
Scope the paths deliberately, and don't point this at a directory you haven't looked in lately.
Verify first
octri monitoring sources upload ./src --dry-runWould upload 128 source file(s) · release 9f2c1ab
src/main.go
src/checkout.go
…The dry run lists the files, which is also the fastest way to notice you're about to upload something you shouldn't. Long lists are truncated in the output.
octri monitoring sources list --release 9f2c1ab shows what the service holds afterwards.
Release matching
Same rule as everywhere: the release here must equal what your SDK reports at runtime. It defaults to git rev-parse HEAD. See Symbolication.