[object Object]

← back to Exo

create config home when checking for config file (#1353)

54b19879a00afffc872a3ffb3e9679fb5cd36fa1 · 2026-02-02 17:36:51 +0000 · Evan Quiney

we didn't check before, raising a critical exception.
now we create ~/.config/exo on linux systems before touching config.toml.

this wasn't caught before since everything lives in ~/.exo on macos, and we no longer write the keypair to CONFIG_HOME, so config.toml has to do init work it avoided before.

Files touched

Diff

commit 54b19879a00afffc872a3ffb3e9679fb5cd36fa1
Author: Evan Quiney <evanev7@gmail.com>
Date:   Mon Feb 2 17:36:51 2026 +0000

     create config home when checking for config file (#1353)
    
    we didn't check before, raising a critical exception.
    now we create ~/.config/exo on linux systems before touching config.toml.
    
    this wasn't caught before since everything lives in ~/.exo on macos, and we no longer write the keypair to CONFIG_HOME, so config.toml has to do init work it avoided before.
---
 src/exo/utils/info_gatherer/info_gatherer.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/exo/utils/info_gatherer/info_gatherer.py b/src/exo/utils/info_gatherer/info_gatherer.py
index 203a8da3..c8fb4e4c 100644
--- a/src/exo/utils/info_gatherer/info_gatherer.py
+++ b/src/exo/utils/info_gatherer/info_gatherer.py
@@ -262,6 +262,7 @@ class NodeConfig(TaggedModel):
     @classmethod
     async def gather(cls) -> Self | None:
         cfg_file = anyio.Path(EXO_CONFIG_FILE)
+        await cfg_file.parent.mkdir(parents=True, exist_ok=True)
         await cfg_file.touch(exist_ok=True)
         async with await cfg_file.open("rb") as f:
             try:

← 19965c7b Ciaran/profiling (#1345)  ·  back to Exo  ·  fix: handle unclosed tool calls and GLM arg parsing edge cas dfce188d →