Skip to main content

Gjalla CLI — architecture guardrails for AI coding agents

Project description

Gjalla Pre-commit CLI

Pre-commit analysis CLI for validating changes against team rules.

Installation

pip install -e .

Commands

Command Description
init Initialize gjalla in a repository
commit Analyze staged changes before commit
bypass Bypass analysis for a commit
status Show current status
hook Manage git hooks (install/uninstall)
caps Show available capabilities
sync Sync configuration
auth Authentication management
impact Show impact analysis
mcp MCP server mode

User Guide

Initial Setup

  1. Configure API key:

    gjalla init
    
    • Prompts for API key (or set GJALLA_API_KEY env var)
    • Discovers available projects from API
    • Links current repository to a project
  2. Install pre-commit hook (optional):

    gjalla hook install
    

Daily Usage

Automatic (via pre-commit hook):

  • Hook runs gjalla commit automatically on each git commit
  • Blocks commit if violations are found

Manual:

git add <files>
gjalla commit
git commit -m "message"

Analysis Flow

When gjalla commit runs:

  1. Opens WebSocket connection to analysis service
  2. Sends staged changes for analysis
  3. Executes tool calls from the service (file reads, searches)
  4. Displays results: violations, warnings, suggestions
  5. Stores analysis receipt on successful analysis

Reading Output

  • Violations (red): Must fix before commit proceeds
  • Warnings (yellow): Should review, won't block commit
  • Suggestions (blue): Optional improvements
  • Receipt: Analysis ID stored for audit trail

Bypassing Analysis

When you need to skip analysis:

gjalla bypass -m "reason for bypass"
git commit -m "message"

Logs bypass with timestamp and reason.

Checking Status

gjalla status

Shows: project linkage, hook status, last analysis receipt.

Hook Management

gjalla hook install    # Install pre-commit hook
gjalla hook uninstall  # Remove pre-commit hook
gjalla hook status     # Check hook installation

Configuration

Global config: ~/.gjalla/config.yaml

api_key: "your-api-key"
api_url: "https://api.gjalla.io"
projects:
  /path/to/repo: "project-id"

Project config: .gjalla.yaml (in repo root)

  • Project-specific rules and settings

Environment variables:

  • GJALLA_API_KEY - Overrides config file api_key
  • GJALLA_API_URL - Overrides config file api_url

Development Guide

Setup

git clone <repo-url>
cd gjalla-precommit
python3 -m venv venv
source venv/bin/activate
pip install -e ".[dev]"
pre-commit install  # Install hooks after cloning

Running Tests

python3 -m pytest tests/ -v

Project Structure

gjalla_precommit/
  cli.py              # Entry point, command group
  commands/           # CLI command implementations
    init.py           # gjalla init
    commit.py         # gjalla commit
    bypass.py         # gjalla bypass
    status.py         # gjalla status
    hook.py           # gjalla hook install/uninstall
    caps.py           # gjalla caps
    sync.py           # gjalla sync
    auth.py           # gjalla auth
    impact.py         # gjalla impact
    mcp.py            # gjalla mcp
  config/             # Configuration management
    settings.py       # Settings loading, config paths
  protocol/           # WebSocket protocol handling
  display/            # Terminal output formatting (rich)
  tools/              # Tool implementations for analysis
tests/                # Test suite

Dependencies

  • click - CLI framework
  • rich - Terminal formatting
  • websockets - WebSocket client
  • gitpython - Git operations
  • pyyaml - Config file parsing
  • pydantic - Settings validation
  • httpx - HTTP client
  • pathspec - Gitignore-style pattern matching

Dev Dependencies

  • pytest - Test runner
  • pytest-asyncio - Async test support

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gjalla-0.4.22.tar.gz (84.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gjalla-0.4.22-py3-none-any.whl (63.6 kB view details)

Uploaded Python 3

File details

Details for the file gjalla-0.4.22.tar.gz.

File metadata

  • Download URL: gjalla-0.4.22.tar.gz
  • Upload date:
  • Size: 84.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gjalla-0.4.22.tar.gz
Algorithm Hash digest
SHA256 29648011dcace73fe774f54b0b9e259d1fabf5971f3d8a66ea83950f8ef10f28
MD5 d8ebb7152279179f81eb469af2f0f858
BLAKE2b-256 d1689ed6ae284f1b8485c1294bcfe2650c1bacf9a43557fdfeae26c0763d2e94

See more details on using hashes here.

Provenance

The following attestation bundles were made for gjalla-0.4.22.tar.gz:

Publisher: ci-publish.yml on elliemdaw/gjalla-precommit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gjalla-0.4.22-py3-none-any.whl.

File metadata

  • Download URL: gjalla-0.4.22-py3-none-any.whl
  • Upload date:
  • Size: 63.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gjalla-0.4.22-py3-none-any.whl
Algorithm Hash digest
SHA256 efd202e25ad96b033cd47bfe45811aa2237e23233c24bc62d5ad0370079bb98e
MD5 24230d7c0345d1d2dc5ff5f141be0473
BLAKE2b-256 7dcc7f6b0b2cf344e865703785f39e828eb4e9d93fd364cffe641fcd2b241fa9

See more details on using hashes here.

Provenance

The following attestation bundles were made for gjalla-0.4.22-py3-none-any.whl:

Publisher: ci-publish.yml on elliemdaw/gjalla-precommit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page