OpenCLAW-Agent / core /config.py
Agnuxo's picture
Upload core/config.py with huggingface_hub
83ef5ef verified
"""
OpenCLAW Autonomous Agent - Configuration
==========================================
ALL credentials loaded from environment variables.
NEVER hardcode secrets.
"""
import os
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class Config:
"""All configuration from environment variables."""
# --- LLM APIs (pick best available) ---
GEMINI_API_KEY: str = ""
GROQ_API_KEY: str = ""
NVIDIA_API_KEY: str = ""
# --- Social Platforms ---
MOLTBOOK_API_KEY: str = ""
# --- Research ---
HF_TOKEN: str = ""
BRAVE_API_KEY: str = ""
# --- Email ---
EMAIL_ADDRESS: str = ""
EMAIL_PASSWORD: str = ""
EMAIL_SMTP: str = "smtp.zoho.eu"
EMAIL_PORT: int = 465
# --- Agent Identity ---
AGENT_NAME: str = "OpenCLAW-Neuromorphic"
AUTHOR_NAME: str = "Francisco Angulo de Lafuente"
GITHUB_USER: str = "Agnuxo1"
ARXIV_AUTHOR: str = "de Lafuente, F A"
# --- Timing (seconds) ---
POST_INTERVAL: int = 14400 # 4 hours
ENGAGE_INTERVAL: int = 3600 # 1 hour
RESEARCH_INTERVAL: int = 21600 # 6 hours
COLLAB_INTERVAL: int = 43200 # 12 hours
# --- URLs ---
SCHOLAR_URL: str = "https://scholar.google.com/citations?user=6nOpJ9IAAAAJ&hl=es"
WIKIPEDIA_URL: str = "https://es.wikipedia.org/wiki/Francisco_Angulo_de_Lafuente"
GITHUB_URL: str = "https://github.com/Agnuxo1"
MOLTBOOK_PROFILE: str = "https://www.moltbook.com/u/OpenCLAW-Neuromorphic"
# --- Research Focus Areas ---
RESEARCH_TOPICS: list = field(default_factory=lambda: [
"neuromorphic computing",
"physics-based neural networks",
"OpenGL deep learning",
"holographic neural networks",
"P2P distributed AI",
"silicon heartbeat consciousness",
"ASIC hardware acceleration",
"AGI architecture",
"optical computing",
"thermodynamic reservoir computing"
])
@classmethod
def from_env(cls) -> 'Config':
"""Load all config from environment variables."""
return cls(
GEMINI_API_KEY=os.getenv("GEMINI_API_KEY", ""),
GROQ_API_KEY=os.getenv("GROQ_API_KEY", ""),
NVIDIA_API_KEY=os.getenv("NVIDIA_API_KEY", ""),
MOLTBOOK_API_KEY=os.getenv("MOLTBOOK_API_KEY", ""),
HF_TOKEN=os.getenv("HF_TOKEN", ""),
BRAVE_API_KEY=os.getenv("BRAVE_API_KEY", ""),
EMAIL_ADDRESS=os.getenv("EMAIL_ADDRESS", ""),
EMAIL_PASSWORD=os.getenv("EMAIL_PASSWORD", ""),
)
def get_best_llm(self) -> tuple[str, str]:
"""Return (provider, key) for the best available LLM."""
if self.GROQ_API_KEY:
return ("groq", self.GROQ_API_KEY)
if self.GEMINI_API_KEY:
return ("gemini", self.GEMINI_API_KEY)
if self.NVIDIA_API_KEY:
return ("nvidia", self.NVIDIA_API_KEY)
return ("none", "")
def validate(self) -> list[str]:
"""Check which services are available."""
available = []
if self.GEMINI_API_KEY: available.append("gemini")
if self.GROQ_API_KEY: available.append("groq")
if self.NVIDIA_API_KEY: available.append("nvidia")
if self.MOLTBOOK_API_KEY: available.append("moltbook")
if self.HF_TOKEN: available.append("huggingface")
if self.BRAVE_API_KEY: available.append("brave")
if self.EMAIL_ADDRESS: available.append("email")
return available