Skip to content

axonis-client — Python Developer SDK

Status: Implemented — repo (atlasfl-client/) ships as PyPI package axonis-client v1.5.2; import root remains athena for backward compatibility. Rename complete. Re-export path through axonis-core is partial: the SDK currently maintains its own athena/core/{rest_client,mcp_client}.py rather than re-exporting from axonis.http.client / axonis.mcp.client (per the 2026-05-07 axonis-core restructure). Full re-export migration is open work. Package: axonis-client (PyPI: axonis-client, import name: athena) Depends on: platform.axonis-core Milestone: P2 (after axonis-core is published)

Purpose

axonis-client is the Python SDK for developers building against the Axonis platform. It provides: 1. Authenticated REST client for all services 2. Userspace CRUD classes for all domain objects (via axonis-core) 3. Optional MCP client for agentic interactions 4. Service-aware routing (knows which service owns which objects)

Formerly atlasfl-client. Renamed to axonis-client to reflect the platform rebrand.

Import Name

The package installs as axonis-client but imports as athena for backward compatibility:

from athena.core.rest_client import Client
from athena.userspace.dataset import DataSet
from athena.core.mcp_client import MCPClient

Package Structure

axonis-client/
  athena/
    __init__.py                  # Client initialization, get_client()
    core/
      __init__.py
      rest_client.py             # RestClient (OAuth2 + requests)
      mcp_client.py              # MCPClient (async, Bearer token auth)
    userspace/
      __init__.py                # Re-exports all classes from axonis-core
    schema.py                    # Re-exports from axonis-core
    logger.py                    # Re-exports from axonis-core
    exceptions.py                # Re-exports from axonis-core
    misc.py                      # Re-exports from axonis-core
    constants.py
    utils.py

The userspace/ module re-exports directly from axonis.userspace:

# athena/userspace/__init__.py
from axonis.userspace import *
from axonis.userspace import __all__

Dependencies

[project]
dependencies = [
    "axonis-core",
    "requests>=2.28.1",
    "Authlib>=0.15.5",
]

[project.optional-dependencies]
mcp = ["mcp>=1.26.0; python_version>='3.10'",
       "httpx>=0.27.0; python_version>='3.10'",
       "anyio>=4.0; python_version>='3.10'"]

No ML dependencies. No heavy packages.

Service-Aware Routing

The REST client supports routing to different services based on the target type:

from athena.core.rest_client import Client

client = Client(
    username="analyst",
    password="...",
    domain="development.axonis.ai",
    services={
        "fusion": "https://development.axonis.ai/parallax",
        "intelligence": "https://development.axonis.ai/cortex",
        "userspace": "https://development.axonis.ai/unified-dataspace",
        "prism": "https://development.axonis.ai/prism",
    }
)

# Automatically routes to the correct service:
from athena.userspace.fusion import Lens
lens = Lens()
lens.read()  # → GET https://development.axonis.ai/parallax/api/v2/lens

The routing is based on Schema.INDICES — the ES index name maps to a service: - fusion index → parallax service - intelligence index → cortex service - userspace index → unified-dataspace service - alerts index → sentinel service

If no services dict is provided, all requests go to the single domain URL (backward compatible).

MCP Client

from athena.core.mcp_client import MCPClient

# Connect to oracle (aggregated tools)
async with MCPClient("https://development.axonis.ai/oracle/agentspace", token="...") as client:
    tools = await client.list_tools()
    result = await client.call_tool("fusion_run_start", {...})

# Or connect to a specific service directly
async with MCPClient("https://development.axonis.ai/parallax/agentspace", token="...") as client:
    result = await client.call_tool("fusion_run_start", {...})

Migration from atlasfl-client

  1. ✓ Rename package from atlasfl-client to axonis-client (repo dir is still atlasfl-client/; PyPI package and pyproject.toml name are axonis-client).
  2. Open: Replace local UDS/schema/rest_client/mcp_client with re-exports from axonis-core. After the 2026-05-07 restructure the upstream paths are:
  3. axonis.http.client (not axonis.rest_client)
  4. axonis.mcp.client (not axonis.mcp_client)
  5. axonis.uds, axonis.schema, axonis.exceptions, axonis.logger The SDK should turn athena/core/{rest_client,mcp_client}.py, athena/{schema,logger,exceptions}.py, and the athena/uds/ shim into thin re-export modules pointing at these new paths.
  6. ✓ Add services parameter to RestClient for multi-service routing.
  7. ✓ Keep athena as the import name.

Existing code (from athena.userspace.dataset import DataSet) continues to work unchanged.

Test Expectations

  • REST client auth tests (password, client_credentials, token refresh)
  • Service routing tests (verify correct URL for each target type)
  • MCP client connection + tool call tests
  • Backward compatibility tests (single-domain mode)
  • All userspace CRUD roundtrip tests (mock HTTP)

Depends on: platform.axonis-core