A quickstart to run OLAS AI agents
- Windows 10/11: WSL2 (Recommended) / Git BASH
- Mac ARM / Intel
- Linux
- Raspberry Pi 4
Ensure your machine satisfies the requirements:
- Python
==3.10 - Poetry
>=1.8.3 - Docker Compose
- You need native assets of the chain on which your AI agent will run in one of your wallets.
- You need an RPC for your agent instance. We recommend Quicknode RPC.
Clone this repository locally and execute:
chmod +x run_service.sh
./run_service.sh <ai_agent_config.json>where ai_agent_config.json is the path to your AI agent configuration file. Check the configs/ directory for available configurations of different AI agents.
| AI agent | Config path | Docs |
|---|---|---|
| Trader | configs/config_predict_trader.json |
Trader README |
| Mech | configs/config_mech.json |
Mech README |
| Optimus | configs/config_optimus.json |
Optimus README |
| Agents.fun | configs/config_agents.fun.json |
Agents.fun README |
Answer 1) No staking when prompted:
Please, select your staking program preference
⚠️ Warning
The code within this repository is provided without any warranties. It is important to note that the code has not been audited for potential security vulnerabilities. Using this code could potentially lead to loss of funds, compromised data, or asset risk. Exercise caution and use this code at your own risk. Please refer to the LICENSE file for details about the terms and conditions.
Each staking program has different OLAS requirements. The script will check that your owner address meets the minimum required OLAS on the required Chain.
Select your preferred staking program when prompted (example):
Please, select your staking program preference
----------------------------------------------
1) No staking
Your Olas Predict AI agent will still actively participate in prediction
markets, but it will not be staked within any staking program.
2) Quickstart Beta - Hobbyist
The Quickstart Beta - Hobbyist staking contract offers 100 slots for
operators running Olas Predict AI agents with the quickstart. It is designed as
a step up from Coastal Staker Expeditions, requiring 100 OLAS for staking.
The rewards are also more attractive than with Coastal Staker Expeditions.
3) Quickstart Beta - Expert
The Quickstart Beta - Expert staking contract offers 20 slots for operators
running Olas Predict AI agents with the quickstart. It is designed for
professional agent operators, requiring 1000 OLAS for staking. The rewards
are proportional to the Quickstart Beta - Hobbyist.
...
Find below a diagram of the possible status an AI agent can be in the staking program:
AI agents can become staked by invoking the stake() contract method, where AI agent parameters and deposit amounts are verified. Staked AI agents can call the checkpoint() method at regular intervals, ensuring liveness checks and calculating staking rewards. In case an AI agent remains inactive beyond the specified maxAllowedInactivity time, it faces eviction from the staking program, ceasing to accrue additional rewards. Staked or evicted AI agents can be unstaked by calling the unstake() contract method. They can do so after minStakingDuration has passed or if no more staking rewards are available.
Notes:
-
Staking is currently in a testing phase, so the number of AI agents that can be staked might be limited.
-
AI agents are evicted after accumulating 2 consecutive checkpoints without meeting the activity threshold.
-
Currently, the minimum staking time is approximately 3 days. In particular, an AI agent cannot be unstaked during the minimum staking period.
-
Once a staking program is selected, you can reset your preference by stopping your AI agent by running
./stop_service.sh <ai_agent_config.json>and then running the command./reset_staking.sh <ai_agent_config.json>
Keep in mind that your AI agent must stay for
minStakingDurationin a staking program (typically 3 days) before you can change to a new program.
Once the command has completed, i.e. the AI agent is running, you can see the live logs with:
docker logs $(docker ps --filter "name=<ai_agent_name>" --format "{{.Names}}" | grep "_abci" | head -n 1) --followReplace <ai_agent_name> with the name of the AI agent. For example: trader.
You can also use this command to investigate your agent's logs:
./analyse_logs.sh <ai_agent_config.json> --agent=aea_0 --reset-dbFor example, inspect the state transitions using this command:
./analyse_logs.sh <ai_agent_config.json> --agent=aea_0 --reset-db --fsmThis will output the different state transitions of your AI agent per period, for example:
For more options on the above command run:
./analyse_logs.sh --helpor take a look at the command documentation.
To stop your AI agent, use:
./stop_service.sh <ai_agent_config.json>If you entered any input when running an AI agent for the first time, and later want to change them, use the following script:
./reset_configs.sh <ai_agent_config.json>If your service is staked, you can claim accrued OLAS staking rewards through the script
./claim_staking_rewards.sh <ai_agent_config.json>The accrued OLAS will be transferred to your AI agent Safe without having to unstake your AI agent.
AI agent runners are recommended to create a backup of the relevant secret key material.
You can optionally pass --attended=false to skip asking for inputs from the user. Note that, in this mode appropriate environment variables must be set.
Simply pull the latest script:
git pull originThen continue above with Run the script.
⚠️ Warning
The code within this repository is provided without any warranties. It is important to note that the code has not been audited for potential security vulnerabilities.If you are updating the password for your key files, it is strongly advised to create a backup of the old configuration (located in the
./.operatefolder) before proceeding. This backup should be retained until you can verify that the changes are functioning as expected. For instance, run the AI agent multiple times to ensure there are no issues with the new password before discarding the backup.
If you have started your script specifying a password to protect your key files, you can change it by running the following command:
./reset_password.shThis will change the password in the following files:
.operate/user.json.operate/wallets/ethereum.txt
In Docker Desktop make sure that in Settings -> Advanced the following boxes are ticked
We provide some hints to have your Windows system ready to run the AI agent. The instructions below have been tested in Windows 11.
Execute the following steps in a PowerShell terminal:
-
Install Git and Git Bash:
winget install --id Git.Git -e --source winget
-
Install Python 3.10:
winget install Python.Python.3.10
-
Close and re-open the PowerShell terminal.
-
Install Poetry:
curl.exe -sSL https://install.python-poetry.org | python - -
Add Poetry to your user's path:
$existingUserPath = (Get-Item -Path HKCU:\Environment).GetValue("PATH", $null, "DoNotExpandEnvironmentNames") $newUserPath = "$existingUserPath;$Env:APPDATA\Python\Scripts" [System.Environment]::SetEnvironmentVariable("Path", $newUserPath, "User")
-
Install Docker Desktop:
winget install -e --id Docker.DockerDesktop
-
Log out of your Windows session and then log back in.
-
Open Docker Desktop and leave it opened in the background.
Now, open a Git Bash terminal and follow the instructions in the "Run the script" section as well as the subsequent sections. You might need to install Microsoft Visual C++ 14.0 or greater.
When executed for the first time, the run_service.sh script creates a number of blockchain accounts:
- one Master EOA account will be used to pay gas fees on behalf of the AI agent operator,
- one Master Safe, multisig owned by the Master EOA (and a backup wallet, if provided) to handle the funds and interact with the OLAS protocol,
- one Agent instance EOA account will be used for the agent instance, and
- one smart contract account corresponds to a Safe wallet with a single owner (the AI agent account).
The addresses and private keys of the EOA accounts (plus some additional configuration) are stored within the folder .operate. In order to avoid losing your assets, back up this folder in a safe place, and do not publish or share its contents with unauthorized parties.
You can gain access to the assets of your AI agent as follows:
- Ensure that your AI agent is stopped by running
stop_service.sh. - Ensure that you have a hot wallet (e.g., MetaMask) installed and set up in your browser.
- Import the Master EOA account using the private keystore file. In MetaMask, Open Accounts drop-down → select "Add account or hardware wallet" → "Private Key" → "Select Type: JSON File", choose the private keystore file of the Master EOA account (located in
.operate/wallets/ethereum.txt), and enter the same password you use when running the quickstart scripts:
Importing.Master.EOA.mp4
Now, you have full access through the hot wallet to the Master EOA and you can transfer their assets to any other address. You can also manage the assets of the Master Safe through the DApp https://app.safe.global/, using the address located in the file .operate/wallets/ethereum.json.
To access the Agent instance EOA account, you can import it into your hot wallet in a similar way, using the private keys found in the files in .operate/keys. This time you'll need to open the Accounts drop-down in Metamask → select "Add account or hardware wallet" → "Private Key" → "Select Type: Private Key", then open those .operate/keys files with a text editor, copy the private key, and paste it into the Metamask private key text field. Then you can manage the AI agent's assets in the AI agent Safe through the DApp https://app.safe.global/, using the address located in the file .operate/services/sc-.../config.json against the "multisig" field.
If you wish to terminate your on-chain AI agent (and receive back the staking/bonding funds to your owner/operator address in case your AI agent is staked) execute:
./stop_service.sh <ai_agent_config.json>
./terminate_on_chain_service.sh <ai_agent_config.json>When updating the AI agent, you may need to re-run the script if you obtain any of the following error messages:
Error: Service unbonding failed with following error; ChainTimeoutError(Timed out when waiting for transaction to go through)
Error: Component mint failed with following error; ChainTimeoutError(Timed out when waiting for transaction to go through)
Error: Service activation failed with following error; ChainTimeoutError(Timed out when waiting for transaction to go through)
Error: Service deployment failed with following error; ChainTimeoutError(Timed out when waiting for transaction to go through)
Error: Service terminatation failed with following error; ChainInteractionError({'code': -32010, 'message': 'AlreadyKnown'})
The script builds both a Docker Compose deployment (on .operate.optimus/services/sc-*/deployment)
and a Kubernetes deployment (on .operate.optimus/services/sc-*/deployment/abci_build_k8s).
Then, by default, the script will launch the local Docker Compose deployment.
If you just want to build the deployment without executing the agent instance
(for example, if you are deploying to a custom Kubernetes cluster), then execute the script as:
./run_service.sh <ai_agent_config.json> --build-onlyThis is the configuration file whose path is passed as an argument to the ./run_service.sh and other commands.
Refer to the CONTRIBUTING.md for the guide on creating or modifying the configs.

