agentl agentl Built with agentl

Open data An agentl example

Euro exchange rates, refreshed by one YAML file.

Free daily reference rates from the European Central Bank for about 30 currencies. Fetched, checked and stored every working day by an open-source agentl pipeline you can read below and run yourself.

  • 30 currencies
  • 90 days of history
  • Updated weekdays 15:30 UTC
  • No API key

1 EUR in US dollar · ...

...

Latest rates

Currency1 EUR =Day changePrevious

Pipeline status

Loading
Rows read
-
Rows changed
-
Checks passed
-
Duration
-
  • Last run-
  • Last success-
  • Sources downloaded-
  • History writes-
From status.json, written by run.py All workflow runs

How this page is built

One pipeline file. No server, no database to run, no API key.

GitHub Actions runs this agentl pipeline every working day after the ECB publishes. It writes two JSON files, and this static page reads them. Below is the exact pipeline.yaml that produced the numbers above.

  1. 01
    Fetchhttp.get with if_changed
  2. 02
    ParseECB XML to rows, dedupe
  3. 03
    Check5 rules, stop on failure
  4. 04
    StoreSQLite changeset with history
  5. 05
    PublishJSON + run status to this page
fx/pipeline.yamlView on GitHub
# Loading pipeline.yaml...
  1. 1Only download when the ECB file changes

    if_changed: { by: [etag, last_modified] } remembers the validators of the last good run. If the daily file is the same, the run stops with outcome no_change and nothing is rewritten.

  2. 2Checks before anything is written

    A check step asserts at least 20 rows, no nulls, one row per date and currency, valid codes, positive rates and data less than 7 days old. on_fail: stop keeps bad data out.

  3. 3A changeset write with history

    sqlite.write with mode: changeset upserts on [date, currency] and reports rows inserted, updated and unchanged.

  4. 4The run status is data too

    run.py calls agentl.run() with an event listener and turns the result into status.json: the panel above, including a failed run.

Build your own in an afternoon.

agentl is an open-source YAML ETL library for Python: connectors, checks, incremental runs and, when you need judgement, LLM agent steps. MIT licensed.

$ pip install agentl-etl

Run this pipeline yourself

$ git clone https://github.com/arimayuji/agentl-examples && cd agentl-examples/fx $ pip install agentl-etl $ python run.py && python -m http.server -d site 8000