Python: Version history
Read the project configuration at any point in time, preview and apply a restore, and manage timelines and snapshots with the Python SDK.
Every change to policies, tables, functions, settings, buckets and keys is recorded on the project's timeline. Background: Version history: see, undo and restore changes.
plan = await sovaria.chrono_restore_plan("2026-10-15T09:00:00Z")
for action in plan["actions"]:
print(action["path"], "manual" if action.get("manual") else "auto")
await sovaria.chrono_restore("2026-10-15T09:00:00Z")Methods
sovaria.chrono_commit
Create a Chrono commit.
await sovaria.chrono_commit(
*, timeline: str,
message: str,
author: str,
event_type: str = 'update',
) -> dict[str, Any]Parameters
timelinestrrequiredmessagestrrequiredauthorstrrequiredevent_typestroptionaldefault'update'
- Returns
dict[str, Any]
sovaria.chrono_converge
Converge source timeline into target timeline.
await sovaria.chrono_converge(
*, target: str,
source: str,
author: str,
message: str,
) -> dict[str, Any]Parameters
targetstrrequiredsourcestrrequiredauthorstrrequiredmessagestrrequired
- Returns
dict[str, Any]
sovaria.chrono_create_snapshot
Create a system snapshot.
await sovaria.chrono_create_snapshot(message: str) -> dict[str, Any]Parameters
messagestrrequired
- Returns
dict[str, Any]
sovaria.chrono_delete_timeline
Delete a timeline.
await sovaria.chrono_delete_timeline(name: str) -> dict[str, Any]Parameters
namestrrequired
- Returns
dict[str, Any]
sovaria.chrono_jump_timeline
Force-jump a timeline head.
await sovaria.chrono_jump_timeline(
name: str,
target_hex: str,
) -> dict[str, Any]Parameters
namestrrequiredtarget_hexstrrequired
- Returns
dict[str, Any]
sovaria.chrono_list_snapshots
List known snapshots.
await sovaria.chrono_list_snapshots() -> dict[str, Any]- Returns
dict[str, Any]
sovaria.chrono_list_timelines
List available timelines.
await sovaria.chrono_list_timelines() -> dict[str, Any]- Returns
dict[str, Any]
sovaria.chrono_restore
Go back to at: applies the plan's automated changes with this client's own permissions.
await sovaria.chrono_restore(
at: str,
*, timeline: str = 'main',
) -> dict[str, Any]Parameters
atstrrequiredtimelinestroptionaldefault'main'
- Returns
dict[str, Any]
sovaria.chrono_restore_plan
What going back to at changes, file by file, and who would gain or lose access.
await sovaria.chrono_restore_plan(
at: str,
*, timeline: str = 'main',
) -> dict[str, Any]Writes nothing.
Parameters
atstrrequiredtimelinestroptionaldefault'main'
- Returns
dict[str, Any]
sovaria.chrono_restore_snapshot
Restore a snapshot by id.
await sovaria.chrono_restore_snapshot(
snapshot_id: int,
) -> dict[str, Any]Parameters
snapshot_idintrequired
- Returns
dict[str, Any]
sovaria.chrono_spawn_timeline
Spawn a new timeline from a source chronon.
await sovaria.chrono_spawn_timeline(
*, name: str,
source_hex_id: str | None = None,
) -> dict[str, Any]Parameters
namestrrequiredsource_hex_idstr | NoneoptionaldefaultNone
- Returns
dict[str, Any]
sovaria.chrono_state
The project's configuration (policies, schema, functions, settings, buckets, keys) at a commit id or ISO time (now when at is omitted), optionally one folder.
await sovaria.chrono_state(
*, at: str | None = None,
prefix: str = '',
timeline: str = 'main',
) -> dict[str, Any]Parameters
atstr | NoneoptionaldefaultNoneprefixstroptionaldefault''timelinestroptionaldefault'main'
- Returns
dict[str, Any]
sovaria.chrono_timeline_history
Fetch timeline history chronons.
await sovaria.chrono_timeline_history(
name: str,
*, limit: int = 50,
offset: int = 0,
) -> dict[str, Any]Parameters
namestrrequiredlimitintoptionaldefault50offsetintoptionaldefault0
- Returns
dict[str, Any]
sovaria.chrono_topology
Return timeline graph topology.
await sovaria.chrono_topology(
*, timeline: str = 'main',
limit: int = 50,
) -> dict[str, Any]Parameters
timelinestroptionaldefault'main'limitintoptionaldefault50
- Returns
dict[str, Any]
sovaria.chrono_variance
Calculate variance between two chronons.
await sovaria.chrono_variance(
*, old_chronon_hex: str,
new_chronon_hex: str,
domain_filter: str | None = None,
) -> dict[str, Any]Parameters
old_chronon_hexstrrequirednew_chronon_hexstrrequireddomain_filterstr | NoneoptionaldefaultNone
- Returns
dict[str, Any]