Skip to content

arcboxlabs/larkstack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

105 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Lark Stack - Integration Hub for Lark

An open-source integration hub for Lark / Feishu โ€” a Slack-grade ecosystem in one self-hosted binary.

One process supervises every integration and automation, with a React console for status, config, and one-shot actions.

Rust License

README in English ็ฎ€ไฝ“ไธญๆ–‡ README


Why Lark Stack

Slack won startups on its ecosystem, not its chat. Thousands of integrations mean every tool a team already lives in shows up where they talk โ€” a PR, a deploy, a paid invoice, an on-call page, a CRM update.

But Lark's integration catalog is thin, especially outside China โ€” so choosing it too often means giving up that ecosystem.

Lark Stack closes that gap. A self-hosted, open-source hub that packs the missing Slack-grade integrations into one binary you toggle from a web console. And it's not only bridges: it also runs autonomous in-Lark automations (standup, meeting minutes, โ€ฆ) โ€” growing the ecosystem deeper, not just wider. The App/Instance contract plus lark-kit make every new app a small, self-contained crate.

The goal: a startup or business can pick Lark and lose nothing โ€” every external tool bridged in, every recurring workflow run by a built-in automation, all where their team already works.

Apps

Apps are pluggable units the console supervises and toggles. Integrations bridge an external system into Lark; Automations run autonomously on a schedule or event. Click a name for its docs.

App Kind What it does
Linear Integration Linear webhook โ†’ Lark notification cards + issue link previews
GitHub Integration GitHub webhook โ†’ PR/issue/CI/security-alert cards + review-request DMs
X Integration X (Twitter) link previews rendered as Lark cards (preview-only)
Minutes Automation Auto-transcribe Lark VC recordings (STT) โ†’ digest cards + optional Lark Doc
Standup Automation Daily standup reminders + on-demand commands (announce/remind/urgent/check)

The three integrations are served on the console port under /webhooks/<app>/ (e.g. /webhooks/linear/webhook, /webhooks/github/webhook, /webhooks/x/lark/event) โ€” no per-app ports.

Roadmap

The bridges above are a starting set; the ambition is category coverage that matches what a team expects from Slack's App Directory. Want one sooner โ€” or one that's not listed? Open an issue or send a PR: a new integration is one self-contained crate.

Category Shipped Next up
Dev & code Linear, GitHub GitLab, Jira, Sentry
CI/CD & deploy GitHub CI Vercel, Netlify, generic webhook
Incident & on-call โ€” PagerDuty, Opsgenie, incident.io
Observability โ€” Datadog, Grafana, Alertmanager
Revenue & growth โ€” Stripe, HubSpot
Support โ€” Zendesk, Intercom
Social & feeds X / Twitter RSS, status pages
Team rituals Standup Polls, calendar digests, retros

Framework

Crate Purpose
crates/larkstack-core Plug-in contract (App/Instance/Manifest) + control plane (ControlPlane, EventStore)
crates/larkstack Framework host โ€” per-app supervisor + axum API + embedded React UI
crates/console Thin binary larkstack-console โ€” registers the bundled apps and runs the host
crates/lark-kit Shared toolkit for the Lark integration apps (sink, inbound server, config, crypto)

Console features

  • Dashboard โ€” per-app state + last-error.
  • Live event stream โ€” every tracing event from every subsystem, SSE with ?since= / Last-Event-ID backfill, persisted to SQLite (rolling 10k).
  • Config editor โ€” TOML editor in the UI; each app has an enabled toggle, and saving hot-restarts only the affected app.
  • Actions โ€” one-shot triggers per subsystem (linear/github: ping/test-lark, x: ping, standup: announce/ensure/remind/urgent/check, minutes: process-meeting).
  • Auth โ€” sign in with Lark OAuth; /api/* needs a session. The console is open until you bind a Lark app under [console], then restricted to the admins allowlist.

Quick start

# 1. Build
cd dashboard && pnpm install --frozen-lockfile && pnpm build && cd ..
cargo build -p console --release

# 2. Run (console is open until you set up Lark OAuth from the UI)
CONSOLE_SECRET=$(openssl rand -hex 32) \
LINEAR_WEBHOOK_SECRET=your_secret \
LARK_WEBHOOK_URL=https://open.larksuite.com/open-apis/bot/v2/hook/xxx \
./target/release/larkstack-console
# UI + API + webhooks all on http://localhost:8080 (webhooks at /webhooks/<app>/)
# CONSOLE_SECRET (optional) keeps sessions valid across restarts; a key is
# auto-generated and persisted if unset.

Or with Docker:

docker compose up -d

See docs/deploy/console.md for the full env-var reference.

Standalone apps

The automation apps keep their own [[bin]] for local/CLI use, reading config from env vars (LARK_*, STANDUP_*, โ€ฆ). The integrations (linear/github/x) are libraries โ€” run them through the console.

cargo run -p standup     # or minutes

For production, deploy the console โ€” one binary, all apps, toggled from the UI. See docs/deploy/console.md and docs/deploy/railway.md.

License

MIT or Apache-2.0, at your option.

About

๐Ÿ›ฐ๏ธ Open-source integration hub for Lark / Feishu โ€” bridge Linear, GitHub, X & more into Lark, plus standup and meeting-minutes automations, in one self-hosted Rust binary with a web console.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

 
 
 

Contributors