Skip to main content
Sync your Janet AI tickets as markdown files in your local development workspace. Files update in real-time, giving AI coding assistants like Cursor, Claude Code, and GitHub Copilot direct access to all of your tickets. Your AI agents can understand the full context of your tickets to create, update and resolve issues without leaving your editor. No more switching between tools to keep tasks organized.

Installation

Install the Janet CLI using pip:
pip install janet-cli
After installation, you can:
  • Verify the installation path: which janet
  • Check the installed version: janet --version
  • Upgrade to the latest version: janet update

Quick Start

1. Authenticate

Log in to your Janet AI account:
janet login
Select the organization you want to retrieve projects from.

2. Sync Tickets

Run the sync command to download your tickets and watch for real-time updates:
janet sync
You’ll be prompted to:
  • Select which projects you want to sync tickets from (By default, all projects are selected. Use SPACE to toggle OFF certain projects.)
  • Choose the directory where the janet-tickets folder should be created
The sync command runs continuously, automatically watching for updates. If you stop the sync process or your authentication expires, simply run janet sync or janet login again to resume real-time updates. Suggestions:
  1. Add janet-tickets outside of repos to use it across multiple projects
  2. If you add it in a repo, add janet-tickets/ to the .gitignore file for that repo

3. File Organization

A janet-tickets folder will be created in your selected directory containing all synced tickets as markdown files, organized in a clear hierarchy:
janet-tickets/
├── AI_AGENT_INSTRUCTIONS.md     # Context for AI agents
└── My Organization/
    ├── Backend/
    │   ├── BACK-1.md
    │   ├── BACK-2.md
    │   └── BACK-42.md
    └── Frontend/
        ├── FRONT-1.md
        └── FRONT-15.md

Using the Janet CLI with Coding Agents

Understand Projects@AI_AGENT_INSTRUCTIONS.md What admin dashboard bugs are in the Backlog or To Do columns?
Resolve Issues@AI_AGENT_INSTRUCTIONS.md Resolve @SW-342.md then move the ticket to In Review.
Update Issues@AI_AGENT_INSTRUCTIONS.md Mark @SW-76.md as In Progress and update the description to note that the backend service is crashing due to memory issues.
Create Issues@AI_AGENT_INSTRUCTIONS.md Create a new ticket for 404 error when typing in a new page modal in my SWE project To Do column.
Suggest Prioritizations@AI_AGENT_INSTRUCTIONS.md What are the easiest tickets in my Backlog to quickly implement without major backend overhauls.
Suggest Implementations@AI_AGENT_INSTRUCTIONS.md Based on all tickets related to rate limit issues in the CS project, make a plan on how I should re-architecture my backend.

Best Practices

  1. Always tag @AI_AGENT_INSTRUCTIONS.md when instructing your AI coding agent to use the Janet CLI
  2. Do not edit ticket markdowns manually. These will not be registered in your Janet AI workspace (and may lead to merge conflicts if your janet-tickets directory is in a repo). Instead, have your coding agent run CLI commands to make edits; these will be reflected in both your markdown and Janet AI workspace in real-time.
  3. When creating a ticket, always indicate the desired status (e.g., To Do, Backlog, In Progress)
  4. Integrate GitHub if you haven’t already

Additional CLI Commands

Help Commands

# Show help and available commands
janet --help

# Check authentication status
janet auth status

# Get project context (available projects and their keys)
janet context --json

Create a Ticket

janet ticket create "Title" --project <PROJECT_KEY> --status <STATUS> [options]
Required flags:
  • --project, -p - Project key (e.g., MAIN, BACK, FRONT)
  • --status, -s - Status (e.g., To Do, Backlog, In Progress)
Optional flags:
  • --description, -d - Detailed description
  • --priority - Low, Medium, High, Critical
  • --type, -t - Task, Bug, Story, Epic
  • --assignee, -a - Assignee email (can use multiple times)
  • --tag - Label/tag (can use multiple times)
  • --json - Output as JSON
Example:
janet ticket create "Fix authentication bug" \
  --project BACK \
  --status "To Do" \
  --description "Users are getting logged out unexpectedly" \
  --priority High \
  --type Bug \
  --assignee [email protected] \
  --tag backend \
  --tag auth

Update a Ticket

janet ticket update <TICKET_KEY> [options]
Available flags:
  • --status, -s - New status
  • --title - New title
  • --description, -d - New description
  • --priority - Low, Medium, High, Critical
  • --type, -t - Task, Bug, Story, Epic
  • --assignee, -a - New assignee(s)
  • --tag - New tag(s)
  • --json - Output as JSON
Examples:
# Move ticket to In Progress
janet ticket update MAIN-123 --status "In Progress"

# Mark ticket as complete
janet ticket update MAIN-123 --status "Done"

# Update priority and description
janet ticket update MAIN-123 --priority Critical --description "Causing production issues"

# Change assignee
janet ticket update MAIN-123 --assignee [email protected]

Read More

For more information about the Janet CLI, visit the PyPI package page.