Tlive
tlive — remote approvals (Telegram/Feishu/web), live web terminal, and session monitoring for Claude Code / Codex. Use for configuring or diagnosing tlive, connecting IM platforms, printing session links, or explaining approval behavior. Triggers "tlive", "IM bridge", "phone approvals", "remote terminal", "Telegram/Feishu notifications".From its SKILL.md
npx -y skills add y49/tlive --skill tliveAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- reads credentialsReads from 1 credential source: `~/.tlive/config.json`.
- runs commandsInstructs the agent to run 5 commands, including `tlive status` and 4 more.
SKILL.md
5.2 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
tlive usage guide
tlive is a self-hosted monitoring/approval layer. Claude Code sessions report
through global hooks; Codex sessions are watched through an app-server
companion process (no hooks, no trust step). Completions and failures land in
IM (Telegram/Feishu) and the web dashboard, where you can reply-to-continue.
The posture (tlive mode, default notify) decides whether approvals are
held for a remote answer: in notify tlive only watches + notifies (the shim
never holds an approval — prompts stay 100% native); tlive mode full turns on
remote approval (Allow/Deny from IM/desktop/dashboard); off makes every hook a
no-op. The daemon auto-starts with new sessions (disable via
daemon.autoStart: false).
Commands
tlive setup— configure IM credentials + register the Claude/Codex plugins (hooks ride the Claude plugin; Codex needs none).--hooks-onlyre-registers plugins only; add--claude/--codexto pick a vendor.tlive status— daemon health, effectivemode, channels, and the Codex companion state (running/degraded/off; degraded or off = Codex approvals local-only).tlive mode off|notify|full— set posture (see intro). Persisted to config, takes effect on the next hook;notifyis the default,full= remote approval on.tlive run <cmd>— wrap a process: local terminal + live web terminal (QR to open).tlive url— print the dashboard link + QR code.tlive logs -f— follow the daemon log.tlive start/tlive stop— explicit lifecycle (start is rarely needed; sessions lazy-start the daemon unless autoStart is off).
Diagnostics
- No IM messages:
tlive statusfor channel config;tlive logs -ffor send errors; confirm the daemon is up after starting a session. - Codex has no remote cards: check
tlive status— the companion line must sayrunning.offmeans codex isn't on PATH (or Windows);degradedmeans the app-server child keeps dying — see~/.tlive/codex-appserver.log. Either way Codex still prompts locally; nothing is ever auto-run. - No approval card ever arrives: check
tlive status— themode:line must sayfull. The defaultnotifynever sends approval cards (tool prompts stay local); enable remote approval withtlive mode full. - Claude approval card unanswered (in
full): the local dialog stays live the whole time (parallel channels, first answer wins); answering locally resolves the remote card as "answered in terminal". The remote window defaults to ~24h (approvals.windowSec, shared by both vendors). - Web page unreachable:
tlive urlfor the current link (token is in the URL); phones need the same LAN (or your own reverse proxy/VPN — tlive has nopublicUrlconfig, and cards never carry the link).
Security model in one breath
- Never auto-allow: unanswered → Claude's local dialog governs / Codex's native prompt governs. Deny always carries a reason.
- Read-only tools (Read/Glob/Grep) pass by default.
/safe onalso auto-allows routine ops (non-dangerous Bash, non-sensitive edits) — the danger floor (rm -rf, sudo, .env/.ssh writes…) still asks and no config can lower it./trust onpauses approvals entirely (high risk — pair with allowedSenders). - Runtime switches flip the same state from either entrance: IM commands
(/mute /trust /safe) and the CLI (
tlive mute|trust|safe on|off)./mute on= go quiet; it silences IM notifications ONLY. The desktop toast is a separate, independent surface (IM ⊥ desktop): CLI-onlytlive desktop on|off, no IM command, unaffected by/mute. It fires only for things that need you to act: a pending approval, or the idle "waiting for your input" nudge. A finished turn stays on IM (a per-turn toast would flood the screen). - Vendor-side
permissions.denyalways wins; tlive never overrides it.
First-time onboarding
When the user says "help me set up tlive" (or runs /tlive:setup), walk them through:
tlive statusto check the engine; missing →npm i -g tlive.- No channels → collect Telegram (bot token + chat id) or Feishu
(appId + appSecret) credentials and merge into
~/.tlive/config.json:{ "allowedSenders": [], "adapters": { "telegram": { "token": "…", "chatIdAllowList": ["…"] }, "feishu": { "appId": "…", "appSecret": "…" } } } tlive start→tlive statusto verify channels;tlive urlfor the dashboard.- Offer remote approval: tlive defaults to
notify(watch + notify only). If the user wants to Allow/Deny tool calls from their phone, runtlive mode full(holds each tool call for a remote answer; reversible withtlive mode notify). Leave it innotifyif they only want monitoring. - Codex needs no extra step — the companion starts with the daemon. If status
says
off/degraded, that's diagnostic info, not a setup task.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.