Spaces:
Sleeping
Sleeping
| """ | |
| OpenCLAW Autonomous Agent - Configuration | |
| ========================================== | |
| ALL credentials loaded from environment variables. | |
| NEVER hardcode secrets. | |
| """ | |
| import os | |
| from dataclasses import dataclass, field | |
| from typing import Optional | |
| 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" | |
| ]) | |
| 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 | |