A Feishu-first fork of cc-connect that makes AI-agent chat cards clear, compact, and pleasant to read.
Placeholders — final screenshots will be added in a later release. All screenshots must be redacted (bot tokens, user IDs, chat names, file paths) before publishing.
docs/screenshots/card-overview.png— a full agent reply card with identity header, panels, footer, and buttons (placeholder)docs/screenshots/status-footer.png— close-up of the footer: model · effort · elapsed / context bar / workdir (placeholder)docs/screenshots/thinking-separated.png— thinking kept out of the reply body (placeholder)
QueenCard is a fork of chenhg5/cc-connect, based on the v1.5.0 release (commit 17c61062). cc-connect bridges local AI coding agents (Claude Code, Codex, Gemini CLI, Kimi CLI, and more) to chat platforms such as Feishu/Lark, Telegram, Discord, and Slack. All credit for the bridge architecture, agent integrations, and platform support goes to the upstream author chenhg5 and contributors.
cc-connect is licensed under the MIT License (as stated in the upstream README and npm package). QueenCard keeps the same license and preserves all upstream copyright notices. See License and NOTICE.
QueenCard is an independent community fork. It is not affiliated with or endorsed by the cc-connect project. This tree is pinned to the v1.5.0 baseline and does not follow upstream auto-update.
QueenCard tracks upstream cc-connect v1.5.0 and changes what touches the Feishu card experience, agent usability from chat, and release safety. Everything upstream supports (agents, platforms, slash commands, scheduling) works as documented upstream.
- Colored card header per bot —
header_color,header_icon, anddisplay_nameon[projects.display]. Running / done / stopped keep the bot color; errors always use red. - Three-line status footer on Feishu rich cards
- model · reasoning effort · elapsed time
- context usage with an eight-segment progress bar and percentage
- current working directory
- Thinking stays out of the answer — reasoning from ACP-based agents (including
agent_thought_chunk) is no longer mixed into the reply body. - Collapsible thinking and tool-call panels —
card_show_thinking/card_show_tools(default true). - Card action buttons — switch model, switch effort, new conversation, stop (with confirm). Disable with
card_buttons = false. - Optional quota / usage display — off by default; opt in with
card_show_quotaplusquota_commandorquota_url. - Codex model & effort controls — six reasoning-effort levels and an up-to-date model list, switchable from chat.
- Grok model & effort controls — query and switch the active Grok model and its reasoning effort from chat.
- Self-update disabled, version pinned — builds are fixed to a known upstream tag and produced from source; see Why no auto-update.
These are not in current builds:
- Richer quota detail views (the hook already returns
resets_at, unused on the main card) - Additional card actions beyond the four buttons above
Prerequisites are the same as upstream: install and authenticate at least one agent CLI (Claude Code, Codex, Gemini CLI, …) before starting QueenCard. See the upstream README for agent setup.
The installed command name remains cc-connect so existing service units keep working. The product name is QueenCard.
Requires Go 1.22+.
git clone https://github.com/jklthinking/QueenCard.git
cd QueenCard
make build # or: go build -trimpath -o cc-connect ./cmd/cc-connect
# Linux amd64 pinned build (sha256 printed):
# GO_BIN=go bash scripts/build-queencard.shBuilding from source is the recommended path: it matches how QueenCard releases are produced and guarantees you run exactly the code you reviewed.
Download cc-connect-linux-amd64 from the GitHub Releases page, verify the published sha256, then:
chmod +x cc-connect-linux-amd64
sudo mv cc-connect-linux-amd64 /usr/local/bin/cc-connect
cc-connect # first run creates the config fileIf you are an AI assistant installing or upgrading QueenCard for a human operator, follow these steps in order. Do not skip the backup. Do not run cc-connect update.
-
Backup the running program and the config. Typical locations are
$(command -v cc-connect)for the binary and~/.cc-connect/config.tomlfor config. Copy both with a dated suffix, for examplecc-connect.bak-YYYYMMDDandconfig.toml.bak-YYYYMMDD. Record the original file mode and owner. -
Build or install. Clone
https://github.com/jklthinking/QueenCard.gitand runmake buildorbash scripts/build-queencard.sh. Alternatively download the Release asset and check its sha256 againstSHA256SUMS. Install by replacing the previouscc-connectbinary (keep that filename if the service unit calls it). -
Configure identity under each
[[projects]]so bots are distinguishable:[projects.display] header_color = "blue" # blue/wathet/indigo/turquoise/green/yellow/orange/violet/purple/grey/default header_icon = "🧭" # optional emoji display_name = "Guide-A" # empty defaults to the project name card_mode = "rich" # required for the QueenCard footer and buttons
See
docs/palette.md. Do not useredorcarmineas identity colors (reserved for errors). -
Do not run
cc-connect update. QueenCard disables self-update. An upstream installer would replace QueenCard with stock cc-connect and drop every card change. -
Restart the existing service unit only. Do not start a second cc-connect process.
-
What you should see in Feishu / Lark after a successful install: a rich reply card with the configured icon and display name in a colored header; the answer body; collapsible thinking / tool panels when the agent emits them; a three-line footer (model · effort · elapsed, context bar, working directory); and four buttons on a finished turn (switch model, switch effort, new conversation, stop). Stop is available while a turn is running.
-
Rollback: copy the dated backup binary and
config.tomlback over the live files, restore mode/owner, and restart the same service unit.
QueenCard uses the same config.toml layout as upstream (config.example.toml). Only the options relevant to QueenCard's card features are listed here; for everything else, follow the upstream documentation.
Under [[projects]] → [projects.display]:
[projects.display]
card_mode = "rich" # Feishu Card 2.0; required for the status footer
header_color = "blue"
header_icon = "🧭"
display_name = "Guide-A"
show_context_indicator = true # context usage line + progress bar (default: true)
show_workdir_indicator = true # working-directory line (default: true; false = two-line footer)
card_buttons = true # four turn controls (default: true)
card_show_thinking = true
card_show_tools = true
card_show_quota = false # optional external quota hookFooter labels follow the global language setting through the existing i18n mechanism. Thinking separation, Codex/Grok controls, and disabled self-update are behavior changes and require no extra keys.
Upstream ships a cc-connect update command that downloads the latest release binary. QueenCard deliberately disables it:
- Pinned behavior. Chat-facing behavior (card layout, command handling) must not change under a running deployment without a deliberate upgrade decision.
- Patch integrity. A stock upstream binary would silently remove every QueenCard change. Self-updating would downgrade QueenCard into plain cc-connect.
- Reviewable upgrades. Each QueenCard release rebases onto a specific upstream tag. Upgrading means: fetch the new QueenCard release (or rebuild from source), review the delta, and swap the binary on your own schedule.
- Richer quota detail views
- Additional card actions
- Rebase onto new upstream stable tags as they are released
- Contribute generic bug fixes upstream where the maintainer is interested
QueenCard is based on chenhg5/cc-connect (MIT, author chenhg5). Thank you to the cc-connect project. Baseline: v1.5.0 / 17c61062. This fork is locked and does not follow upstream automatically. See NOTICE.
MIT License — the same license as upstream cc-connect.
Copyright (c) chenhg5 and cc-connect contributors
Copyright (c) 2026 JKL Thinking / jklthinking
Upstream copyright is retained; see LICENSE and NOTICE.