Skip to main content

Python SDK for Assetto Corsa Evo log parsing and shared-memory telemetry.

Project description

acevo-sdk

acevo-sdk is a Python SDK for Assetto Corsa Evo log parsing and shared-memory telemetry.

It packages the reusable telemetry foundation extracted from SimLaps so other projects can build on ACE data without reimplementing log parsing, binary decoding, or shared-memory capture.

This is an independent community SDK. It is not official Kunos Simulazioni or Assetto Corsa software.

Install

pip install acevo-sdk

For local development from this repository:

python -m pip install -e ".[dev]"

What It Includes

  • ACE log parsing for sessions, laps, sectors, validity, player identity, car, track, tyre compound, setup notes, and fuel signals.
  • Live shared-memory capture for ACE physics, graphics, and static regions on Windows.
  • Decoders for captured shared-memory bytes.
  • Reusable dataclasses for laps, sessions, stints, frames, capture metadata, and shared session state.
  • Track catalog helpers and bundled track catalog data.

What It Does Not Include

  • SimLaps API submission.
  • Discord notifications.
  • Personal-best cache.
  • Desktop UI.
  • Signing, anti-cheat, or server security helpers.
  • HTML telemetry reports, AI prompts, or the larger telemetry analyzer pipeline.

Those belong in downstream applications for now.

Use Cases

  • Build lap-tracking apps like SimLaps that parse ACE logs, detect sessions, laps, sectors, validity, and send structured data to a custom backend.
  • Capture live shared-memory telemetry for dashboards, overlays, stream widgets, engineering tools, or race-control utilities.
  • Decode saved raw shared-memory dumps offline for reverse engineering, debugging, analysis notebooks, or regression tests.
  • Build coaching tools that consume lap, sector, car, track, fuel, tyre, and telemetry signals, while keeping AI/report generation in the downstream app.
  • Create personal data pipelines that export ACE session data to JSONL, SQLite, DuckDB, Parquet, spreadsheets, or analytics services.
  • Build test fixtures and validation tools for ACE telemetry integrations without each project reimplementing log parsing and binary decoding.
  • Prototype future setup/tuning tools on top of stable decoded telemetry and catalog APIs.

Parse Logs

import asyncio
from acevo import LogParser


async def main():
    parser = LogParser()
    sessions = await parser.parse_file()
    for session in sessions:
        print(session.track, session.car, session.best_lap)


asyncio.run(main())

You can pass a specific log file or directory:

parser = LogParser(r"C:\Users\you\Saved Games\ACE\Logs")

Capture Shared Memory

Live shared-memory capture is Windows-only because ACE exposes telemetry through Win32 file mappings.

import asyncio
from acevo import TelemetryCapture


async def main():
    capture = TelemetryCapture(hz=20)
    await capture.start_capture()
    await asyncio.sleep(30)
    frames = await capture.stop_capture()
    print(f"captured {len(frames)} frames")


asyncio.run(main())

If your application already knows whether the game is running, you can inject a callback:

capture = TelemetryCapture(game_running_callback=lambda: True)

When no callback is provided, the SDK does not enforce game-process detection.

Decode Raw Bytes

from pathlib import Path
from acevo import decode_graphics, decode_static

graphics_bytes = bytes.fromhex(Path("graphics_frame.hex").read_text().strip())
static_bytes = bytes.fromhex(Path("static_frame.hex").read_text().strip())

graphics = decode_graphics(graphics_bytes)
static = decode_static(static_bytes)

print(graphics)
print(static)

Public API

from acevo import (
    LogParser,
    TelemetryCapture,
    RegionReader,
    FrameData,
    CaptureMetadata,
    decode_physics,
    decode_graphics,
    decode_static,
    LapData,
    SessionData,
    LapState,
    SharedSessionManager,
)

Status

acevo-sdk is Alpha software. Version 0.1.0 is the first extracted SDK release, so public APIs may change while real downstream use cases settle.

Please report issues at https://github.com/glebulon/acevo-sdk/issues.

Publishing

This repo is designed for PyPI Trusted Publishing through GitHub Actions.

Release checklist:

python -m pip install -e ".[dev]"
ruff check .
pytest
python -m build
git tag v0.1.0
git push origin v0.1.0

Create the GitHub Release for v0.1.0; the publish workflow uploads the package to PyPI.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

acevo_sdk-0.1.0.tar.gz (67.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

acevo_sdk-0.1.0-py3-none-any.whl (67.0 kB view details)

Uploaded Python 3

File details

Details for the file acevo_sdk-0.1.0.tar.gz.

File metadata

  • Download URL: acevo_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 67.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for acevo_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 594cb7dfa4de7ec3193b7245b80a40b28474612a9b10f73b828d00f6c71e5467
MD5 605d410525e918c31c4f6351ec15f1b0
BLAKE2b-256 4819b7eeb1a3f2ecfe6e1f722698b69d8d574890d52bf006b466e8bbb73cedde

See more details on using hashes here.

Provenance

The following attestation bundles were made for acevo_sdk-0.1.0.tar.gz:

Publisher: publish.yml on glebulon/acevo-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file acevo_sdk-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: acevo_sdk-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 67.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for acevo_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4740fde794d1626b3aaa4f9e73b066d4e73550466f56d14d1b1d2ca033251f9b
MD5 05daec97c6cf84374acfdfa563ee564c
BLAKE2b-256 7324753cce17bcd4eecae0bf2f1af236fe24b3f970d67b0836093f32f3a4ca36

See more details on using hashes here.

Provenance

The following attestation bundles were made for acevo_sdk-0.1.0-py3-none-any.whl:

Publisher: publish.yml on glebulon/acevo-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page