refactor!: move LLM configuration from in-app settings to CLI/env vars

- Remove `api_endpoint` from Settings model and settings UI
- Add `--llm-endpoint` / `AETHERA_LLM_ENDPOINT` and `--llm-key` /
  `AETHERA_LLM_KEY` CLI flags (endpoint is required)
- Update client constructor to accept API key parameter
- Update tests and documentation to reflect new configuration approach

BREAKING CHANGE: LLM endpoint and key must now be provided via
`AETHERA_LLM_ENDPOINT` and `AETHERA_LLM_KEY` environment variables or
CLI flags instead of the Settings page.
This commit is contained in:
2026-05-01 23:30:34 -04:00
parent 54e24cb304
commit 74b8d43032
13 changed files with 47 additions and 71 deletions

View File

@@ -15,6 +15,8 @@ type cliParams struct {
DataDir string
StaticDir string
SettingsFile string
LLMEndpoint string
LLMKey string
}
// getEnvOrDefault returns the value of an environment variable or a default value
@@ -36,6 +38,11 @@ func getEnvIntOrDefault(key string, defaultValue int) int {
}
func (p *cliParams) Validate() error {
// Require LLM Configuration
if p.LLMEndpoint == "" {
return fmt.Errorf("LLM endpoint is required (set AETHERA_LLM_ENDPOINT)")
}
// Ensure Generated Directories
imgDir := path.Join(p.DataDir, "generated/images")
if err := os.MkdirAll(imgDir, 0755); err != nil {

View File

@@ -17,6 +17,8 @@ var (
ListenPort: getEnvIntOrDefault("PORT", 8080),
DataDir: getEnvOrDefault("DATA_DIR", "./data"),
StaticDir: getEnvOrDefault("STATIC_DIR", ""),
LLMEndpoint: getEnvOrDefault("LLM_ENDPOINT", ""),
LLMKey: getEnvOrDefault("LLM_KEY", ""),
}
rootCmd = &cobra.Command{Use: "aethera"}
)
@@ -26,6 +28,8 @@ func init() {
rootCmd.PersistentFlags().StringVar(&params.StaticDir, "static-dir", params.StaticDir, "Directory to serve static frontend files from instead of embedded assets (env: AETHERA_STATIC_DIR)")
rootCmd.PersistentFlags().StringVar(&params.ListenAddr, "listen", params.ListenAddr, "Address to listen on (env: AETHERA_LISTEN)")
rootCmd.PersistentFlags().IntVar(&params.ListenPort, "port", params.ListenPort, "Port to listen on (env: AETHERA_PORT)")
rootCmd.PersistentFlags().StringVar(&params.LLMEndpoint, "llm-endpoint", params.LLMEndpoint, "LLM API endpoint URL (env: AETHERA_LLM_ENDPOINT)")
rootCmd.PersistentFlags().StringVar(&params.LLMKey, "llm-key", params.LLMKey, "LLM API key (env: AETHERA_LLM_KEY)")
}
func main() {
@@ -42,7 +46,7 @@ func main() {
// Start Server
rootCmd.Run = func(cmd *cobra.Command, args []string) {
server.StartServer(fileStore, params.DataDir, params.StaticDir, params.ListenAddr, params.ListenPort)
server.StartServer(fileStore, params.DataDir, params.StaticDir, params.ListenAddr, params.ListenPort, params.LLMEndpoint, params.LLMKey)
}
if err := rootCmd.Execute(); err != nil {