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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
594cb7dfa4de7ec3193b7245b80a40b28474612a9b10f73b828d00f6c71e5467
|
|
| MD5 |
605d410525e918c31c4f6351ec15f1b0
|
|
| BLAKE2b-256 |
4819b7eeb1a3f2ecfe6e1f722698b69d8d574890d52bf006b466e8bbb73cedde
|
Provenance
The following attestation bundles were made for acevo_sdk-0.1.0.tar.gz:
Publisher:
publish.yml on glebulon/acevo-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
acevo_sdk-0.1.0.tar.gz -
Subject digest:
594cb7dfa4de7ec3193b7245b80a40b28474612a9b10f73b828d00f6c71e5467 - Sigstore transparency entry: 1635528002
- Sigstore integration time:
-
Permalink:
glebulon/acevo-sdk@3d27aaa4a1f069c0762e29743a3d3d3454988fea -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/glebulon
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3d27aaa4a1f069c0762e29743a3d3d3454988fea -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4740fde794d1626b3aaa4f9e73b066d4e73550466f56d14d1b1d2ca033251f9b
|
|
| MD5 |
05daec97c6cf84374acfdfa563ee564c
|
|
| BLAKE2b-256 |
7324753cce17bcd4eecae0bf2f1af236fe24b3f970d67b0836093f32f3a4ca36
|
Provenance
The following attestation bundles were made for acevo_sdk-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on glebulon/acevo-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
acevo_sdk-0.1.0-py3-none-any.whl -
Subject digest:
4740fde794d1626b3aaa4f9e73b066d4e73550466f56d14d1b1d2ca033251f9b - Sigstore transparency entry: 1635528031
- Sigstore integration time:
-
Permalink:
glebulon/acevo-sdk@3d27aaa4a1f069c0762e29743a3d3d3454988fea -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/glebulon
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3d27aaa4a1f069c0762e29743a3d3d3454988fea -
Trigger Event:
release
-
Statement type: