Skip to content

Commit f8d2776

Browse files
lucaszhu-hueclaude
andauthored
feat: add Atlas Cloud as an OpenAI-compatible LLM provider (#2362)
Atlas Cloud (https://www.atlascloud.ai) exposes an OpenAI-compatible chat/completions endpoint, so it slots into the existing OpenAICompatibleLLM path exactly like deepseek / zai / opencode-go. Set `HINDSIGHT_API_LLM_PROVIDER=atlas` to route fact extraction, reflection and consolidation through Atlas Cloud. The base URL defaults to https://api.atlascloud.ai/v1 and the default model is deepseek-ai/deepseek-v4-pro (a reasoning model — give it enough max_tokens, >= 512). Changes: - engine/llm_wrapper.py: register "atlas" in create_llm_provider(), LLMProvider.valid_providers, and the default base_url map - engine/providers/openai_compatible_llm.py: register "atlas" in valid_providers, default base_url, and the API-key-required check - config.py: PROVIDER_DEFAULT_MODELS["atlas"] = deepseek-ai/deepseek-v4-pro - hindsight-embed control center: add Atlas Cloud to the provider wizard - docs: add Atlas Cloud to llmProviders.json (drives the providers grid and table) and a config example in developer/models.mdx - README + .env.example: document the new provider Verified end-to-end: instantiated the atlas provider through Hindsight's own create_llm_provider() and made a live call() to deepseek-ai/deepseek-v4-pro (HTTP 200, valid content + token usage). Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 4db8a12 commit f8d2776

9 files changed

Lines changed: 59 additions & 2 deletions

File tree

.env.example

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Copy this file to .env and fill in your values
33

44
# LLM Configuration (Required)
5-
# Supported providers: openai, groq, ollama, gemini, anthropic, lmstudio, vertexai, minimax, deepseek, zai, volcano
5+
# Supported providers: openai, groq, ollama, gemini, anthropic, lmstudio, vertexai, minimax, deepseek, zai, atlas, volcano
66
HINDSIGHT_API_LLM_PROVIDER=openai
77
HINDSIGHT_API_LLM_API_KEY=your-api-key-here
88
HINDSIGHT_API_LLM_MODEL=gpt-4o-mini
@@ -37,6 +37,11 @@ HINDSIGHT_API_LLM_BASE_URL=https://api.openai.com/v1
3737
# HINDSIGHT_API_LLM_API_KEY=your-zai-api-key
3838
# HINDSIGHT_API_LLM_MODEL=glm-4.5-flash # or glm-4.5-air for the paid tier
3939

40+
# Example: Atlas Cloud configuration (OpenAI-compatible, https://www.atlascloud.ai)
41+
# HINDSIGHT_API_LLM_PROVIDER=atlas
42+
# HINDSIGHT_API_LLM_API_KEY=your-atlascloud-api-key
43+
# HINDSIGHT_API_LLM_MODEL=deepseek-ai/deepseek-v4-pro # reasoning model; also Qwen / GLM / Kimi / MiniMax, etc.
44+
4045
# Example: LM Studio local configuration (Qwen 2.5 32B recommended)
4146
# HINDSIGHT_API_LLM_PROVIDER=lmstudio
4247
# HINDSIGHT_API_LLM_API_KEY=lmstudio

README.md

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,42 @@
1616

1717
---
1818

19+
### Powered by Atlas Cloud (OpenAI-compatible)
20+
21+
<p align="center">
22+
<a href="https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=hindsight">
23+
<img src="./hindsight-docs/static/img/atlas-cloud-logo.png" alt="Atlas Cloud" width="200">
24+
</a>
25+
</p>
26+
27+
> 🎁 **[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=hindsight)** is a full-modal, OpenAI-compatible AI inference platform — plug it in as a drop-in LLM backend for Hindsight's fact extraction, reflection and consolidation, with one API for DeepSeek, Qwen, GLM, Kimi, MiniMax and more. No multi-vendor setup needed.
28+
> Budget-friendly: [coding plan](https://www.atlascloud.ai/console/coding-plan)
29+
30+
```bash
31+
export HINDSIGHT_API_LLM_PROVIDER=atlas
32+
export HINDSIGHT_API_LLM_API_KEY=your-atlascloud-api-key # base_url defaults to https://api.atlascloud.ai/v1
33+
export HINDSIGHT_API_LLM_MODEL=deepseek-ai/deepseek-v4-pro
34+
```
35+
36+
`deepseek-ai/deepseek-v4-pro` is a reasoning model — give it enough `max_tokens` (>= 512).
37+
38+
<details>
39+
<summary>All Atlas Cloud chat models (59)</summary>
40+
41+
- **Anthropic (Claude):** `anthropic/claude-haiku-4.5-20251001`, `anthropic/claude-opus-4.8`, `anthropic/claude-sonnet-4.6`
42+
- **OpenAI (GPT):** `openai/gpt-5.4`, `openai/gpt-5.5`
43+
- **Google (Gemini):** `google/gemini-3.1-flash-lite`, `google/gemini-3.1-pro-preview`, `google/gemini-3.5-flash`
44+
- **Alibaba Qwen:** `qwen/qwen2.5-7b-instruct`, `Qwen/Qwen3-235B-A22B-Instruct-2507`, `qwen/qwen3-235b-a22b-thinking-2507`, `qwen/qwen3-30b-a3b`, `Qwen/Qwen3-30B-A3B-Instruct-2507`, `qwen/qwen3-30b-a3b-thinking-2507`, `qwen/qwen3-32b`, `qwen/qwen3-8b`, `Qwen/Qwen3-Coder`, `qwen/qwen3-coder-next`, `qwen/qwen3-max-2026-01-23`, `Qwen/Qwen3-Next-80B-A3B-Instruct`, `Qwen/Qwen3-Next-80B-A3B-Thinking`, `Qwen/Qwen3-VL-235B-A22B-Instruct`, `qwen/qwen3-vl-235b-a22b-thinking`, `qwen/qwen3-vl-30b-a3b-instruct`, `qwen/qwen3-vl-30b-a3b-thinking`, `qwen/qwen3-vl-8b-instruct`, `qwen/qwen3.5-122b-a10b`, `qwen/qwen3.5-27b`, `qwen/qwen3.5-35b-a3b`, `qwen/qwen3.5-397b-a17b`, `qwen/qwen3.6-35b-a3b`, `qwen/qwen3.6-plus`
45+
- **DeepSeek:** `deepseek-ai/deepseek-ocr`, `deepseek-ai/deepseek-r1-0528`, `deepseek-ai/DeepSeek-V3-0324`, `deepseek-ai/DeepSeek-V3.1`, `deepseek-ai/DeepSeek-V3.1-Terminus`, `deepseek-ai/deepseek-v3.2`, `deepseek-ai/DeepSeek-V3.2-Exp`, `deepseek-ai/deepseek-v4-flash`, `deepseek-ai/deepseek-v4-pro`
46+
- **Moonshot (Kimi):** `moonshotai/Kimi-K2-Instruct`, `moonshotai/Kimi-K2-Instruct-0905`, `moonshotai/Kimi-K2-Thinking`, `moonshotai/kimi-k2.5`, `moonshotai/kimi-k2.6`
47+
- **Zhipu GLM:** `zai-org/GLM-4.6`, `zai-org/glm-4.7`, `zai-org/glm-5`, `zai-org/glm-5-turbo`, `zai-org/glm-5.1`, `zai-org/glm-5v-turbo`
48+
- **MiniMax:** `MiniMaxAI/MiniMax-M2`, `minimaxai/minimax-m2.1`, `minimaxai/minimax-m2.5`, `minimaxai/minimax-m2.7`
49+
- **xAI:** `xai/grok-4.3`
50+
- **Kuaishou KAT:** `kwaipilot/kat-coder-pro-v2`
51+
- **Other:** `owl`
52+
53+
</details>
54+
1955
## What is Hindsight?
2056

2157
Hindsight™ is an agent memory system built to create smarter agents that learn over time. Most agent memory systems focus on recalling conversation history. Hindsight is focused on making agents that learn, not just remember.
@@ -70,7 +106,7 @@ docker run -it --pull always --name hindsight --restart unless-stopped -p 8888:8
70106
>API: http://localhost:8888
71107
>UI: http://localhost:9999
72108
73-
You can modify the LLM provider by setting `HINDSIGHT_API_LLM_PROVIDER`. Valid options are `openai`, `anthropic`, `gemini`, `groq`, `ollama`, `lmstudio`, and `minimax`. The documentation provides more details on [supported models](https://hindsight.vectorize.io/developer/models).
109+
You can modify the LLM provider by setting `HINDSIGHT_API_LLM_PROVIDER`. Valid options are `openai`, `anthropic`, `gemini`, `groq`, `ollama`, `lmstudio`, `minimax`, and `atlas` ([Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=hindsight)). The documentation provides more details on [supported models](https://hindsight.vectorize.io/developer/models).
74110

75111

76112

hindsight-api-slim/hindsight_api/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -618,6 +618,7 @@ def parse_gemini_service_tier(value: str | None) -> str | None:
618618
"deepseek": "deepseek-v4-flash",
619619
"zai": "glm-4.5-flash",
620620
"opencode-go": "deepseek-v4-flash",
621+
"atlas": "deepseek-ai/deepseek-v4-pro",
621622
"ollama": "gemma3:12b",
622623
"ollama-cloud": "gemma3:12b",
623624
"llamacpp": "gemma-4-e2b-it",

hindsight-api-slim/hindsight_api/engine/llm_wrapper.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,7 @@ def create_llm_provider(
466466
"openrouter",
467467
"zai",
468468
"opencode-go",
469+
"atlas",
469470
):
470471
return OpenAICompatibleLLM(
471472
provider=provider,
@@ -588,6 +589,7 @@ def __init__(
588589
"openrouter",
589590
"zai",
590591
"opencode-go",
592+
"atlas",
591593
"fireworks",
592594
"nous",
593595
]
@@ -614,6 +616,8 @@ def __init__(
614616
self.base_url = "https://api.z.ai/api/coding/paas/v4"
615617
elif self.provider == "opencode-go":
616618
self.base_url = "https://opencode.ai/zen/go/v1"
619+
elif self.provider == "atlas":
620+
self.base_url = "https://api.atlascloud.ai/v1"
617621
elif self.provider == "nous":
618622
self.base_url = "https://inference-api.nousresearch.com/v1"
619623

hindsight-api-slim/hindsight_api/engine/providers/openai_compatible_llm.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,7 @@ def __init__(
451451
"openrouter",
452452
"zai",
453453
"opencode-go",
454+
"atlas",
454455
"fireworks",
455456
]
456457
if self.provider not in valid_providers:
@@ -476,6 +477,8 @@ def __init__(
476477
self.base_url = "https://api.z.ai/api/coding/paas/v4"
477478
elif self.provider == "opencode-go":
478479
self.base_url = "https://opencode.ai/zen/go/v1"
480+
elif self.provider == "atlas":
481+
self.base_url = "https://api.atlascloud.ai/v1"
479482
elif self.provider == "fireworks":
480483
# OpenAI-compatible inference host (online path). The batch API
481484
# lives on a separate control-plane host — see FireworksLLM.
@@ -496,6 +499,7 @@ def __init__(
496499
"openrouter",
497500
"zai",
498501
"opencode-go",
502+
"atlas",
499503
"ollama-cloud",
500504
)
501505
and not self.api_key

hindsight-docs/docs/developer/models.mdx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,11 @@ export HINDSIGHT_API_LLM_PROVIDER=opencode-go
208208
export HINDSIGHT_API_LLM_API_KEY=your-opencode-go-api-key
209209
export HINDSIGHT_API_LLM_MODEL=deepseek-v4-flash
210210

211+
# Atlas Cloud (OpenAI-compatible, https://www.atlascloud.ai)
212+
export HINDSIGHT_API_LLM_PROVIDER=atlas
213+
export HINDSIGHT_API_LLM_API_KEY=your-atlascloud-api-key # base_url defaults to https://api.atlascloud.ai/v1
214+
export HINDSIGHT_API_LLM_MODEL=deepseek-ai/deepseek-v4-pro # reasoning model; also Qwen / GLM / Kimi / MiniMax, etc.
215+
211216
# Nous Portal (OpenAI-compatible; no API key — uses your `hermes portal` login)
212217
export HINDSIGHT_API_LLM_PROVIDER=nous
213218
export HINDSIGHT_API_LLM_MODEL=deepseek/deepseek-v4-flash # any Nous-hosted slug

hindsight-docs/src/data/llmProviders.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
{"id": "deepseek", "label": "DeepSeek", "iconKey": "brain", "defaultModel": "deepseek-v4-flash"},
1313
{"id": "zai", "label": "z.ai", "iconKey": "sparkles", "defaultModel": "glm-4.5-flash"},
1414
{"id": "opencode-go", "label": "opencode-go", "iconKey": "openai-compatible", "defaultModel": "deepseek-v4-flash"},
15+
{"id": "atlas", "label": "Atlas Cloud", "iconKey": "openai-compatible", "defaultModel": "deepseek-ai/deepseek-v4-pro"},
1516
{"id": "volcano", "label": "Volcano Engine", "iconKey": "zap", "defaultModel": "doubao-pro-32k"},
1617
{"id": "openrouter", "label": "OpenRouter", "iconKey": "globe", "defaultModel": "qwen/qwen3.5-9b"},
1718
{"id": "openai-codex", "label": "OpenAI Codex", "iconKey": "openai", "defaultModel": "gpt-5.4-mini"},
131 KB
Loading

hindsight-embed/hindsight_embed/control_center/providers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,6 @@ class ProviderInfo:
3030
ProviderInfo("deepseek", "DeepSeek", needs_api_key=True),
3131
ProviderInfo("minimax", "MiniMax", needs_api_key=True),
3232
ProviderInfo("zai", "Z.ai", needs_api_key=True),
33+
ProviderInfo("atlas", "Atlas Cloud", needs_api_key=True, default_base_url="https://api.atlascloud.ai/v1"),
3334
ProviderInfo("volcano", "Volcano", needs_api_key=True),
3435
)

0 commit comments

Comments
 (0)