Skip to content

This page provides some tips on how to upgrade AI agent between different versions of the Open Autonomy framework. For full release notes check the Open-Autonomy repo.

Below, we describe the additional manual steps required to upgrade between different versions:

Open Autonomy

v0.21.18 to v0.21.19

This release introduces a mock Tendermint server for single-agent services and significantly trims the framework's runtime dependency footprint.

docker moved to an optional [docker] extra

The docker Python SDK is no longer a hard dependency. If your code imports docker directly (for example, custom tooling that builds or manages containers outside of autonomy deploy), install with:

pip install open-autonomy[docker]

The autonomy deploy workflows keep working as before — the extra is pulled in automatically by open-autonomy[all].

Dropped transitive dependencies

The following packages are no longer installed by open-autonomy:

  • texttable — replaced by an inlined table renderer in chain helpers
  • python-dotenv — replaced by aea.helpers.base.load_env_file
  • typing_extensions — no longer used
  • aiohttp — replaced by asyncio stdlib HTTP server
  • hexbytes — replaced by plain bytes for multisend tx data
  • gql — subgraph queries now posted via the aea http helper
  • Flask, Werkzeug — replaced by an inlined Flask-compatible HTTP server
  • watchdog — removed (no runtime users in autonomy)
  • protobuf (explicit pin) — arrives transitively via open-aea

If your downstream repo relied on any of these being installed by open-autonomy, declare them directly in your own pyproject.toml / setup.py.

[chain] extra added

On-chain helpers now live behind an optional [chain] extra. open-autonomy[all] still pulls it in.

PyPI license classifier fix

The 0.21.18 wheel shipped with License :: Other/Proprietary License in its metadata because of a malformed license field. The wheel now correctly advertises License :: OSI Approved :: Apache Software License. If you added an open-autonomy entry to [Authorized Packages] in liccheck config as a workaround, you can remove it.

Mock Tendermint for single-agent services

You can now skip running a Tendermint node entirely for single-agent services by setting use_mock: true (with use_tendermint: false) in the valory/abci connection config (via connection overrides or aea-config.yaml). The built-in MockServerChannel produces blocks on transaction submission and is a drop-in replacement for testing and lightweight deployments. See docs/advanced_reference/mock_tendermint.md.

Concrete upgrade steps

  1. Bump open-autonomy pin to ==0.21.19.
  2. If you import docker in your own code, switch your dependency to open-autonomy[docker] or add docker directly.
  3. If you were pinning any of the dropped transitive deps via open-autonomy, declare them directly.
  4. Run autonomy packages sync --update-packages to pull the updated third-party packages.
  5. Run autonomy packages lock to regenerate downstream package hashes.

v0.21.17 to v0.21.18

  • open-aea-ledger-ethereum-hwi is now an optional extra instead of a hard dependency. If you use hardware wallet support (--hwi flag), install with pip install open-autonomy[hwi]. This change fixes multi-platform Docker image builds on armv7 which failed due to missing pre-built wheels for hidapi and Pillow.

v0.21.16 to v0.21.17

This release bumps open-aea from 2.1.0 to 2.2.1, migrates scripts to CLI commands, and removes the unmaintained open-aea-ledger-ethereum-flashbots plugin.

Main dependency updates to account for:

  • open-aea: ==2.1.0 -> ==2.2.1
  • open-aea-ledger-ethereum: ==2.1.0 -> ==2.2.1
  • open-aea-ledger-ethereum-hwi: ==2.1.0 -> ==2.2.1
  • open-aea-ledger-cosmos: ==2.1.0 -> ==2.2.1
  • open-aea-cli-ipfs: ==2.1.0 -> ==2.2.1
  • tomte: ==0.6.1 -> ==0.6.5

open-aea-ledger-ethereum-flashbots removed upstream

The open-aea-ledger-ethereum-flashbots plugin was removed from open-aea in 2.2.1. The last published 2.2.0 wheel remains on PyPI but receives no further releases.

Impact on downstream repos:

  • Remove open-aea-ledger-ethereum-flashbots from dependency pins in pyproject.toml, Pipfile, tox.ini, or setup.py.
  • Drop any ethereum_flashbots block from the valory/ledger connection config (the upstream connection.yaml no longer declares it — use plain ethereum instead).
  • Remove aea_ledger_ethereum_flashbots PyInstaller flags (--collect-all, --hidden-import) from release workflows.
  • Audit aea-config.yaml in agent packages for references to open-aea-ledger-ethereum-flashbots and drop them.
  • autonomy replay flows no longer provision an ethereum_flashbots_private_key.txt or register the ethereum-flashbots key. Replays that relied on the flashbots ledger being set up implicitly will fail at aea run. Switch to plain ethereum in replay fixtures, or pin open-aea<=2.2.0 + the frozen flashbots plugin.
  • The skill-level use_flashbots parameter on send_raw_transaction is intentionally preserved (default False) to avoid a payload wire-format change. Agents with use_flashbots=False keep working unchanged; agents that explicitly set use_flashbots=True will fail at runtime.

Scripts → CLI migration

All Python scripts in scripts/ have been migrated to CLI commands:

  • check_copyright.pytomte check-copyright
  • check_doc_links.pytomte check-doc-links
  • freeze_dependencies.pytomte freeze-dependencies
  • generate_package_list.pyaea-ci generate-pkg-list
  • check_ipfs_hashes_pushed.pyaea-ci check-ipfs-pushed
  • check_third_party_hashes.pyaea-ci check-third-party-hashes --upstream valory-xyz/open-aea@2.2.1
  • generate_api_documentation.pyaea-ci generate-api-docs --source-dir autonomy ...
  • generate_contract_list.pyaea-helpers generate-contract-list

If your CI invokes any of these scripts directly, update to the corresponding CLI command.

Concrete upgrade steps

  1. Bump open-autonomy pin to ==0.21.17.
  2. Bump all open-aea* pins to ==2.2.1.
  3. Drop open-aea-ledger-ethereum-flashbots from dependencies and configs as described above.
  4. Run autonomy packages sync --update-packages to pull the updated third-party packages.
  5. Run autonomy packages lock to regenerate downstream package hashes.
  6. Replace any direct scripts/ invocations with the corresponding CLI commands.

v0.21.15 to v0.21.16

  • The aea-helpers plugin now includes 4 new commands for deployment and release management:
    • aea-helpers config-replace --mapping config-mapping.json — replaces scripts/aea-config-replace.py with a generic YAML config substitution using a mapping file
    • aea-helpers run-agent --name <agent> — replaces run_agent.sh with built-in port management (--free-ports), config replacement, and tendermint lifecycle
    • aea-helpers run-service --name <service> — replaces run_service.sh with parameterized deployment (agent count, resource limits, pre/post hooks)
    • aea-helpers make-release --version <ver> --env <env> — replaces make_release.sh for creating git tags and GitHub releases
  • New --skip-tendermint flag on run-agent for agents configured with use_tendermint: false (e.g. IEKit)
  • Fixes customs package type handling in check-doc-hashes (no longer crashes on mech tool packages)
  • Fixes IPFS connection handler to support directories and binary files
  • To migrate deployment scripts: extract your PATH_TO_VAR dict from aea-config-replace.py into a config-mapping.json file, then delete aea-config-replace.py, run_agent.sh, and run_service.sh
  • Mech repos should use the mech CLI from mech-server instead of run_agent.sh/run_service.sh

v0.21.14 to v0.21.15

  • The aea-helpers plugin is now available as a standalone PyPI package. It consolidates the duplicated CI scripts (bump.py, check_dependencies.py, check_doc_ipfs_hashes.py) that were previously copy-pasted across repositories.
  • If your repository has local copies of these scripts in scripts/ or utils/, you can replace them with the aea-helpers CLI commands:
    • aea-helpers bump-dependencies replaces scripts/bump.py
    • aea-helpers check-dependencies --check replaces scripts/check_dependencies.py
    • aea-helpers check-doc-hashes replaces scripts/check_doc_ipfs_hashes.py
  • Add aea-helpers>=0.1.0 to your project dependencies and tox.ini deps to use.
  • Hardcoded package exclusions (e.g. requests version hacks, popping open-aea-ledger-solana) are now configurable via --exclude flags instead.

v0.21.12 to v0.21.14

  • Ensures ABIs have all parameters from explorer #2445
  • Fixes ERC20 transfer transaction handling #2444
  • Fixes environment variable override validation for friendly names #2447
  • Fixes requests version range to <2.33.0,>=2.28.1 for compatibility #2443

No breaking changes. Bump open-autonomy version pin and regenerate package hashes.

v0.21.11 to v0.21.12

  • Python support is now 3.10-3.14 (previously 3.10-3.11).
  • Regenerate your environment and lock files when upgrading, as several toolchain and runtime dependencies were bumped to support newer Python versions.

Main dependency updates to account for:

  • open-aea: ==2.0.8 -> ==2.1.0
  • tomte: ==0.4.0 -> ==0.6.1
  • click: >=8.1.0,<8.3.0 -> >=8.1.0,<9
  • pytest: ==7.4.4 -> ==8.4.2
  • protobuf: >=4.21.6,<4.25.0 -> >=5,<6
  • requests: >=2.28.1,<2.32.5 -> >=2.28.1,<2.33.0
  • docker: 4.2.0 -> 7.1.0
  • typing_extensions: <4.15.0,>=3.10.0.2 -> <=4.15.0,>=3.10.0.2
  • grpcio: ==1.53.0 -> ==1.78.0

Exact APIs/functions to check:

1) Click flag_value default handling

If your downstream CLI uses Click options with flag_value, audit these exact patterns against Open Autonomy fixes:

  • autonomy/cli/deploy.py::build_deployment_command
  • autonomy/cli/deploy.py::run
  • autonomy/cli/deploy.py::run_deployment_from_token
  • autonomy/cli/fetch.py::fetch
  • autonomy/cli/analyse.py::abci_app_specs
  • autonomy/cli/analyse.py::abci_app_specs
  • autonomy/cli/mint.py::mint
  • autonomy/cli/service.py::service

Required behaviour:

  • Do not rely on decorator order to select defaults when multiple flags write to the same parameter.
  • Use explicit normalization in code for unset values (e.g. if sync_type is None: sync_type = SyncTypes.THIRD_PARTY).
  • Ensure upgrade command handlers consume a single registry: str mode rather than split boolean flags (local / remote).

2) Python 3.13/3.14 asyncio/multiprocessing compatibility

Audit downstream code for these exact anti-patterns and replacements:

  • multiprocessing.Manager() without explicit context on Python 3.14+.
  • Required fix pattern: use multiprocessing.get_context("spawn").Manager() where process-manager context must be controlled.
  • Accessing private queue loop internals (e.g. queue._loop).
  • Required fix pattern: store/use explicit event loop references instead of private attributes.
  • Removed/unsupported asyncio APIs in modern Python:
  • asyncio.StreamReader(loop=...)
  • asyncio.ensure_future(..., loop=...)
  • unconditional asyncio.get_child_watcher() / child-watcher usage on Python 3.14+
  • Ready-awaitable internals relying on module-level coroutine/future objects.
  • Required fix pattern: use a lightweight awaitable object/factory that is loop-safe across Python 3.10-3.14.

3) Plugin dependency compatibility (Ethereum + Flashbots)

If you install both plugins, verify dependency constraints in your lock/constraints files:

  • The Flashbots plugin package must be compatible with the same 2.1.x line of the Ethereum plugin package.
  • Reject locks where Flashbots still constrains Ethereum to <2.1.0.

Run after upgrade:

make new_env

API compatibility notes

  • CLI/API-surface changes:
  • autonomy.cli.deploy.py::build_deployment_command and autonomy.cli.deploy.py::run_deployment_from_token now always prompt on -p and support AEA_PASSWORD for --password.

v0.21.10 to v0.21.11

No backwards incompatible changes.

v0.21.9 to v0.21.10

No backwards incompatible changes.

v0.21.8 to v0.21.9

No backwards incompatible changes.

v0.21.7 to v0.21.8

No backwards incompatible changes.

v0.21.6 to v0.21.7

No backwards incompatible changes.

v0.21.5 to v0.21.6

No backwards incompatible changes.

v0.21.4 to v0.21.5

No backwards incompatible changes.

v0.21.3 to v0.21.4

No backwards incompatible changes.

v0.21.2 to v0.21.3

No backwards incompatible changes.

v0.21.1 to v0.21.2

No backwards incompatible changes.

v0.21.0 to v0.21.1

No backwards incompatible changes.

v0.20.1 to v0.21.0

Breaking changes (open-autonomy) - autonomy analyse logs will now throw ValueError if the agent's name is not valid for a SQL query. - Action required: Agent's name must comply with the regex ^[a-zA-Z_][a-zA-Z0-9_-]*$. - Web requests made by open-autonomy will now timeout in 30 seconds if no response is received. - Action required: Handle the Timeout error if not already. - get_origin and get_args are now removed. - Action required: Import them directly from typing.

Notable dependency upgrades - open-aea v1.65.0→v2.0.0 - Link: https://github.com/valory-xyz/open-aea/blob/main/docs/upgrading.md#v1650-to-v200 - Important changes: (Coming from click) - get_metavar now requires a new parameter, ctx: Context. - aea, autonomy, and their subcommands that expect some arguments (for example aea, aea ipfs, etc.), when used without any arguments will now finish with exit code 2 instead of 0, and print their usage help in stderr. - web3 v6→v7 - Link: https://web3py.readthedocs.io/en/stable/migration.html#migrating-from-v6-to-v7 - Important changes: - Contract instances will now have encode_abi function instead of encodeABI. - fn_name parameter of encode_abi is changed to abi_element_identifier. - Transaction related instances will now have attributes in snake_case instead of camelCase. For example, raw_transaction instead of rawTransaction. (Coming from eth-account also) - HexBytes instances' .hex() method will not return a string with 0x prefix. Use .to_0x_hex() instead. (Coming from hexbytes)

v0.20.1 to v0.20.2

No backwards incompatible changes.

v0.20.0 to v0.20.1

No backwards incompatible changes.

v0.19.11 to v0.20.0

  • The Chain and ChainType now have the OPTIMISM enum value. And the OPTIMISTIC enum value has been removed.

v0.19.10 to v0.19.11

No backwards incompatible changes.

v0.19.9 to v0.19.10

No backwards incompatible changes.

v0.19.8 to v0.19.9

No backwards incompatible changes.

v0.19.7 to v0.19.8

No backwards incompatible changes.

v0.19.6 to v0.19.7

No backwards incompatible changes.

v0.19.5 to v0.19.6

No backwards incompatible changes.

v0.19.4 to v0.19.5

No backwards incompatible changes.

v0.19.3 to v0.19.4

No backwards incompatible changes.

v0.19.2 to v0.19.3

No backwards incompatible changes.

v0.19.1 to v0.19.2

No backwards incompatible changes.

v0.19.0 to v0.19.1

No backwards incompatible changes.

v0.18.4 to v0.19.0

  • The ledger has introduced a new configuration, called min_allowed_tip. The value is set to 1GWEI. However, this limit only applies for Gnosis. This is not expected to cause important differences in the calculated tip for the rest of the chains, because there is an outlier detection mechanism. However, the best practice would be to override this value to 0 for any chain other than Gnosis. This is planned to be changed in the next open-aea version to improve DevX and make this a non-breaking change.
  • The agent now performs an early failure check when attributes for rounds are missing. This check is implemented in the metaclass using a specialized attribute named extended_requirements. To customize the attributes being checked for a specific round, developers must modify the extended_requirements attribute.

v0.18.3 to v0.18.4

No backwards incompatible changes.

v0.18.2 to v0.18.3

No backwards incompatible changes.

v0.18.1 to v0.18.2

No backwards incompatible changes.

v0.18.0 to v0.18.1

No backwards incompatible changes.

v0.17.0 to v0.18.0

  • The agent and service configurations for dictionaries should now be in the following form: ${dict:{"some_key": "some_value"}. For more information, please take a look at an example upgrade in https://github.com/valory-xyz/trader/pull/311.
  • The generated builds do not include the environment variables of the agents inside the compose file anymore. Instead, they exist in a separate environment file per agent and are referenced in the compose file.

v0.16.1 to v0.17.0

  • The structure of the build folder has been updated. The folder is now named abci_build_{uuid}, where {uuid} is a 4-character random hash, replacing the previous format of abci_build.
  • The naming convention for service containers has been revised. Previously, containers were named {trimmed_service_name}_{abci|tm}_{index}. Now, the format has changed to {trimmed_service_name}{uuid}_{abci|tm}_{index}, where {uuid} is a unique identifier.

v0.16.0 to v0.16.1

No backwards incompatible changes.

v0.15.2 to v0.16.0

  • The priority_fee_estimation_trigger has been removed from the eip1559 configuration of the ledger connection.
  • The default_priority_fee is now optional. If it is set to None, dynamic pricing will be applied. Otherwise, the specified value will be used.

v0.15.1 to v0.15.2

No backwards incompatible changes.

v0.15.0 to v0.15.1

No backwards incompatible changes.

v0.14.14.post2 to v0.15.0

  • After this release, developers do not need to make sure that cross-period persisted keys preexist in the database before the first period ends anymore. You may remove any additional logic you had in place to protect from that (#2131).
  • The cross-period persisted keys are now initialized by the framework during startup. The corresponding property is used to get the value. If a property with the same name does not exist, then the pre-existing value in the db is used, otherwise None.
  • You need to keep the above in mind when:
  • Reading cross-period values from the db.
  • Implementing properties for cross-period keys, as the returned value will end up being the one that will be writen to the db during startup.

v0.14.14 to v0.14.14.post2

No backwards incompatible changes.

v0.14.14.post1 to v0.14.14.post2

The breaking feature introduced in v0.14.14 and v0.14.14.post1 has been removed. For more information please check the HISTORY.md file.

v0.14.14 to v0.14.14.post1

A breaking feature was introduced. We suggest using the v0.14.14.post2 release instead. For more information please check the HISTORY.md file.

v0.14.13 to v0.14.14

A breaking feature was introduced. We suggest using the v0.14.14.post2 release instead. For more information please check the HISTORY.md file.

v0.14.12 to v0.14.13

No backwards incompatible changes

v0.14.11.post1 to v0.14.12

  • This release pins click>=8.1.0,<9 so update your environments to avoid dependency conflicts

v0.14.11 to v0.14.11.post1

No backwards incompatible changes

v0.14.10 to v0.14.11

No backwards incompatible changes

v0.14.9 to v0.14.10

No backwards incompatible changes

v0.14.8 to v0.14.9

No backwards incompatible changes

v0.14.7 to v0.14.8

No backwards incompatible changes

v0.14.6 to v0.14.7

No backwards incompatible changes

v0.14.5 to v0.14.6

No backwards incompatible changes

v0.14.4 to v0.14.5

No backwards incompatible changes

v0.14.3.post1 to v0.14.4

No backwards incompatible changes

v0.14.3 to v0.14.3.post1

No backwards incompatible changes

v0.14.2 to v0.14.3

No backwards incompatible changes

v0.14.1 to v0.14.2

No backwards incompatible changes

v0.14.0 to v0.14.1

No backwards incompatible changes

v0.13.10 to v0.14.0

  • This release introduces automated dependency verification on the minting tools, this means when minting a package you will have to mint all of the dependencies beforehand. The minting tools uses a subgraph to verify dependencies so you might have to wait for a small amount of time before you can mint the package after you mint the dependencies.
  • Since the dependency verification is automated the --skip-hash-check and --skip-dependencies-check flags have been deprecated on the autonomy mint/service command groups

v0.13.9.post1 to v0.13.10

No backwards incompatible changes

v0.13.9 to v0.13.9.post1

No backwards incompatible changes

v0.13.8 to v0.13.9

No backwards incompatible changes

v0.13.7 to v0.13.8

No backwards incompatible changes

v0.13.6 to v0.13.7

No backwards incompatible changes

v0.13.5 to v0.13.6

No backwards incompatible changes

v0.13.4 to v0.13.5

No backwards incompatible changes

v0.13.3 to v0.13.4

No backwards incompatible changes

v0.13.2 to v0.13.3

No backwards incompatible changes

v0.13.1 to v0.13.2

  • The usage --password of flag has been deprecated on autonomy deploy command group. Use OPEN_AUTONOMY_PRIVATE_KEY_PASSWORD environment variable to export the private key password string when running autonomy deploy build/run commands.

v0.13.1 to v0.13.1.post1

No backwards incompatible changes

v0.13.0 to v0.13.1

  • This release introduces support for defining service level dependencies, which means you can define python dependencies at the service level which will take priority over the agent or component level dependencies. The dependencies parameter is currently optional to make the upgrading easier. But this will be required in the next release, so please update your services accordingly.

v0.12.1.post4 to v0.13.0

  • open-aea-web3 has been replaced with web3py
  • protobuf has been bumped to protobuf>=4.21.6,<5.0.0, this means you will have to bump your protocol generator to v24.3 and generate your protocol packages again.
  • The valory/open-autonomy image will use Python 3.11 as default interpreter for running agents

v0.12.1.post3 to v0.12.1.post4

No backwards incompatible changes

v0.12.1.post2 to v0.12.1.post3

No backwards incompatible changes

v0.12.1.post1 to v0.12.1.post2

No backwards incompatible changes

v0.12.1 to v0.12.1.post1

  • Environment variable names have changed for custom contract address, refer to the mint/service CLI tools documentation regarding the changes.

v0.12.0 to v0.12.1

No backwards incompatible changes

v0.11.1 to v0.12.0

  • Renamed the background_behaviour_cls in AbstractRoundBehaviour to termination_behaviour_cls. Should be taken into consideration for all the apps that are utilizing the termination.
  • Renamed the background_behaviour in AbstractRoundBehaviour to termination_behaviour.
  • Renamed the is_background_behaviour_set property in AbstractRoundBehaviour to is_termination_set.
  • Renamed the background_round_cls argument of the add_termination method in AbciApp to termination_round_cls. Should be taken into consideration for all the apps that are utilizing the termination.
  • Renamed the background_round_cls attribute of the AbciApp to termination_round_cls.
  • Renamed the _background_round attribute of the AbciApp to _termination_round.
  • Renamed the background_round property of the AbciApp to termination_round.
  • The AbstractRound class now requires a SkillContext positional argument. To accommodate this change, all round tests will need to be modified to include a mocked context in addition to the synchronized data.

1 && 4 should be taken into consideration for all the apps that are utilizing the termination.

v0.11.0 to v0.11.1

The autonomy deploy run command now handles the exists from deployment and to do this we're running the deployments in detached mode and waiting for the user to cancel what that means is from now on when running the deployments the logs won't be printed out by default. If you want to check out the logs for containers you can use docker logs command.

v0.10.11.post1 to v0.11.0

  • web3py has been replaced with open-aea-web3 and we forked this from web3py@v6.0.0, that means the method names will use the snake_case and the camelCase naming has been deprecated
  • Support for Python 3.7 has been deprecated

v0.10.11 to v0.10.11.post1

No backwards incompatible changes

v0.10.10.post1 to v0.10.11

No backwards incompatible changes

v0.10.10 to v0.10.10.post1

No backwards incompatible changes

v0.10.9 to v0.10.10

No backwards incompatible changes

v0.10.8 to v0.10.9

No backwards incompatible changes

v0.10.7 to v0.10.8

No backwards incompatible changes

v0.10.6 to v0.10.7

No backwards incompatible changes

v0.10.5.post2 to v0.10.6

No backwards incompatible changes

v0.10.5.post1 to v0.10.5.post2

No backwards incompatible changes

v0.10.4 to v0.10.5.post1

No backwards incompatible changes

v0.10.3 to v0.10.4

No backwards incompatible changes

v0.10.2 to v0.10.3

No backwards incompatible changes

v0.10.1 to v0.10.2

No backwards incompatible changes

v0.10.0.post2 to v0.10.1

This version fixes a bug on the build tools which will introduce a change on the expected output of the deployment builds. Before this bug fix the deployment tools did not index the agents on the manual builds, which lead to the behaviour where if you built the deployment using just one key or --n flag the agents were indexed from 0 instead. With this bug fix the deployment tools will use the all_participants list to index the agents before building the deployments.

v0.10.0.post1 to v0.10.0.post2

No backwards incompatible changes

v0.10.0 to v0.10.0.post1

No backwards incompatible changes

v0.9.1 to v0.10.0

Breaking changes

  • The AbciAppDB's create() is responsible for setting the cross-period keys for the new period and converting the corresponding data to the correct format. The skills using the create() method now do not need to manually set the data for the next period as this is handled automatically via the cross-period keys.
  • The setup parameters should not be defined as lists anymore.
  • observation_interval has been renamed to reset_pause_duration.
  • The services which are currently using termination will need to set use_termination: True in their configuration in order to continue using it. Otherwise, use_termination: False should be used.
  • Before this update the autonomy mint/service command groups used to have key file as a required argument, but it's been made optional since the usage of hardware wallet does not require a key file.
  • Autonomy deploy build does not support the usage of --force flag to remove the existing build directories.
  • The service components need to be updated. The service configurations needs to specify the new deployment parameter, which is used in order to expose agent ports when using the deployment commands. It can be empty (deployment: {}) if you do not intend to override the generated compose file for the deployments to expose agent ports.
  • The agent configurations will need to be updated with regard to the following overrides:
  • In the ABCI skill override don't use TENDERMINT_URL and TENDERMINT_COM_URL for Tendermint parameters.
  • In the ABCI connection override don't use ABCI_HOST and ABCI_PORT for ABCI connection parameters.
  • Tendermint and ABCI connection parameters now use the same environment variables' pattern as all other configurations.

v0.9.0 to v0.9.1

No backwards incompatible changes

v0.8.0 to v0.9.0

Breaking changes

  • On the skill configuration
  • The max_participants parameter has been removed. If the consensus configuration is empty after removing max_participants, it should be removed as well.
  • The consensus_threshold should now be specified in the setup parameters. If null, the recommended setting, then it is calculated automatically from the participants provided.
  • The synchronized database is now serializable and hashable. This means that the data inserted into the database are now enforced to be primitive or non-primitive built-in types only, except for sets and frozensets since an error is raised as they cannot be serialized/hashed and therefore cannot be inserted into the database. In essence, the data should be json serializable.
  • The usage of local Tendermint Consensus Gadget is optional in the deployment setup, use -ltm, --local-tm-setup when building a deployment using autonomy deploy build command to include a Tendermint Consensus Gadget setup.
  • The cross_period_persisted_keys and database conditions needs to be defined as sets as part of the AbciApp class, before this they were defined using a list
  • On the round class implementation
  • payload_attribute attribute has been removed
  • Usage of payloads with multiple attributes has been simplified since the user can now specify a tuple of keys in order to store all the data of a payload to the database.
  • Round selection_key is now a tuple for multiple-attribute payloads.

v0.7.0 to v0.8.0

  • Support for --rpc and --sca flags has been deprecated on autonomy deploy from-token command. Refer to the CLI documentation to understand how to use custom RPC.
  • The transaction payload classes needs to be defined using the data classes and needs to be immutable
  • Transaction is a data class
  • IPFS connection and protocol need to be added to your aea-config.yaml, if they utilize valory/abstract_round_abci skill.
  • IPFS dialogues and handler need to be specified.
  • send_to_ipfs and get_from_ipfs are now moved to BaseBehaviour and are generators.
  • E2E tests now utilize a local deployment of the IPFS, as such you will need to import the ipfs_daemon and ipfs_domain fixtures from aea_test_autonomy.fixture_helpers.

v0.6.0 to v0.7.0

Breaking changes

  • The new AbstractRound and BaseBehaviour meta classes enforce checks on the class attributes. For concrete classes inheriting from AbstractRound the developer must set synchronized_data_class, allowed_tx_type and payload_attribute. For concrete classes inheriting from BaseBehaviour the developer must set matching_round. These assumptions were present before but not enforced at the class definition level by the framework.
  • The set of all_participants is now retrieved from the safe instance referenced by safe_contract_address and assumed to be present on the target chain.
  • The usage of safe_deployment_abci has been deprecated and support for the package has been dropped. From now on, use the development tools for running a local development image with pre-configured safe to test your applications.

v0.5.0.post2 to v0.6.0

Breaking changes

  • Optional: The developer can update to use the auto-generated behaviour and round ids. In this case, the behaviour_id and round_id need no longer be set on the class. When accessing the auto generated ids on the class use auto_behaviour_id() and auto_round_id() class methods. On the instance behaviour_id and round_id properties resolve the auto id class methods, so no change is required.
  • Required: The pre- (db_pre_conditions) and post- (db_post_conditions) conditions on the synchronized data need to be defined for each initial and final state in an AbciApp. See transaction_settlement_abci for an example.

v0.5.0.post1 to v0.5.0.post2

No backwards incompatible changes

v0.5.0 to v0.5.0.post1

No backwards incompatible changes

v0.4.0 to v0.5.0

One backwards incompatible change

Service component

  • This release introduces a new format for defining multiple overrides for an agent on a service configuration. Please follow this guide to update your service configurations accordingly.

v0.3.5 to v0.4.0

Multiple backwards incompatible changes

Autonomy CLI module

  • autonomy analyse abci command group has been deprecated

  • autonomy analyse abci check-app-specs and autonomy analyse generate-app-specs has been merged into autonomy analyse fsm-specs

  • The usage of --infile flag has been deprecated and replaced with the usage of the --package flag
  • Input format for --app-class has been changed from packages.author.skills.skill_name.rounds.SomeAbciApp to SomeAbciApp
  • Users will have to manually switch to the newer version, i.e., remove the path prefix in all their FSM specifications. For example an FSM specification with a label: packages.author.skills.my_abci.rounds.MyAbciApp now becomes label: MyAbciApp

  • autonomy analyse abci check-handlers has been moved to autonomy analyse handlers

  • --packages-dr flag has been deprecated, use --registry-path at top level instead
  • Input format for common handlers and skip skills options has been updated

    • Old format - --common abci,http,contract_api,ledger_api,signing --skip abstract_abci,counter,counter_client,hello_world_abci
    • New format -h abci -h http -h contract_api -h ledger_api -h signing -i abstract_abci -i counter -i counter_client -i hello_world_abci
  • autonomy analyse abci docstrings has been moved to autonomy analyse docstrings

  • --check flag has been deprecated and the command will perform the check by default
  • --update flag has been introduced to update the docstring if necessary

  • autonomy analyse abci logs has been moved to autonomy analyse logs

Autonomy test plugin

  • tag property has been renamed to image on aea_test_autonomy.docker.base.DockerImage class

Core packages

  • _HarHatHelperIntegration has been renamed to HardHatHelperIntegration in packages/valory/skills/abstract_round_abci/test_tools/integration.py
  • ResetPauseABCIApp has been renamed to ResetPauseAbciApp in packages/valory/skills/reset_pause_abci/rounds.py
  • ApiSpecs now use dataclasses in order to encapsulate data, which means that response_key, and response_type can be accessed via the response_info instance attribute. Moreover, this attribute now includes the new response_index and error_key, error_index, error_type, error_data. The retries_info instance attribute gives access to the retries_attempted and retries which are now public and also includes the new backoff_factor.

Test tools

  • The packages.valory.skills.abstract_round_abci.test_tools.apis module which contained the DummyMessage has been removed. MagicMock can be used instead. For example, DummyMessage(my_test_body) can be converted to MagicMock(body=my_test_body).

v0.3.4 to v0.3.5

No backwards incompatible changes

Upgrade guide

This release introduces a new format for packages.json file, the older version is still supported but will be deprecated on v1.0.0 so make sure to update your projects to use the new format.

v0.3.3 to v0.3.4

No backwards incompatible changes

v0.3.2 to v0.3.3

No backwards incompatible changes

v0.3.1 to v0.3.2

No backwards incompatible changes

v0.3.0 to v0.3.1

No backwards incompatible changes

v0.2.2 to v0.3.0

No backwards incompatible changes except:

  • Deprecated the usage of hashes.csv and replaces it with packages.json, which is maintained by autonomy packages lock
  • --check flag is deprecated from autonomy hash all, from now package consistencies can be verified by autonomy packages lock --check
  • Various test fixtures have moved and been renamed.

v0.2.1.post1 to v0.2.2

No backwards incompatible changes except:

All imports from autonomy.test_tools.* are now found at aea_test_autonomy.*, after installing open-aea-test-autonomy.

v0.2.1 to v0.2.1.post1

No backwards incompatible changes

v0.2.0 to v0.2.1

  • build-images command has been renamed to build-image
  • Build support for dependency has been removed from the build-image command
  • autonomy deploy build deployment has been renamed to autonomy deploy build

Refer to quick start docs for more information on the updated deployment flow.

v0.1.6 to v0.2.0

Multiple backwards incompatible changes:

  • The service config no longer accepts the network key on the first YAML page. The network can now be defined via the package overrides.
  • Dependency specifications are now checked against imports for all packages, this means initially packages might need modifying to reference/unreference missing/irrelevant dependencies.
  • The global configuration file for the aea/autonomy CLI has a breaking change. Please remove ~/.aea/cli_config.yaml and rerun autonomy init --remote.

v0.1.5 to v0.1.6

No backwards incompatible changes

v0.1.4 to v0.1.5

No backwards incompatible changes

v0.1.3 to v0.1.4

This release changes the build process for docker images and service deployments. Refer to documentation for more information.

v0.1.2 to v0.1.3

This release introduces the usage of CID v1 hashes.

v0.1.1 to v0.1.2

No backwards incompatible changes

v0.1.0 to v0.1.1

No backwards incompatible changes

v0.1.0rc1/2 to v0.1.0