id = "cc-connect" name = "cc-connect" homepage = "https://github.com/chenhg5/cc-connect" description = "A bridge from local AI coding agents to messaging platforms" executables = ["cc-connect"] [dotfiles] # The project's installer and changelog document ~/.cc-connect/config.toml as # the global config file; ~/.cc-connect is also the default session data dir. # https://github.com/chenhg5/cc-connect/blob/main/INSTALL.md # https://github.com/chenhg5/cc-connect/blob/main/CHANGELOG.md paths = ["~/.cc-connect/config.toml"] secret = [] # The official example and config structs identify provider API keys, platform # tokens, and bridge/management authentication tokens as credentials. # https://github.com/chenhg5/cc-connect/blob/main/config.example.toml # https://github.com/chenhg5/cc-connect/blob/main/config/config.go [[dotfiles.secret_paths]] file = "~/.cc-connect/config.toml" format = "toml" match = { key_path = [ "providers.*.api_key", "openai.api_key", "qwen.api_key", "minimax.api_key", "mimo.api_key", "bridge.token", "management.token", "projects.*.platforms.*.options.token", "projects.*.platforms.*.options.app_secret", ] } [commands] format = 1 label = "cc-connect" description = "Send a message, attachment or synthesized voice message to an active cc-connect session. Starting the service, update and doctor are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false } [[commands.subcommand]] path = ["send"] label = "Send to a session" [[commands.subcommand.source]] id = "help" kind = "help" url = "https://github.com/chenhg5/cc-connect/blob/main/cmd/cc-connect/send.go" revision = "main 2026-10" evidence = """ Usage: cc-connect send [options] -m, --message Message to send (preferred over positional args) --cwd Start a new session in this working directory --tts Synthesize text and send it as a voice/audio message --image Send an image attachment (repeatable) --file Send a file attachment (repeatable) --audio Send an audio attachment (repeatable) --video Send a video attachment (repeatable) --stdin Read message from stdin (best for long/special-char messages) -p, --project Target project (optional if only one project) -s, --session Target session key (optional, picks first active) """ [[commands.subcommand.field]] id = "message" label = "Message" type = "string" option = ["--message", "-m"] sources = ["help"] [[commands.subcommand.field]] id = "project" label = "Project" description = "Optional if only one project is configured." type = "string" option = ["--project", "-p"] sources = ["help"] [[commands.subcommand.field]] id = "session" label = "Session key" description = "Optional; the first active session is used." type = "string" option = ["--session", "-s"] sources = ["help"] [[commands.subcommand.field]] id = "image" label = "Images" type = "path" option = ["--image"] multiple = true path = { kind = "file", role = "input" } sources = ["help"] [[commands.subcommand.field]] id = "file" label = "Files" type = "path" option = ["--file"] multiple = true path = { kind = "file", role = "input" } sources = ["help"] [[commands.subcommand.field]] id = "tts" label = "Voice message text" type = "string" option = ["--tts"] sources = ["help"] [[commands.subcommand.field]] id = "cwd" label = "Working directory for a new session" type = "path" option = ["--cwd"] path = { kind = "directory", role = "input" } sources = ["help"] [[commands.subcommand.task]] id = "text" label = "Send a text message" fields = ["message", "project"] required = ["message"] [[commands.subcommand.task]] id = "attach" label = "Send a file or image" fields = ["file", "image", "message", "project"] required = [] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["message", "image", "file", "tts"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["project", "session", "cwd"]