Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@sniff-dev/cli) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@sniff-dev/cli
Deploy AI agents to Linear in seconds
The official CLI for Sniff - the fastest way to deploy custom AI agents to Linear without building infrastructure.
Why Sniff?
Linear supports AI agents, but building one requires:
- Setting up backend infrastructure to receive webhooks
- Handling OAuth flows with
actor=app - Managing AgentSession lifecycles
- Emitting AgentActivity with proper timing
- Dealing with GraphQL mutations
- Deploying and maintaining servers
Sniff handles all of this for you. Just write a config file and deploy.
Features
- Config-driven: Define agents in YAML, version control everything
- Lightning fast: From zero to deployed agent in under 2 minutes
- Multiple agents: Deploy unlimited specialized agents, all appear as one Linear member
- Secure: OAuth managed by Ampersand - your tokens never touch our servers
- Powerful: Built-in tools (web search, web fetch) + MCP integrations (Linear, GitHub, Slack)
- Developer-friendly: CLI-first, no UIs to click through
Installation
npm install -g @sniff-dev/cliRequirements: Node.js >= 20.0.0
Quick Start
# 1. Authenticate with Sniff
sniff login
# 2. Initialize a new agent config
sniff init
# 3. Edit config.yml to customize your agent
# (Opens in your default editor or edit manually)
# 4. Deploy
sniff deployYour agent now appears as "@Sniff" in Linear! Mention it or assign issues to it.
Commands
sniff login
Authenticate with Sniff. Opens your browser to complete authentication.
sniff loginsniff logout
Log out from Sniff and clear stored credentials.
sniff logoutsniff connect <provider>
Connect integrations required for your agents.
# Connect Linear workspace (required)
sniff connect linear
# Connect Anthropic API key (required)
sniff connect anthropicAvailable providers:
linear- Connect your Linear workspace (OAuth)anthropic- Add your Anthropic API key
sniff init [agent-id]
Create a new agent configuration file.
# Create config.yml in current directory
sniff init
# Create config for specific agent ID
sniff init triage-agentThis generates a config.yml template with example configuration.
sniff deploy
Deploy or update an agent from config.yml in the current directory.
sniff deploy
# Deploy from a specific file
sniff deploy --config ./my-config.ymlThe agent will be created or updated based on the agent.id in your config.
sniff list
List all your deployed agents.
sniff listShows:
- Agent ID
- Agent name
- Description
- Model being used
- Last updated timestamp
sniff remove <agent-id>
Delete a deployed agent.
sniff remove triage-agentConfiguration
Example config.yml:
version: '1.0'
agent:
id: 'docs-agent'
name: 'Docs Agent'
description: 'Searches docs and answers questions'
system_prompt: |
You help users find answers in documentation.
Search the web for relevant docs and provide clear answers.
model:
provider: 'anthropic'
name: 'claude-sonnet-4-5-20250929'
tools:
- type: web_search_20250305
- type: web_fetch_20250910
mcp_servers:
- url: https://api.sniff.to/mcp/linear
tool_configuration:
allowed_tools: ['searchIssues', 'getIssue']See full configuration options in our docs
Security
Your credentials never touch Sniff's servers.
- Linear OAuth tokens are managed by Ampersand
- Anthropic API keys are encrypted and stored securely
- All API calls are proxied through secure infrastructure
- Multi-tenant architecture with isolated data per user
Debugging
Enable debug logging for any command:
sniff --debug deploy
sniff --debug connect linearThis shows detailed logs of API calls, authentication flows, and configuration parsing.
Documentation
- Docs: docs.sniff.to
- Discord: Join our community
- npm: npmjs.com/package/@sniff-dev/cli
Support
- Discord: discord.gg/huk9sSQCJA
License
MIT © Sniff