Let a coding agent wire it up
The integration logic ships as a cross-agent skill bundle. Install it into Claude Code, Cursor, Codex or 50-odd other agents, then ask for /axonpush-integrate.
Wiring an SDK into an existing project is detection, credentials, provisioning and a handful of edits in the right places. Your coding agent is already good at that, and it is already sitting in your repo. axonpush ships the instructions rather than a bespoke CLI.
The instructions are axonpush/skills, a
bundle of Markdown skills installable into Claude Code, Cursor, Codex,
OpenCode, Cline, GitHub Copilot, Windsurf, Gemini and 40-plus other agents via
skills.sh.
Install the skills
npx skills add axonpush/skillsInside Claude Code, install it as a plugin instead. It is two steps, Claude Code requires the marketplace before the plugin:
/plugin marketplace add axonpush/skills
/plugin install axonpush@axonpush-plugins/plugin install axonpush/skills on its own is not valid Claude Code plugin
syntax and will not work. Add the marketplace first.
Then ask your agent for /axonpush-integrate, or in a chat-style host, “run
the axonpush-integrate skill”.
Or use the launcher
npx @axonpush/wizardA 41-line shim, kept because the one-liner is on the README, the marketing site and a year of shell history. It:
- Runs
npx -y skills add axonpush/skills. - Probes for
claude,cursorandcodex, in that order, and opens the first one it finds, interactively. - Prints the instruction to type
/axonpush-integrateyourself.
It deliberately does not pre-seed the slash command: doing that runs it once and exits, which kills the back-and-forth the skill needs.
Two things the launcher does not do. It only knows those three binaries, so on
any other agent it installs the skills and prints instructions rather than
opening anything. And its probe uses which, so on a plain Windows shell
without a POSIX layer it will fall through to the printed instructions.
--local <path> installs from a local checkout instead of GitHub, for working
on the skills themselves.
What the integrate skill does
Detect
Scans pyproject.toml, requirements.txt, package.json and source imports
for LangChain, OpenAI Agents, CrewAI, Anthropic, LlamaIndex, Mastra, Vercel AI
SDK, Google ADK and the rest, plus your logging libraries. It reports a
language of python, typescript, both or unknown, there is no C#
branch.
Let you pick, possibly more than one
This is the part the old docs got wrong. You are not forced to choose a single framework. Picking an agent framework and a log forwarder is the normal case; picking several frameworks is supported too.
Get credentials
Three paths, tried in this order:
- Already configured. If
AXONPUSH_API_KEYandAXONPUSH_TENANT_IDare already in the environment, login is skipped entirely. - MCP. If an axonpush MCP server exposing
provision_appis connected, the skill calls it directly and gets back a one-time ingest key. No browser. - Browser. Otherwise, browser auth. A manual
paste-a-key fallback and a self-host
AXONPUSH_BASE_URLpath are both available.
Provision
Creates an app and one channel per integration type rather than a single
catch-all, agent-events, app-logs, otel-traces, webhooks-in, falling
back to default-channel. App and channel names must be at least five
characters.
Wire it in
Installs the SDK, writes credentials to .env.local if that file exists and
.env otherwise, and adds the integration code to your entry point. Existing
code is not removed, only axonpush code is added.
Verify
Publishes a real test event, then reads it back, retrying once after three
seconds, before declaring success, and links you to the channel in the
dashboard. When credentials came from MCP the read-back goes through
search_events, because MCP-provisioned keys are publish-only.
Capture mode decides what content you see
The wiring defaults to metadata_only content capture, which is safest but
carries no prompt or response text, so a trace shows the shape of a run but not
what was said. If you want to see content on your traces, tell the agent to set
AXONPUSH_CONTENT_CAPTURE=redacted (content kept, secret-shaped keys masked, and
redacted again by your org telemetry policy). See
Python and TypeScript
capture modes.
What lands in your .env
| Variable | Written when |
|---|---|
AXONPUSH_API_KEY | always |
AXONPUSH_TENANT_ID | always |
AXONPUSH_APP_ID | always |
AXONPUSH_CHANNEL_ID | always, the primary channel |
AXONPUSH_CHANNELS | when more than one channel was created, as name:id,name:id |
AXONPUSH_ENVIRONMENT | MCP path only |
AXONPUSH_BASE_URL | self-host only; defaults to https://api.axonpush.xyz |
Both SDKs read all of these, so a client constructed with no arguments picks everything up. See Handle errors and rate limits for the full variable list.
.NET is not covered
The skills detect Python and TypeScript only. There is no Semantic Kernel or C# skill, and the detector has no C# branch. Install the .NET packages by hand:
dotnet add package AxonPush.SemanticKernelSee the .NET SDK reference.
The skills stay current on their own
Every framework sub-skill fetches the matching section of the live SDK README at
run time, and falls back to the static code in its SKILL.md when it cannot.
The wiring the agent writes tracks the SDK rather than the version of the skill
bundle you happen to have installed.
Supported frameworks
All 23 sub-skills, agent frameworks, OpenTelemetry, and the six log forwarders.
Browser authentication
How the local callback listener works, and what to do when it cannot run.
Source
- Skill bundle: github.com/axonpush/skills
- Universal installer: skills.sh
- Launcher shim: github.com/axonpush/wizard
- SDKs: github.com/axonpush/sdks
Start here
Get your first agent trace into axonpush. Pick the way in that your stack already speaks, an SDK import, an OpenTelemetry collector, or a Sentry DSN you already have.
Browser authentication
How the integrate skill gets an API key without your copying one, the local callback listener, its two backends, and the three fallbacks when it cannot run.