Entropic 2.3.8
Local-first agentic inference engine
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
25#include <cstdio>
26#include <cstring>
27#include <string>
28
29namespace entropic::cli {
30
31int run_mcp_bridge(int argc, char* argv[]);
32int run_version();
33int run_download(int argc, char* argv[]);
34
35} // namespace entropic::cli
36
42static void print_usage()
43{
44 std::fprintf(stderr,
45 "Usage: entropic <subcommand> [options]\n"
46 "\n"
47 "Subcommands:\n"
48 " mcp-bridge Relay MCP/stdio to a running engine's unix socket\n"
49 " download Fetch a bundled GGUF model\n"
50 " version Print engine version\n"
51 "\n"
52 "Options for mcp-bridge:\n"
53 " --project-dir DIR Project directory whose engine to bridge to\n"
54 " (default: cwd). The bridge does NOT start an\n"
55 " engine; one must already be running for the\n"
56 " same project directory.\n"
57 " --socket PATH Override socket discovery (bypasses the\n"
58 " project_dir hash). For non-standard engine\n"
59 " deployments and deterministic testing.\n"
60 "\n"
61 "Options for download:\n"
62 " --list List available model keys\n"
63 " --dir DIR Override target directory\n"
64 " (default: $ENTROPIC_MODEL_DIR or ~/.entropic/models)\n"
65 "\n"
66 "Example .mcp.json — connect Claude Code to a running engine:\n"
67 " {\"mcpServers\": {\"entropic\": {\n"
68 " \"type\": \"stdio\", \"command\": \"entropic\",\n"
69 " \"args\": [\"mcp-bridge\"]\n"
70 " }}}\n");
71}
72
73namespace {
74
75using SubcommandFn = int (*)(int, char*[]);
76
77struct Subcommand {
78 const char* name;
79 SubcommandFn run;
80};
81
88int run_version_adapter(int, char*[])
89{
91}
92
93constexpr Subcommand kSubcommands[] = {
94 {"mcp-bridge", entropic::cli::run_mcp_bridge},
95 {"version", run_version_adapter},
96 {"download", entropic::cli::run_download},
97};
98
99} // anonymous namespace
100
111int main(int argc, char* argv[])
112{
113 std::string sub = (argc >= 2) ? argv[1] : "";
114 for (const auto& entry : kSubcommands) {
115 if (sub == entry.name) {
116 return entry.run(argc - 1, argv + 1);
117 }
118 }
119 bool help = (sub == "--help" || sub == "-h" || sub == "help");
120 if (!help && !sub.empty()) {
121 std::fprintf(stderr, "entropic: unknown subcommand '%s'\n\n",
122 sub.c_str());
123 }
124 print_usage();
125 return help ? 0 : 1;
126}
int run_download(int argc, char *argv[])
Handle entropic download subcommand.
Definition download.cpp:296
int main(int argc, char *argv[])
CLI entry point — dispatch to subcommand.
Definition main.cpp:111
static void print_usage()
Print top-level usage to stderr.
Definition main.cpp:42
int run_version()
Print the engine version and exit.
Definition version.cpp:20
int run_mcp_bridge(int argc, char *argv[])
Entry point for the mcp-bridge subcommand.