locus_gateway/
gateway_args.rs1use clap::{ArgAction, Parser, ValueEnum};
2
3#[derive(Parser, Debug)]
4#[command(author, version, about)]
5pub(crate) struct GatewayArgs {
6 #[arg(long, env = "LOCUS_GATEWAY_HTTP_PORT", default_value_t = 8080)]
7 pub(crate) http_port: u16,
8
9 #[arg(long, env = "LOCUS_GATEWAY_GRPC_PORT", default_value_t = 8081)]
10 pub(crate) grpc_port: u16,
11
12 #[arg(
13 long,
14 env = "LOCUS_GATEWAY_BACKEND",
15 value_enum,
16 default_value = "in-memory"
17 )]
18 pub(crate) backend: GatewayBackend,
19
20 #[arg(
21 long,
22 env = "LOCUS_GATEWAY_ROOT_DIR_NAME",
23 default_value = ".locus-gateway"
24 )]
25 pub(crate) root_dir_name: String,
26
27 #[arg(long, env = "LOCUS_GATEWAY_REMOTE", default_value_t = false)]
28 pub(crate) remote: bool,
29
30 #[arg(
31 long,
32 env = "LOCUS_GATEWAY_CORS_ENABLED",
33 default_value_t = true,
34 action = ArgAction::Set
35 )]
36 pub(crate) cors_enabled: bool,
37
38 #[arg(long, env = "LOCUS_GATEWAY_CORS_ALLOWED_ORIGINS", default_value = "*")]
39 pub(crate) cors_allowed_origins: String,
40
41 #[arg(long, env = "LOCUS_SURREAL_EMBEDDED_ENDPOINT")]
42 pub(crate) surreal_embedded_endpoint: Option<String>,
43
44 #[arg(long, env = "LOCUS_SURREAL_REMOTE_ENDPOINT")]
45 pub(crate) surreal_remote_endpoint: Option<String>,
46
47 #[arg(long, env = "LOCUS_SURREAL_NAMESPACE", default_value = "entasis")]
48 pub(crate) surreal_namespace: String,
49
50 #[arg(long, env = "LOCUS_SURREAL_DATABASE", default_value = "locus_gateway")]
51 pub(crate) surreal_database: String,
52
53 #[arg(long, env = "LOCUS_SURREAL_USER", default_value = "root")]
54 pub(crate) surreal_user: String,
55
56 #[arg(long, env = "LOCUS_SURREAL_PASSWORD", default_value = "root")]
57 pub(crate) surreal_password: String,
58
59 #[arg(long, env = "LOCUS_GATEWAY_EMBEDDINGS_ENABLED", default_value_t = false)]
60 pub(crate) embeddings_enabled: bool,
61
62 #[arg(
63 long,
64 env = "LOCUS_GATEWAY_EMBEDDINGS_PROVIDER",
65 value_enum,
66 default_value = "ollama"
67 )]
68 pub(crate) embeddings_provider: EmbeddingsProviderKind,
69
70 #[arg(
71 long,
72 env = "LOCUS_GATEWAY_EMBEDDINGS_ENDPOINT",
73 default_value = "http://127.0.0.1:11434/api/embeddings"
74 )]
75 pub(crate) embeddings_endpoint: String,
76
77 #[arg(
78 long,
79 env = "LOCUS_GATEWAY_EMBEDDINGS_MODEL",
80 default_value = "sttp-encoder"
81 )]
82 pub(crate) embeddings_model: String,
83
84 #[arg(
85 long,
86 env = "LOCUS_GATEWAY_EMBEDDINGS_REPO",
87 default_value = "sentence-transformers/all-MiniLM-L6-v2"
88 )]
89 pub(crate) embeddings_repo: String,
90
91 #[arg(
92 long,
93 env = "LOCUS_GATEWAY_AVEC_SCORING_ENABLED",
94 default_value_t = false
95 )]
96 pub(crate) avec_scoring_enabled: bool,
97
98 #[arg(
99 long,
100 env = "LOCUS_GATEWAY_AVEC_SCORING_ENDPOINT",
101 default_value = "http://127.0.0.1:11434/api/chat"
102 )]
103 pub(crate) avec_scoring_endpoint: String,
104
105 #[arg(
106 long,
107 env = "LOCUS_GATEWAY_AVEC_SCORING_MODEL",
108 default_value = "qwen2.5:0.5b"
109 )]
110 pub(crate) avec_scoring_model: String,
111}
112
113#[derive(Debug, Clone, ValueEnum)]
114pub(crate) enum GatewayBackend {
115 InMemory,
116 Surreal,
117}
118
119#[derive(Debug, Clone, ValueEnum)]
120pub(crate) enum EmbeddingsProviderKind {
121 Ollama,
122 #[cfg(feature = "local-embedding")]
123 #[value(alias = "candle")]
124 Local,
125}