Skip to content

tachote/taker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

taker

A CLI tool for generating professional, publication-ready code and HTTP evidence screenshots for security audits, SAST pipelines, MCP servers, and AI agents.

Produces VS Code Dark+-styled PNG images with syntax highlighting, line numbers, file icons, and red highlight overlays — without requiring a browser, Electron, or any GUI dependency. Single self-contained binary with embedded fonts.


Installation

Download binary (recommended)

Download the latest release for your platform from the releases page:

# macOS (Apple Silicon)
curl -L https://github.com/tachote/taker/releases/latest/download/taker_Darwin_arm64.tar.gz | tar xz
sudo mv taker /usr/local/bin/

# macOS (Intel)
curl -L https://github.com/tachote/taker/releases/latest/download/taker_Darwin_x86_64.tar.gz | tar xz
sudo mv taker /usr/local/bin/

# Linux (amd64)
curl -L https://github.com/tachote/taker/releases/latest/download/taker_Linux_x86_64.tar.gz | tar xz
sudo mv taker /usr/local/bin/

go install

go install github.com/tachote/taker@latest

Requires Go 1.22+.

Build from source

git clone https://github.com/tachote/taker
cd taker
go build -o taker .

Features

  • VS Code Dark+ aesthetics — tab bar, gutter, syntax highlighting, file type icons (Nerd Fonts)
  • 10 built-in themes — VS Code Dark+, Dracula, Nord, Catppuccin Mocha, GitHub Dark, Gruvbox, One Dark, Monokai, Solarized Dark, Rosé Pine
  • Line selection — render only the lines you need (1,5,10-20,30-40), with automatic gap indicators () between non-adjacent ranges
  • Context mode — automatically include N lines around highlighted lines (--context 5)
  • Highlight overlay — red background + border on arbitrary lines or ranges (13,15 or 10-20)
  • Word wrap — wrap long lines with continuation indicators, like VS Code
  • HTTP evidence mode — side-by-side Request / Response panels for documenting HTTP vulnerabilities
  • Stdin support — pipe code directly without creating a temp file
  • Self-contained binary — JetBrains Mono and Symbols Nerd Font are embedded; no runtime dependencies

Usage

Code evidence

taker [file] [flags]
Flag Short Default Description
--lang -l auto Language for syntax highlighting
--lines -n all Lines to include, e.g. 1,5,10-20
--highlight -H Lines to highlight in red, e.g. 15 or 13,15 or 10-20
--context -c 0 Include N context lines around each highlighted line
--wrap -w false Wrap long lines (VS Code-style word wrap)
--wrap-width 100 Column width when wrapping
--title -t filename Title shown in the tab bar
--theme -T vscode-dark Color theme
--output -o output.png Output PNG path
--list-themes Print available themes and exit

Examples

# Render a full file
taker auth.go -o evidence.png

# Highlight a specific vulnerability (line 42)
taker auth.py -H 42 -o evidence.png

# Highlight with 5 lines of context — ideal for SAST/AI agents
taker auth.py -H 42 -c 5 -o evidence.png

# Non-contiguous lines with gap indicator
taker config.go -n "1-10,45-60" -H "52,57" -o evidence.png

# Wrap long lines (e.g. YAML with inline comments)
taker application.yml -H "13,15" -c 4 -w -o evidence.png

# From stdin
cat vuln.js | taker -l javascript -t "vuln.js" -H 8 -o evidence.png

# Dracula theme
taker secrets.py -H 15 -T dracula -o evidence.png

Highlight + context (VS Code Dark+):

taker render/render.go -H 279-283 -c 4 -o evidence.png

Highlight with context

Dracula theme, non-contiguous highlights:

taker main.go -H 56,59 -c 3 -T dracula -o evidence.png

Dracula theme

Catppuccin Mocha, line selection:

taker render/theme.go -n "1-30" -H 17-22 -T catppuccin-mocha -o evidence.png

Catppuccin Mocha

HTTP evidence

taker http -r <request-file> -s <response-file> [flags]

Renders a side-by-side Request / Response panel image, similar to Burp Suite's repeater view.

Flag Description
-r File containing the raw HTTP request
-s File containing the raw HTTP response
--hr Lines to highlight in the request panel
--hs Lines to highlight in the response panel
--wrap-width Columns per panel (default: 90)
-T Color theme
-o Output PNG path

Examples

# Basic HTTP evidence
taker http -r request.http -s response.http -o evidence.png

# Highlight the credential leak line in request and the token in response
taker http -r request.http -s response.http --hr "8" --hs "15" -o evidence.png

# Wider panels for responses with long headers
taker http -r req.http -s res.http --wrap-width 110 -o evidence.png

Credential leak — highlighted request line 8, response line 6 (Dracula):

taker http -r request.http -s response.http --hr 8 --hs 6 -T dracula -o evidence.png

HTTP evidence

Request file format (request.http):

POST /oauth2/token HTTP/2
Host: auth.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_secret=EXPOSED_SECRET

Response file format (response.http):

HTTP/2 200 OK
Content-Type: application/json

{"access_token": "eyJ..."}

Themes

taker --list-themes
Key Name
vscode-dark (default) VS Code Dark+
dracula Dracula
nord Nord
catppuccin-mocha Catppuccin Mocha
github-dark GitHub Dark
gruvbox Gruvbox
one-dark One Dark
monokai Monokai
solarized-dark Solarized Dark
rose-pine Rosé Pine

Integration

MCP server (AI agents)

taker is designed to be called by MCP servers and AI agents as part of automated security reporting pipelines. The binary is fully autonomous — no dialogs, no GUI, no network access.

import subprocess

def generate_evidence(file_path: str, highlight_lines: str, context: int = 5, output: str = "evidence.png") -> str:
    result = subprocess.run([
        "taker", file_path,
        "--highlight", highlight_lines,
        "--context", str(context),
        "--output", output,
    ], capture_output=True, text=True)
    if result.returncode != 0:
        raise RuntimeError(result.stderr)
    return output

SAST pipeline

# GitHub Actions example
- name: Generate vulnerability evidence
  run: |
    taker src/auth/login.py \
      --highlight "${{ env.VULN_LINE }}" \
      --context 5 \
      --theme github-dark \
      --output evidence/${{ env.FINDING_ID }}.png

Fluid Attacks MCP integration

taker is the evidence generation backend for the fluid-mcp server. The generate_code_evidence tool calls taker to produce screenshot evidence that is then uploaded to Fluid Attacks Integrates via GraphQL.


How it works

Source file
    │
    ▼
highlight.Tokenize()          ← chroma lexer (200+ languages)
    │  syntax tokens with RGB colors
    ▼
highlight.FilterLines()       ← apply --lines spec, insert gap sentinels
    │
    ▼
render.buildVisualLines()     ← apply word wrap if --wrap
    │
    ▼
render.Render()               ← 4-pass image composition
    │   Pass 1: fill backgrounds (editor, tab bar, gutter)
    │   Pass 2: draw header (tab bar or HTTP panel header)
    │   Pass 3: draw visual lines (line numbers, tokens, highlights)
    │   Pass 4: draw highlight border
    ▼
png.Encode()                  ← output PNG at 144 DPI (2× retina quality)

For HTTP mode, RenderHTTP() runs two parallel render passes and composites the panels side by side with a vertical divider.


Supported languages

Any language supported by chroma — 200+ lexers including Go, Python, JavaScript, TypeScript, Java, Rust, PHP, Ruby, C/C++, C#, YAML, JSON, SQL, Bash, HCL/Terraform, XML, HTML, and HTTP.

Language is auto-detected from the file extension. Override with --lang:

taker payload.txt --lang sql -H 3 -o evidence.png

File type icons

Icons are rendered using Symbols Nerd Font embedded in the binary. Supported file types with distinct icons:

.go .py .js .ts .tsx .jsx .rs .java .rb .php .cs .c .cpp .h .html .css .scss .yaml .yml .md .sh .sql .tf .hcl .xml


Dependencies

Package Purpose
alecthomas/chroma Syntax highlighting (200+ languages)
alecthomas/kong CLI flag parsing
golang.org/x/image Font rendering, image primitives

Embedded assets:


License

MIT — see LICENSE.

Third-party licenses:

About

Generate professional code & HTTP evidence screenshots for security audits, SAST pipelines, MCP servers, and AI agents.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages