Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
5fd9d4a
[Node][Sync] fix host-bound sync request signatures behind a reverse …
Herklos Jul 20, 2026
4762c85
[Node] Redesign node web interface settings page and split into subco…
Herklos Jul 20, 2026
099507a
[Node] Surface wallet-already-exists as 409 with clear message
Herklos Jul 21, 2026
f9d82c7
[Node] support Sync profiles and fix issues
GuillaumeDSM Jul 3, 2026
f1abc13
[Node] Improve UI
GuillaumeDSM Jul 6, 2026
f5d90d9
[Node] handle FailedRequests DSL errors
GuillaumeDSM Jul 7, 2026
ee7c60c
[NodeUI] add download of latest logs
GuillaumeDSM Jul 7, 2026
51c7f67
[Node] add degraded state and start non trading bot
GuillaumeDSM Jul 7, 2026
8c1f4e1
[Node] add retention policy
GuillaumeDSM Jul 7, 2026
b0706f2
[Flow] support time based DCA
GuillaumeDSM Jul 9, 2026
fd47f6d
[NodeAPI] add volume to traded pairs
GuillaumeDSM Jul 9, 2026
6881b7c
CI fixes
GuillaumeDSM Jul 9, 2026
89cb5c8
Cleanup and update tests
GuillaumeDSM Jul 10, 2026
d1584cf
[Node] simplify child process file system
GuillaumeDSM Jul 10, 2026
514bf25
[Node] explicitely log ignore priority actions and fix action ids
GuillaumeDSM Jul 11, 2026
6055c44
[CLI] fix backtesting mode start
GuillaumeDSM Jul 11, 2026
1ba4994
[Modes] fix no timeframe index triggeer
GuillaumeDSM Jul 11, 2026
20b811b
[AutomationWorkflow] move _user_id_to_evm to CommunityRepository
GuillaumeDSM Jul 11, 2026
fd6585a
[Node] enable octobot node by default, remove "node" CLI command
GuillaumeDSM Jul 12, 2026
a33b087
[Node] use process bot names in their UI
GuillaumeDSM Jul 12, 2026
029f8ee
[Node] display process bot link in card
GuillaumeDSM Jul 12, 2026
271b53a
[CI] linter fix
GuillaumeDSM Jul 12, 2026
e07fb59
[Node] fix child process exchanges activation
GuillaumeDSM Jul 12, 2026
d54607c
[Node] simplify cleanup workflow and validate cli arg
GuillaumeDSM Jul 13, 2026
5d3f19d
[NodeUI] add stop automation
GuillaumeDSM Jul 13, 2026
16cedfa
[Node] store octobot process info in task.metadata
GuillaumeDSM Jul 13, 2026
eba6130
[Node] fix octobot process exchange activation
GuillaumeDSM Jul 13, 2026
b77d73b
[Tests] fix tests
GuillaumeDSM Jul 13, 2026
c783b83
[Node] fix schedules registration
GuillaumeDSM Jul 14, 2026
8be2e29
[Logging] fix previous log file writing at startup
GuillaumeDSM Jul 15, 2026
5950761
[Node] fix scheduled workflow issues
GuillaumeDSM Jul 15, 2026
2465134
[Node] fix account update with invalid keys
GuillaumeDSM Jul 15, 2026
eaf6fc9
[Copy] fix order syncronize lost order cases and refactor test scenarios
GuillaumeDSM Jul 17, 2026
3b20b47
[Exchanges] fix exchange tentacles config
GuillaumeDSM Jul 17, 2026
f2ea816
[DSL] support full typing and add protocol api
GuillaumeDSM Jul 21, 2026
c56c1ed
fix(node): use configured external host, not browser origin, in mobil…
Herklos Jul 22, 2026
d852678
[Protocol] bump version
GuillaumeDSM Jul 23, 2026
52a2cbb
[Trading] add computeMarketStatusCostLimits ccxt option
GuillaumeDSM Jul 23, 2026
b06c0b5
[Readme] add beta description
GuillaumeDSM Jul 23, 2026
b35a945
[Node UI] improve onboarding: include a guide to connect node to web/app
GuillaumeDSM Jul 24, 2026
3985945
[Node] fix process bot web UI auto open
GuillaumeDSM Jul 25, 2026
9903c21
[Node] allow wallet admin to exec user actions on other wallet's bots
GuillaumeDSM Jul 25, 2026
51c8a9a
[CLI] add standalone env var
GuillaumeDSM Jul 25, 2026
5bc2977
[Version] 3.0.0
GuillaumeDSM Jul 25, 2026
87ae807
[Version] make sure -beta1 version creates no side effects
GuillaumeDSM Jul 26, 2026
846ae22
[CLI] fix boot order
GuillaumeDSM Jul 26, 2026
4ac64de
[CLI] fix remove config install
GuillaumeDSM Jul 27, 2026
9d33e01
[Commons] fix profile data import
GuillaumeDSM Jul 27, 2026
3331c5f
[Node] improve tailscale IPs management
GuillaumeDSM Jul 27, 2026
a227f56
[DBOS] fix dbos application version
GuillaumeDSM Jul 27, 2026
b2ca088
[Onboarding] simplify and make tailscale ip more flexible
GuillaumeDSM Jul 27, 2026
32fd390
[Node] improve QR code IP selector
GuillaumeDSM Jul 28, 2026
c51e3c8
[Binary] include new deps requirements in build
GuillaumeDSM Jul 28, 2026
89cc1d9
[WebInterface] fix medias path for process bots
GuillaumeDSM Jul 28, 2026
e6382c9
[Process bots] fix PID & frozen env issues
GuillaumeDSM Jul 28, 2026
35dc650
[Node] Migrate pairing from passphrase to password
Herklos Jul 28, 2026
ba4395a
[Node] add brave browser guidelines
GuillaumeDSM Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ python_distribution(
] + PACKAGE_SOURCES + PACKAGE_REQS + PACKAGE_FULL_REQS,
provides=python_artifact(
name="octobot",
version="2.1.1",
version="3.0.0-beta1",
url='https://github.com/Drakkar-Software/OctoBot',
license='GPL-3.0',
author="Drakkar-Software",
Expand Down
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

*It is strongly advised to perform an update of your tentacles after updating OctoBot. (start.py tentacles --install --all)*

## [3.0.0-beta1] - 2026-07-26
### Start of the OctoBot 3.0.0 beta
OctoBot 3.0.0 a new system for portfolio automation from desktop and mobile.
You run it on your computer or server in node mode (the new default OctoBot mode), which acts as the backend for the new OctoBot interface.

OctoBot now stats as node by default and lets users start as many OctoBot as they want. Those bots can be started either:
1. From the new OctoBot UI, available from the web and as a mobile app
2. From the node directly, for expert OctoBots enabling backtesting and advanced analysis (using the classic OctoBot UI)

### Added
- [Node mode] The new OctoBot default: use the node as the orchestrator of your OctoBot, use it from the new OctoBot UI or app
- [UI] Brand new Octobot UI. More private, flexible, easy to use and secure than ever. Available at https://new.mobile.octobot.cloud/auth/unlock
- [Mobile apps] Start of the beta of the Android and iOS new apps with all the features of the Octobot UI, built into your phone
- [Multi OctoBot support] Starting as many bots as you need, directly from the Octobot interface
- [Kraken] Fully support Kraken exchange spot trading


## [2.1.1] - 2026-03-28
### Added
- [GridTrading] Add reinvest_profits config option
Expand Down
177 changes: 92 additions & 85 deletions README.md

Large diffs are not rendered by default.

12 changes: 10 additions & 2 deletions bin/start.spec
Original file line number Diff line number Diff line change
@@ -1,19 +1,26 @@
# -*- mode: python -*-

from PyInstaller.utils.hooks import collect_data_files

block_cipher = None

# eth_account.hdaccount reads BIP39 wordlists from disk (hdaccount/wordlist/*.txt).
# hiddenimports only bundles Python modules; collect_data_files includes those data files.
eth_account_datas = collect_data_files("eth_account")

OCTOBOT_PACKAGES_FILES = REQUIRED = [s.strip() for s in open('bin/octobot_packages_files.txt').readlines()]
# hiddenimports=['numpy.core._dtype_ctypes'] from https://github.com/pyinstaller/pyinstaller/issues/3982
a = Analysis(
['../start.py'],
pathex=['../'],
datas=[
('../octobot/config', 'octobot/config'),
('../octobot/strategy_optimizer/optimizer_data_files', 'octobot/strategy_optimizer/optimizer_data_files')
],
('../octobot/strategy_optimizer/optimizer_data_files', 'octobot/strategy_optimizer/optimizer_data_files'),
] + eth_account_datas, # required for node wallet mnemonic generation (web3.Account.create_with_mnemonic)
hiddenimports=[
"colorlog", "numpy.core._dtype_ctypes", "dotenv",
"pgpy", "imghdr",
"web3", "eth_account",
"aiosqlite", "aiohttp",
"pyarrow", "pyiceberg",
"psutil",
Expand All @@ -22,6 +29,7 @@ a = Analysis(
"asyncpraw", "simplifiedpytrends", "simplifiedpytrends.exceptions", "simplifiedpytrends.request",
"pyngrok", "pyngrok.ngrok", "openai",
"flask", "flask_login", "flask_wtf", "flask_caching", "flask_compress", "flask_socketio", "flask_cors",
"werkzeug.middleware", "werkzeug.middleware.proxy_fix",
"wtforms", "wtforms.fields", "gevent", "geventwebsocket",
"vaderSentiment", "vaderSentiment.vaderSentiment",
"coingecko_openapi_client",
Expand Down
12 changes: 12 additions & 0 deletions docs/content/developers/packages/node.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,18 @@ User-triggered actions — things like a manual override sent through the API

Log messages emitted inside any workflow or step are routed to a per-workflow file under `logs/automations/`. Child workflows share their parent's log file, keyed by the first 36 characters of the workflow ID.

### DBOS application version and recovery

DBOS only dequeues and recovers workflows whose `application_version` matches the runtime. OctoBot Node uses a stable code constant — `SCHEDULER_APPLICATION_VERSION` in `octobot_node.constants` (currently `octobot_node_v1`) — instead of the OctoBot release version, so automations survive OctoBot upgrades.

When `ALWAYS_ENSURE_SCHEDULER_APPLICATION_VERSION` is enabled, scheduler startup runs `migrate_stranded_workflow_versions()` before `launch()`. That re-tags any `ENQUEUED` or `PENDING` workflows in the system database to `SCHEDULER_APPLICATION_VERSION`, unblocking workflows stranded by older releases that tagged rows with the OctoBot version string. The flag is read from the environment variable of the same name (`true` / `false`); it defaults to `false`.

| Setting | Default | Purpose |
|---|---|---|
| `ALWAYS_ENSURE_SCHEDULER_APPLICATION_VERSION` | `false` | Run startup migration of stranded workflow `application_version` values |

Bump `SCHEDULER_APPLICATION_VERSION` only when workflow step order or semantics change in a breaking way. For branching old vs new code paths within the same version, use [DBOS patching](https://docs.dbos.dev/python/tutorials/upgrading-workflows).

## Encryption

Task payloads are optionally encrypted using a hybrid RSA/AES-GCM/ECDSA scheme. Each encryption call generates a fresh AES-256-GCM key and IV; the AES key is wrapped with RSA-OAEP so the bulk payload never travels under the asymmetric key directly. An ECDSA signature over the ciphertext — computed as `ciphertext + encrypted_aes_key + iv` concatenated — is verified before any decryption attempt, preventing chosen-ciphertext attacks.
Expand Down
9 changes: 7 additions & 2 deletions docs/content/guides/octobot-configuration/profiles.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,15 @@ sidebar_position: 1

# Profiles

OctoBot's trading configuration is using profiles (located into
user/profiles). This allows for quick switches between previously set
OctoBot's trading configuration is using profiles. This allows for quick switches between previously set
configurations. Each profile defines a [Trading Mode](/guides/octobot-trading-modes/trading-modes) configuration as well as other settings.

Bundled default profiles (for example `default` and `non-trading`) remain on the filesystem under
`user/profiles/`. When a wallet is configured, user-created profiles are stored in the sync
`StrategyProvider` collection as `GenericProcessConfiguration.profile_data` (same profile id as the
strategy). OctoBot still exposes the same profile API to the web UI and configuration layer; only the
profile module selects the storage backend.

![octobot trading mode details from profiles](/images/guides/configuration/octobot-trading-mode-details-from-profiles.png)

Profiles include:
Expand Down
2 changes: 1 addition & 1 deletion octobot/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@

PROJECT_NAME = "OctoBot"
AUTHOR = "Drakkar-Software"
VERSION = "2.1.1" # major.minor.revision
VERSION = "3.0.0-beta1" # major.minor.revision
LONG_VERSION = f"{VERSION}"
Loading
Loading