axonpush
Getting started

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/skills

Inside 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/wizard

A 41-line shim, kept because the one-liner is on the README, the marketing site and a year of shell history. It:

  1. Runs npx -y skills add axonpush/skills.
  2. Probes for claude, cursor and codex, in that order, and opens the first one it finds, interactively.
  3. Prints the instruction to type /axonpush-integrate yourself.

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_KEY and AXONPUSH_TENANT_ID are already in the environment, login is skipped entirely.
  • MCP. If an axonpush MCP server exposing provision_app is 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_URL path 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

VariableWritten when
AXONPUSH_API_KEYalways
AXONPUSH_TENANT_IDalways
AXONPUSH_APP_IDalways
AXONPUSH_CHANNEL_IDalways, the primary channel
AXONPUSH_CHANNELSwhen more than one channel was created, as name:id,name:id
AXONPUSH_ENVIRONMENTMCP path only
AXONPUSH_BASE_URLself-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.SemanticKernel

See 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.

Source