Catalog PyPI
PACKAGE EXPLORERView in registry

acevo-sdk

PyPI

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

aceacevoassetto-corsa-evoracingsim-racingtelemetry
Versions collected1
Direct dependencies5From release 0.1.1
Last observed20 Oct, 18:10 UTC

README

Version 0.1.1 documentation

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

Downloads & popularity

4downloads
1-day window · source-reported counts20 Oct 2026
84420
2026-07-24: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-07-24–2026-07-242026-07-27: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-07-27–2026-07-272026-07-29: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-07-29–2026-07-292026-08-01: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-01–2026-08-012026-08-02: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-02–2026-08-022026-08-03: 10 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-03–2026-08-032026-08-04: 5 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-04–2026-08-042026-08-07: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-07–2026-08-072026-08-09: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-09–2026-08-092026-08-10: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-10–2026-08-102026-08-13: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-13–2026-08-132026-08-14: 4 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-14–2026-08-142026-08-15: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-15–2026-08-152026-08-17: 8 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-17–2026-08-172026-08-18: 84 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-18–2026-08-182026-08-19: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-19–2026-08-192026-08-20: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-20–2026-08-202026-08-21: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-21–2026-08-212026-08-22: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-22–2026-08-222026-08-23: 3 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-23–2026-08-232026-08-24: 9 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-24–2026-08-242026-08-26: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-26–2026-08-262026-08-28: 4 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-28–2026-08-282026-08-31: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-08-31–2026-08-312026-09-01: 3 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-01–2026-09-012026-09-03: 4 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-03–2026-09-032026-09-04: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-04–2026-09-042026-09-05: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-05–2026-09-052026-09-06: 8 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-06–2026-09-062026-09-07: 4 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-07–2026-09-072026-09-09: 5 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-09–2026-09-092026-09-10: 5 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-10–2026-09-102026-09-12: 7 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-12–2026-09-122026-09-15: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-15–2026-09-152026-09-17: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-17–2026-09-172026-09-18: 3 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-18–2026-09-182026-09-19: 4 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-19–2026-09-192026-09-20: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-20–2026-09-202026-09-21: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-21–2026-09-212026-09-24: 5 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-24–2026-09-242026-09-26: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-26–2026-09-262026-09-27: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-27–2026-09-272026-09-28: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-28–2026-09-282026-09-29: 3 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-29–2026-09-292026-09-30: 9 · observed 2026-10-21T11:27:12.2659562Z · period 2026-09-30–2026-09-302026-10-01: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-01–2026-10-012026-10-03: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-03–2026-10-032026-10-04: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-04–2026-10-042026-10-06: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-06–2026-10-062026-10-07: 1 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-07–2026-10-072026-10-08: 4 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-08–2026-10-082026-10-09: 6 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-09–2026-10-092026-10-10: 3 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-10–2026-10-102026-10-11: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-11–2026-10-112026-10-13: 7 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-13–2026-10-132026-10-15: 9 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-15–2026-10-152026-10-16: 8 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-16–2026-10-162026-10-17: 18 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-17–2026-10-172026-10-18: 2 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-18–2026-10-182026-10-19: 15 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-19–2026-10-192026-10-20: 4 · observed 2026-10-21T11:27:12.2659562Z · period 2026-10-20–2026-10-20
24 Jul20 Oct

pypistats · 61 observations shown. Missing days are unknown. Source category: overall: without mirrors.

View observed values
Date / source periodValueObserved at
2026-10-20 – 2026-10-2042026-10-21T11:27:12.2659562Z
2026-10-19 – 2026-10-19152026-10-21T11:27:12.2659562Z
2026-10-18 – 2026-10-1822026-10-21T11:27:12.2659562Z
2026-10-17 – 2026-10-17182026-10-21T11:27:12.2659562Z
2026-10-16 – 2026-10-1682026-10-21T11:27:12.2659562Z
2026-10-15 – 2026-10-1592026-10-21T11:27:12.2659562Z
2026-10-13 – 2026-10-1372026-10-21T11:27:12.2659562Z
2026-10-11 – 2026-10-1122026-10-21T11:27:12.2659562Z
2026-10-10 – 2026-10-1032026-10-21T11:27:12.2659562Z
2026-10-09 – 2026-10-0962026-10-21T11:27:12.2659562Z
2026-10-08 – 2026-10-0842026-10-21T11:27:12.2659562Z
2026-10-07 – 2026-10-0712026-10-21T11:27:12.2659562Z
2026-10-06 – 2026-10-0622026-10-21T11:27:12.2659562Z
2026-10-04 – 2026-10-0412026-10-21T11:27:12.2659562Z
2026-10-03 – 2026-10-0312026-10-21T11:27:12.2659562Z
2026-10-01 – 2026-10-0112026-10-21T11:27:12.2659562Z
2026-09-30 – 2026-09-3092026-10-21T11:27:12.2659562Z
2026-09-29 – 2026-09-2932026-10-21T11:27:12.2659562Z
2026-09-28 – 2026-09-2822026-10-21T11:27:12.2659562Z
2026-09-27 – 2026-09-2712026-10-21T11:27:12.2659562Z
2026-09-26 – 2026-09-2612026-10-21T11:27:12.2659562Z
2026-09-24 – 2026-09-2452026-10-21T11:27:12.2659562Z
2026-09-21 – 2026-09-2122026-10-21T11:27:12.2659562Z
2026-09-20 – 2026-09-2022026-10-21T11:27:12.2659562Z
2026-09-19 – 2026-09-1942026-10-21T11:27:12.2659562Z
2026-09-18 – 2026-09-1832026-10-21T11:27:12.2659562Z
2026-09-17 – 2026-09-1712026-10-21T11:27:12.2659562Z
2026-09-15 – 2026-09-1512026-10-21T11:27:12.2659562Z
2026-09-12 – 2026-09-1272026-10-21T11:27:12.2659562Z
2026-09-10 – 2026-09-1052026-10-21T11:27:12.2659562Z
2026-09-09 – 2026-09-0952026-10-21T11:27:12.2659562Z
2026-09-07 – 2026-09-0742026-10-21T11:27:12.2659562Z
2026-09-06 – 2026-09-0682026-10-21T11:27:12.2659562Z
2026-09-05 – 2026-09-0512026-10-21T11:27:12.2659562Z
2026-09-04 – 2026-09-0412026-10-21T11:27:12.2659562Z
2026-09-03 – 2026-09-0342026-10-21T11:27:12.2659562Z
2026-09-01 – 2026-09-0132026-10-21T11:27:12.2659562Z
2026-08-31 – 2026-08-3122026-10-21T11:27:12.2659562Z
2026-08-28 – 2026-08-2842026-10-21T11:27:12.2659562Z
2026-08-26 – 2026-08-2612026-10-21T11:27:12.2659562Z
2026-08-24 – 2026-08-2492026-10-21T11:27:12.2659562Z
2026-08-23 – 2026-08-2332026-10-21T11:27:12.2659562Z
2026-08-22 – 2026-08-2222026-10-21T11:27:12.2659562Z
2026-08-21 – 2026-08-2122026-10-21T11:27:12.2659562Z
2026-08-20 – 2026-08-2012026-10-21T11:27:12.2659562Z
2026-08-19 – 2026-08-1922026-10-21T11:27:12.2659562Z
2026-08-18 – 2026-08-18842026-10-21T11:27:12.2659562Z
2026-08-17 – 2026-08-1782026-10-21T11:27:12.2659562Z
2026-08-15 – 2026-08-1512026-10-21T11:27:12.2659562Z
2026-08-14 – 2026-08-1442026-10-21T11:27:12.2659562Z
2026-08-13 – 2026-08-1322026-10-21T11:27:12.2659562Z
2026-08-10 – 2026-08-1012026-10-21T11:27:12.2659562Z
2026-08-09 – 2026-08-0922026-10-21T11:27:12.2659562Z
2026-08-07 – 2026-08-0712026-10-21T11:27:12.2659562Z
2026-08-04 – 2026-08-0452026-10-21T11:27:12.2659562Z
2026-08-03 – 2026-08-03102026-10-21T11:27:12.2659562Z
2026-08-02 – 2026-08-0212026-10-21T11:27:12.2659562Z
2026-08-01 – 2026-08-0112026-10-21T11:27:12.2659562Z
2026-07-29 – 2026-07-2922026-10-21T11:27:12.2659562Z
2026-07-27 – 2026-07-2722026-10-21T11:27:12.2659562Z
2026-07-24 – 2026-07-2422026-10-21T11:27:12.2659562Z

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.1.127 May 20265

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
glebulon/acevo-sdk

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 18:10 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:28cbe963eb20c57844c0d7efe0fbb65c85e89005a56d6d89a81b689858ac5d71