Bring your codebase into the conversation.
Or any codebase, really.
SniptailShowcase.1.mp4
Sniptail is an omnichannel bot that accepts slash commands or chat commands, runs coding agent jobs against approved repos, and posts back reports or merge requests. Slack, Discord, and Telegram are supported channels. It is designed for teams that want a lightweight, self-hosted automation loop for repo analysis and changes.
You can also mention the bot directly in a channel to kick off work without remembering a slash command. This is the simplest "wow" moment: mention the bot, ask a quick question, and it will casually check the configured repositories and answer in natural language right where it was mentioned.
This quickstart assumes:
- bot and worker run on the same machine
- one shared
.envfile is used for both - the CLI for your configured primary agent is installed, configured, and authenticated on your machine (
codexfor the default config, orcopilot/opencode/ an ACP-backed agent if you switch agents) - you want to test with this repository:
git@github.com:Justkog/sniptail.git
Sniptail local Codex, Copilot, OpenCode, and ACP-backed runs always execute the configured system binaries from PATH (no bundled fallback).
curl -fsSL https://raw.githubusercontent.com/Justkog/sniptail/main/install.sh | bashEdit ~/.sniptail/config/.env and set at least:
DISCORD_BOT_TOKEN
Need help creating a basic Discord bot/token? See docs/discord-bot-setup.md.
Edit ~/.sniptail/config/sniptail.bot.toml and set:
[channels.discord]
enabled = true
app_id = "YOUR_DISCORD_APPLICATION_ID"Run:
sniptail local --migrate-if-neededThis quickstart uses the single-process local runtime. For split bot/worker deployments, see docs/setup-and-operations.md.
In a Discord server where the bot is installed, run:
/sniptail-agent
Then provide the initial prompt in the command, for example:
Walk me through the main request flow from chat command to final response.
After the thread is created, send follow-up prompts as simple messages in that thread. The thread can also surface permission requests and elicitation questions from the agent when the provider supports them.
Expected result:
- Sniptail starts an interactive agent session in the thread.
- Follow-up prompts sent in the thread stay attached to the same session.
- Permission requests and elicitation questions appear in the thread when supported.
- Bot posts the agent replies back into the same thread.
First add the repository:
sniptail repos add sniptail --ssh-url git@github.com:Justkog/sniptail.git
sniptail repos list
sniptail repos inspect sniptail
sniptail repos validate sniptail/sniptail-ask
Then, in the Discord modal that opens:
- write your request in the
questioninput, for example:
I'm about to confidently mis-explain /sniptail-ask. Walk me through only that flow from command to final message, no side quests.
- submit the modal
Expected result:
- Sniptail queues a job when you submit it.
- Worker clones/prepares
git@github.com:Justkog/sniptail.git. - Agent runs and produces a Markdown report.
- Bot posts the report and completion message back in the same Discord channel/thread.
For deeper setup and operations documentation, see docs/setup-and-operations.md, docs/chat-commands.md, docs/telegram-bot-setup.md, docs/project-roadmap.md, and docs/sniptail-cloud-faq.md.
If you use an external agent that understands SKILL.md-style workflows, the canonical operator-install skill for Sniptail lives at .github/skills/sniptail-operator-install/SKILL.md.
Fetch the full skill bundle directly from GitHub without cloning the repository:
mkdir -p ~/.agent-skills/sniptail-operator-install
mkdir -p ~/.agent-skills/sniptail-operator-install/references
SKILL_ROOT_URL="https://raw.githubusercontent.com/Justkog/sniptail/main/.github/skills/sniptail-operator-install"
DEST="${HOME}/.agent-skills/sniptail-operator-install"
curl -fsSL "${SKILL_ROOT_URL}/SKILL.md" -o "${DEST}/SKILL.md"
for rel in \
"references/sniptail-preflight-reference.md" \
"references/sniptail-repo-providers-reference.md" \
"references/sniptail-repo-catalog-reference.md" \
"references/sniptail-install-local-reference.md" \
"references/sniptail-slack-operator-reference.md" \
"references/sniptail-discord-operator-reference.md" \
"references/sniptail-split-deployment-reference.md"
do
curl -fsSL "${SKILL_ROOT_URL}/${rel}" -o "${DEST}/${rel}"
doneThat bundle tells the agent to install Sniptail through the supported standalone installer, prefer sniptail local --migrate-if-needed for first-time setups, guide Slack or Discord bot creation, and link repositories with the sniptail CLI.
If your agent only supports single-file skills, fetch SKILL.md at minimum, but the intended operator workflow depends on the bundled references living alongside it. For reproducible behavior, replace main in the raw GitHub URL with a release tag.
Sniptail is meant to grow along three axes: where requests come from, which coding agent executes them, and which Git service receives the results. Today, its omnichannel layer is implemented for Slack, Discord, and Telegram, alongside Codex, GitHub Copilot, OpenCode, and ACP-backed agent runtimes plus GitHub/GitLab integrations. The goal is to make each layer pluggable so other platforms can be added without rewriting the whole stack.
Roadmap detail tables are in docs/project-roadmap.md.
There are two ways to use Sniptail:
This is the most direct, interactive way to use Sniptail. It opens a live coding-agent session in a chat thread and keeps the conversation going turn by turn.
- A user starts an agent session from chat, picks a workspace/profile if needed, and sends a freeform prompt.
- Sniptail starts the selected agent in an interactive session tied to that thread.
- The user can keep working with the same session through follow-up prompts, plus stop or steer the active turn.
- When the agent asks for permissions or more input, Sniptail relays those interactions back into the chat flow when the provider supports it.
This is the queue-backed job flow used by the ASK / PLAN / EXPLORE / REVIEW / IMPLEMENT style commands and bot mentions. It is better suited to structured requests that should run as tracked jobs and optionally produce code-change artifacts.
- A user triggers a slash command or mentions the bot in Slack or Discord, or sends a Telegram command/message to the bot.
- The bot validates the request, queues a job via the configured transport (
redisor in-processinproc), and records metadata in the job registry. - A worker pulls the job, prepares repo worktrees when needed, and runs the configured coding agent (Codex, Copilot, OpenCode, or an ACP-backed agent).
- Results are posted back to Slack, Discord, or Telegram as a report and, for IMPLEMENT jobs, a GitLab MR or GitHub PR.
AI coding assistants like Copilot, Codex, and OpenCode are excellent for deep, hands-on technical work. They live in the editor or terminal, helping engineers write, refactor, and reason about code.
Sniptail doesn't replace them - it runs them on your behalf.
Instead of being tied to one developer's IDE, Sniptail turns those same agents into a team-facing automation layer:
- Ask questions about how a feature works - directly from Slack, Discord, or Telegram
- Explore product capabilities without digging through the repo
- Help onboard new team members who aren't technical
- Generate reports, plans, or lightweight PRs
- Do it all without installing or configuring anything locally
Copilot, Codex, and OpenCode empower individual engineers to go deep. Sniptail empowers the whole team to understand and safely interact with the codebase - using those same agents under the hood.
Sniptail is licensed under the Elastic License v2.
You are free to:
- Use Sniptail for personal or internal business purposes
- Self-host Sniptail
- Modify the source code
- Distribute unmodified or modified copies
You may not:
- Offer Sniptail as a hosted or managed service to third parties
- Provide Sniptail as part of a commercial SaaS offering without permission
