Skip to main content

CityBehavEx

CityBehavEx is a scalable, empirically validated, LLM-assisted urban behavior simulation platform. It generates synthetic city-scale mobility trajectories and lets users inspect, replay, debug, and evaluate them against observed mobility, time-use, semantic, transport, and social-network patterns.

This repository accompanies an EACL Demo Track submission:

CityBehavEx: A Scalable and Empirically Validated LLM-Assisted Urban Simulation Platform

Timeline View

The demo focuses on the complete workflow: configure a city scenario, run a simulation, replay agent trajectories, inspect profiles and activity traces, and compare synthetic behavior with empirical validation metrics through the web dashboard.

Why CityBehavEx?

Recent LLM-based urban simulators can produce rich behavior descriptions, but they are often expensive to scale and weakly validated against real mobility patterns. CityBehavEx separates semantic reasoning from trajectory execution:

  • Scalable simulation core. A Rust-backed engine simulates large populations with sub-hourly schedules, exploration and preferential return, social ties, transport choices, and micro-activities.
  • LLM-assisted, not LLM-per-action. LLMs help generate and calibrate diaries and semantic supervision, while fine-tuned cross-encoders score profile, schedule, POI, vehicle-ownership, and activity compatibility efficiently.
  • Empirical validation. The dashboard reports spatial, temporal, semantic, time-use, transport, behavioral-profile, motif, OD, and social-network metrics.
  • Inspectable agents. The interface supports trajectory replay, profile inspection, macro-schedules, micro-activities, transport legs, and social encounters.
  • Reproducible experiments. Scenarios are configured with YAML files, outputs are stored as parquet/JSON sidecars, and chart payloads are cached.

In the paper experiments, CityBehavEx runs orders of magnitude faster than recent LLM-based urban simulation baselines while matching empirical spatial and temporal mobility distributions more closely.

UI Screenshots:

Experiments

image

Charts

image

License

CityBehavEx is released under the GNU Affero General Public License v3.0 (AGPLv3). See LICENSE.

The AGPLv3 license is intentional: it guarantees that improvements to hosted or modified versions of the simulator remain available to the research community.

Repository Overview

citybehavex/                 Python package and report/evaluation logic
citybehavex/aligners/        Packaged local aligner/embedding server (`--start-aligners`)
citybehavex/templates/       `citybehavex init` project scaffold and the YJMOB-1k asset manifest
citybehavex/project.py       `init`/`data download`/`doctor` CLI implementations
citybehavex/services.py      Local aligner process lifecycle helpers used by `simulate`
citybehavex-py/              Rust simulation core exposed as citybehavex._core
configs/                     Reproducible scenario and ablation configurations
scripts/                     Simulation, training, serving, and sweep utilities
web/backend/                 FastAPI backend for experiment discovery and charts
web/frontend/                React/Vite validation and trajectory-replay UI
data/                        Input/output location for scenarios and runs
models/                      Optional fine-tuned alignment models

The simulator reads scenario settings from configs/*.yaml. The web UI discovers those configs, finds their generated runs, and builds validation views on demand. The web backend is the FastAPI app in web/backend/app; see web/README.md for development and deployment commands.

Requirements

Core requirements:

  • Python 3.11.4+ (earlier 3.11.x patches lack tarfile's filter= support, which citybehavex data download relies on)

Additional requirements for the web dashboard (not needed for the pip-installed CLI on its own):

  • Node.js 18+ and npm, for the web frontend

Additional requirements for building from a source checkout (not needed when installing the published wheel):

  • Rust toolchain, for the simulation core (citybehavex._core)
  • uv

Optional requirements:

  • A CUDA GPU for embedding, cross-encoder, or LLM serving
  • A Mapbox token for the high-performance animated timeline map
  • An OpenAI-compatible LLM endpoint when regenerating diaries or training semantic aligners

The published wheel ships a prebuilt Rust extension, so pip install citybehavex needs no Rust toolchain. Building from source uses maturin to build that extension (the core simulation engine only — the web backend is pure Python/FastAPI and needs no Rust toolchain either way). CityBehavEx builds on Fastkit-Mobility:

  • Fastkit-Mobility (fastmob on PyPI) — Rust-accelerated mobility analysis and visualization, available as fastmob==0.2.2. Its visualization extra provides the Rust-backed ECharts visualizations.

Quick Start

Install the published wheel:

python -m pip install citybehavex
citybehavex init my-citybehavex-project
citybehavex data download yjmob --project my-citybehavex-project
cd my-citybehavex-project

Validate the project, then run the local temporary aligner service with the simulation:

citybehavex doctor --config configs/yjmob-1k.yaml
citybehavex simulate --config configs/yjmob-1k.yaml --start-aligners

This first example run don't requires an LLM, it already bundles some sample diaries for you to test. If you have access to an LLM, please edit the config file for the simulation or set the CITYBEHAVEX_LLM_BASE_URL, CITYBEHAVEX_LLM_API_KEY, and CITYBEHAVEX_LLM_MODEL enviroment variables with an OpenAI-compatible endpoint. In the case of providing your own LLM, make sure to delete the corresponding validated_diaries_*.json file, so the simulation don't re-use the diaries.

--start-aligners requires CUDA by default. Use --aligner-device cpu only when a GPU is unavailable because it is much slower.

The command writes simulation outputs under the paths configured in the YAML file, typically inside data/.../results/. Existing caches are reused when available.

No model training required. Every shipped config already points at CityBehavEx's five pretrained ModernBERT aligners, hosted on the Hugging Face Hub and resolved automatically on first use — no local checkpoints or extra setup. See Alignment Services below for the model list and how to serve them locally instead.

Web Demo

Requires a source checkout, not just pip install citybehavex. web/ (the FastAPI backend and React frontend) isn't part of the published wheel/sdist at all -- clone the repo to run it.

Install the backend's extra dependencies (FastAPI + uvicorn aren't needed for the CLI/simulation core, so they're not in the base install) and start it:

uv sync --extra web
uv run uvicorn app.main:app --app-dir web/backend --port 8000

Start the frontend:

cd web/frontend
npm install
npm run dev

Open:

http://localhost:5173

By default the frontend talks directly to the FastAPI backend on port 8000. The Experiments page is populated from configs/*.yaml. Opening charts for a run builds the validation payload on first request and caches it under data/.web_cache/.

The FastAPI app can also single-origin-serve the built frontend (npm run build in web/frontend/, then restart uvicorn — it serves both the API and the static SPA whenever web/frontend/dist exists). See web/README.md for the full endpoint list and deployment notes.

Timeline Map

The animated timeline uses Mapbox GL. To enable it, create web/frontend/.env.local:

VITE_MAPBOX_TOKEN=pk.your_token_here

Restart npm run dev after creating or editing this file.

Running the Main Components

Simulation CLI

uv run citybehavex simulate --config configs/yjmob_simulation.yaml

Equivalent module entry point:

uv run python -m citybehavex simulate --config configs/yjmob_simulation.yaml

Override the number of generated candidate diaries:

uv run citybehavex simulate \
  --config configs/yjmob_simulation.yaml \
  --diary-count 20

Validation Dashboard

The dashboard includes:

  • ECDFs and fitted mobility laws for travel distance, radius of gyration, trip duration, dwell time, and visitation frequency
  • visit-purpose distributions and activity-transition matrices
  • daily routines, motifs, mobility profiles, and time-use summaries
  • H3 spatio-temporal visit difference maps
  • home/work maps, transport summaries, and social-network validation
  • animated trajectory replay with agent-level inspection

For metric-by-metric calibration guidance, including config knobs and fine-tuning levers, see CALIBRATION.md.

Alignment Services

CityBehavEx can run with cached alignment scores, simple fallbacks, or live alignment services. The convention used by the project is:

8081  diary-generation LLM, OpenAI-compatible chat endpoint (a sibling host)
8090  consolidated aligner + embedding server (scripts/serve_aligners.py)

All five ModernBERT CrossEncoder aligners (schedule, activity, vehicle-ownership, profile-coherence, POI-type) and the diary/profile embedding model are served by one process on port 8090. It lazily loads whichever model a request names — the model field every request already carries, taken directly from each config's *_alignment_model / embedding.model field — evicts a model after --idle-ttl-s (default 600s) of no requests, and exposes POST /unload {"model": "..."} for an immediate evict.

The five pretrained aligners are published on the Hugging Face Hub and are what every shipped config points at by default — no local checkpoint copy or extra setup needed, sentence-transformers resolves them straight from the Hub on first use, same as a local path:

aligner Hugging Face repo
schedule gefgu/modernbert-schedule-aligner
activity gefgu/modernbert-activity-aligner
vehicle-ownership gefgu/modernbert-vehicle-ownership-aligner
profile-coherence gefgu/modernbert-profile-coherence-aligner
POI-type gefgu/modernbert-poi-type-aligner

Start the server with citybehavex's own venv — no separate CUDA/torch environment needed, pyproject.toml already pins the CUDA 13 wheel index:

uv run python scripts/serve_aligners.py \
  --port 8090 \
  --device cuda \
  --predict-batch-size 128

For a one-off simulation, the equivalent public CLI flow is simply:

citybehavex simulate --config configs/yjmob-1k.yaml --start-aligners

Point every config's *_alignment_base_url and embedding.base_url at this one port; only the *_alignment_model / embedding.model fields select which checkpoint gets loaded for a given request — no separate service or port per aligner. A *_alignment_model field accepts a Hugging Face repo id (the default) or any local/compatible checkpoint path, selected directly in YAML without restarting the server:

activities:
  alignment_base_url: http://localhost:8090
  alignment_model: /path/to/my-modernbert-cross-encoder

The fine-tuning scripts expose the corresponding model flags. Use --base-model to select the ModernBERT (or other compatible) starting model and --output-model-path to choose where the fine-tuned CrossEncoder is saved. For example:

.venv/bin/python scripts/train_modernbert_activity_aligner.py \
  --base-model nomic-ai/modernbert-embed-base \
  --output-model-path models/my-activity-aligner

Disable these services in YAML when running without the corresponding models or GPU. The simulator will use configured fallbacks and existing caches where possible.

Configuration

Important scenario files:

configs/gparis_simulation.yaml       Greater Paris scenario
configs/shanghai_simulation.yaml     Shanghai scenario
configs/yjmob_simulation.yaml        YJMOB regular scenario
configs/yjmob2_simulation.yaml       YJMOB disaster/special-event scenario
configs/ablations/                   Module-level ablation configurations

The major configurable modules are:

  • profiles: synthetic population, home/work assignment, coherence and vehicle ownership alignment
  • schedule: diary selection, semantic alignment, and exploration parameters
  • activities: MTUS-grounded micro-schedules and activity alignment
  • transport: walking, cycling, road, rail, and fallback travel behavior
  • social: initial friendship formation and co-location-based tie updates
  • embedding: optional embedding backend and cache behavior

To fix locations while retaining generated demographics, set profiles.profiles_path to a JSON or Parquet table keyed by one-based uid. Only supplied, non-null fields override generation. Integer locations are legacy 0-based tessellation row indices; string locations are matched against the tessellation's tile_id column, so POI IDs, UUIDs, H3 IDs, and HOME-anchor IDs can be supplied directly:

[
  {"uid": 1, "home_tile": "home_anchor_17", "work_tile": "88309959d1fffff"},
  {"uid": 2, "home_tile": "home_anchor_42", "work_tile": "aadfd6a4-ba82-46ae-92da-973e3c91aaee"}
]

Tile indices address the runtime tessellation, after any configured residential home anchors are appended.

Data Notes

The paper evaluates CityBehavEx with Greater Paris, Shanghai, and YJMOB mobility datasets. Greater Paris and Shanghai are non-public datasets and cannot be redistributed in this repository. YJMOB is public and is the recommended dataset for artifact reviewers who need to reproduce an end-to-end run without private data access.

Large simulation outputs are intentionally not committed. The repository expects input and generated files under data/, with exact paths controlled by each YAML configuration. data/ itself is not part of the repository (it is gitignored) — create it locally and populate it before running a scenario.

The packaged citybehavex data download yjmob sample is not this dataset. It ships a small, entirely synthetic comparison baseline (the first 1,000 agents / first 7 days of an already-completed CityBehavEx run) so the pip-installed CLI has zero data-license entanglement. To validate against the real YJMob100K dataset, follow the steps below instead.

Setting up data/ for the YJMOB scenario

  1. Create the directory: mkdir -p data/yjmob.
  2. Obtain the YJMob100K dataset (released for the HuMob Challenge) and place its dataset1 CSV as data/yjmob/yjmob100k-dataset1.csv.gz.
  3. Run the preparation notebooks in order to produce the processed parquet files that configs/yjmob_simulation.yaml reads: notebooks/01_yjmob_preparation/01_preprocessing.ipynb, then 02_eda.ipynb and 04_motif_distribution.ipynb as needed for validation baselines.
  4. For the disaster/special-event scenario (configs/yjmob2_simulation.yaml), run notebooks/03_yjmob2_preparation/01_preprocessing.ipynb against the corresponding YJMob2 release.

Greater Paris and Shanghai configs expect the same data/<city>/... layout, but since their source datasets are private, they cannot be reproduced from this repository alone.

Reproducing Paper-Style Experiments

Run a configured experiment:

uv run citybehavex simulate --config configs/yjmob_simulation.yaml

Run module ablations:

./scripts/run_ablation.sh configs/ablations/yjmob/yjmob_no_profile.yaml
./scripts/run_ablation.sh configs/ablations/yjmob/yjmob_no_micro_sched.yaml
./scripts/run_ablation.sh configs/ablations/yjmob/yjmob_no_social.yaml
./scripts/run_ablation.sh configs/ablations/yjmob/yjmob_no_transport.yaml

Aggregate ablation logs:

uv run python scripts/aggregate_ablation_results.py

Then start the web demo and open the corresponding experiment to inspect charts, timeline replay, metrics, and cached comparison payloads.

Troubleshooting

  • Rust extension not found (source checkout only): rerun ./scripts/update_local_citybehavex.sh. The published wheel bundles a prebuilt extension and never hits this.
  • fastmob not found: install the project dependencies with uv sync. The required fastmob features, including visualization, are installed from PyPI as extras.
  • Frontend cannot reach the API: confirm the FastAPI backend is running on http://localhost:8000 and the frontend on http://localhost:5173, and that VITE_API_PROXY_TARGET matches the backend you started.
  • Timeline map is blank: set VITE_MAPBOX_TOKEN in web/frontend/.env.local and restart Vite.
  • Alignment endpoint errors: either start the configured reranker/LLM service or disable that backend in the YAML config.
  • Large chart load is slow: the first request builds and caches payloads; the next request should reuse data/.web_cache/.

Citation

If you use CityBehavEx, please cite:

@misc{santos2026citybehavex,
  title     = {CityBehavEx: A Scalable and Empirically Validated LLM-Assisted Urban Simulation Platform},
  author    = {Santos, Gustavo H. and Viana, Aline and Silva, Thiago H.},
  year      = {2026},
  eprint    = {2607.12086},
  archivePrefix = {arXiv},
  primaryClass  = {cs.CL},
  url       = {https://arxiv.org/abs/2607.12086}
}

CityBehavEx depends on Fastkit-Mobility (fastmob 0.2.2 on PyPI) with its visualization extra.

Metadata

Release files for citybehavex 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for citybehavex 0.1.4
File Size Uploaded
citybehavex-0.1.4.tar.gz 224.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for citybehavex 0.1.4
File
citybehavex-0.1.4-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64 Details
citybehavex-0.1.4-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.17+ x86-64 Details
citybehavex-0.1.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details
citybehavex-0.1.4-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
citybehavex-0.1.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
citybehavex-0.1.4-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
citybehavex-0.1.4-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
citybehavex-0.1.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
citybehavex-0.1.4-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
citybehavex-0.1.4-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
citybehavex-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
citybehavex-0.1.4-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
citybehavex-0.1.4-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
citybehavex-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
citybehavex-0.1.4-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details

Total release size: 13.3 MB

Release files / citybehavex-0.1.4.tar.gz

Download URL citybehavex-0.1.4.tar.gz
Size 224.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e6e107e226f30d4de6c42f047dba3dcbd192c0a78a93c6af513a6b488d593e15
BLAKE2b-256 checksum
How to use checksums
4baec37613138d3fa4bdcd22ce83c97a98176eeb9d3b8b553b95792a12f108d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL citybehavex-0.1.4-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.0 MB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
dcec8a7669c222e3d4b447c9ea4029a36755a4c3c4da549ead0ac19fa74a3552
BLAKE2b-256 checksum
How to use checksums
be13263f32dd9d4d7f0fb318f6f807110220f4f36624a193158fa165e4f2d684
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL citybehavex-0.1.4-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.0 MB
Tags CPython 3.15 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
0e561ca6ea2cf4c4d33dab3efe6080bf9c9e7e42a1759ede1522acb822f215eb
BLAKE2b-256 checksum
How to use checksums
8455b7837e8f7a972360d09260067fbd99c81b0240e552ff9f231360d7c3af09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL citybehavex-0.1.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.0 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e7d9301f6081ba67c9c50c167a10edc3f9201fbed9240af0e21c434e757f28ca
BLAKE2b-256 checksum
How to use checksums
030879913ced58a8d04faee14d1df050977b0f83b0a4c7ff00840e02012e4633
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp314-cp314-win_amd64.whl

Download URL citybehavex-0.1.4-cp314-cp314-win_amd64.whl
Size 673.1 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
9bfddf8d9e5a43df64fbae6c0fb9aabdc73e522a1831bb858b11a7fdcfa916b6
BLAKE2b-256 checksum
How to use checksums
99b6a0ea58e888d341fad53e02c01ef3969241a5b9bc65b72a0298a3dbba47fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL citybehavex-0.1.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.0 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
0c416971aef2b6a65f70a4a6db50fee96a33829ddcbacb0df6d257b504715c78
BLAKE2b-256 checksum
How to use checksums
e67bb1a33a9ca154ef026a2b4a4603fcb000b8ad6bcdf54d0cfb2c5f5030142c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp314-cp314-macosx_11_0_arm64.whl

Download URL citybehavex-0.1.4-cp314-cp314-macosx_11_0_arm64.whl
Size 847.5 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
377ebae38498d9ebae9a94eed02898b378fde514dc04082ca104e9ba074c1523
BLAKE2b-256 checksum
How to use checksums
6daf745f782872f1e8c3a0384aaddb918c389f991d04527b7adb30f3157bec25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp313-cp313-win_amd64.whl

Download URL citybehavex-0.1.4-cp313-cp313-win_amd64.whl
Size 672.9 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
24070b878a220f69944f0130deb4f0ba36326ecf90db11913577237a50ca452e
BLAKE2b-256 checksum
How to use checksums
4078dfad6c114fd876f7e77d163e0dadd939916da82b9d58e9cbd060f12cfcdf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL citybehavex-0.1.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.0 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
548fa1a6ab13d83c6c7db57c332b19bad2c59574d50d082d82be6ae58958943f
BLAKE2b-256 checksum
How to use checksums
fb17fc8853739e19d0745fc31d37687064f87e4a0236b62d747dd9b219185464
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp313-cp313-macosx_11_0_arm64.whl

Download URL citybehavex-0.1.4-cp313-cp313-macosx_11_0_arm64.whl
Size 847.3 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a00804d0995ba5c42e169b2400dbea528ac26da0d22bff8238905985d5b622f5
BLAKE2b-256 checksum
How to use checksums
9491ca6e898dd2227c6ff8ef5a66bb7ff5ff720bb9ff669c7bf01bf542327e8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp312-cp312-win_amd64.whl

Download URL citybehavex-0.1.4-cp312-cp312-win_amd64.whl
Size 673.1 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
189fa82c6517366dcb10a84c221637bee3570d0d73d9696dfdd0132d6bbb6d13
BLAKE2b-256 checksum
How to use checksums
0ef0b4c2f860fc75e221e3aee26e84d085157759eac6697b37063686f9ce3c41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL citybehavex-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.0 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
201327d14469932e03785cf4aba6253e2a24c5641116f538ffe7788b1ec739bc
BLAKE2b-256 checksum
How to use checksums
914cb86f15939fd612daef09ee20177b7efce00c66bcf3c38d1c7993fd6d09c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp312-cp312-macosx_11_0_arm64.whl

Download URL citybehavex-0.1.4-cp312-cp312-macosx_11_0_arm64.whl
Size 847.7 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1f04f00d121dce8883c231f609a65b24bf8e13850bf1def8fab4d8c439efc0fd
BLAKE2b-256 checksum
How to use checksums
ae2bd4b2b8a7e517d8132a7079ba521844a2b45af6d52161a52bfe02815e81af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp311-cp311-win_amd64.whl

Download URL citybehavex-0.1.4-cp311-cp311-win_amd64.whl
Size 674.8 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
43f20c1e0defa94c6ce60b986dbf37917b63995a3c675dda019db35c15b74611
BLAKE2b-256 checksum
How to use checksums
2fffa879b0c6cf64227d8e9e3e325af3e5c1fde4bb716f79f698f4af5482001b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL citybehavex-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.0 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
238896b7e5dd8b56057397533fc3bd159c9d0b978012dc510f960c9522a5ad9a
BLAKE2b-256 checksum
How to use checksums
38619887f114084ffa6855450e1a7d66803762485b5b362a709fd43fb7584092
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / citybehavex-0.1.4-cp311-cp311-macosx_11_0_arm64.whl

Download URL citybehavex-0.1.4-cp311-cp311-macosx_11_0_arm64.whl
Size 849.2 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
38843f598e3741704a363a62137f401c07b382f3e85e729de17e93d2533ad94f
BLAKE2b-256 checksum
How to use checksums
c6364560acde49d0bc97c7feaf5e04d486bbf7aa2fbd6387d86e13c52434ec35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.4 This release

16 release files

0.1.2

8 release files

0.1.1

8 release files

0.1.0

7 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page