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(
60 long,
61 env = "LOCUS_GATEWAY_SQLITE_PATH",
62 default_value = "data/locus-gateway.sqlite"
63 )]
64 pub(crate) sqlite_path: String,
65
66 #[arg(
67 long,
68 env = "LOCUS_GATEWAY_EMBEDDINGS_ENABLED",
69 default_value_t = false
70 )]
71 pub(crate) embeddings_enabled: bool,
72
73 #[arg(
74 long,
75 env = "LOCUS_GATEWAY_EMBEDDINGS_PROVIDER",
76 value_enum,
77 default_value = "ollama"
78 )]
79 pub(crate) embeddings_provider: EmbeddingsProviderKind,
80
81 #[arg(
82 long,
83 env = "LOCUS_GATEWAY_EMBEDDINGS_ENDPOINT",
84 default_value = "http://127.0.0.1:11434/api/embeddings"
85 )]
86 pub(crate) embeddings_endpoint: String,
87
88 #[arg(
89 long,
90 env = "LOCUS_GATEWAY_EMBEDDINGS_MODEL",
91 default_value = "sttp-encoder"
92 )]
93 pub(crate) embeddings_model: String,
94
95 #[arg(
96 long,
97 env = "LOCUS_GATEWAY_EMBEDDINGS_REPO",
98 default_value = "sentence-transformers/all-MiniLM-L6-v2"
99 )]
100 pub(crate) embeddings_repo: String,
101
102 #[arg(
103 long,
104 env = "LOCUS_GATEWAY_AVEC_SCORING_ENABLED",
105 default_value_t = false
106 )]
107 pub(crate) avec_scoring_enabled: bool,
108
109 #[arg(
110 long,
111 env = "LOCUS_GATEWAY_AVEC_SCORING_ENDPOINT",
112 default_value = "http://127.0.0.1:11434/api/chat"
113 )]
114 pub(crate) avec_scoring_endpoint: String,
115
116 #[arg(
117 long,
118 env = "LOCUS_GATEWAY_AVEC_SCORING_MODEL",
119 default_value = "qwen2.5:0.5b"
120 )]
121 pub(crate) avec_scoring_model: String,
122}
123
124#[derive(Debug, Clone, ValueEnum)]
125pub(crate) enum GatewayBackend {
126 InMemory,
127 Sqlite,
128 Surreal,
129}
130
131#[derive(Debug, Clone, ValueEnum)]
132pub(crate) enum EmbeddingsProviderKind {
133 Ollama,
134 #[cfg(feature = "local-embedding")]
135 #[value(alias = "candle")]
136 Local,
137}