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
    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.29.tar.gz (92.6 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.29-py3-none-any.whl (66.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: gjalla-0.4.29.tar.gz
  • Upload date:
  • Size: 92.6 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.29.tar.gz
Algorithm Hash digest
SHA256 dfc7a6c3231e6a38330d18ab89b478eac32966e91ee5a233c09c13dd94ee96c4
MD5 2d7a9ed9550bc43922478d92c058cdee
BLAKE2b-256 cf0c4700375d685e1607990bb822b436c1d99aa45f058bb0d99088002fb2c297

See more details on using hashes here.

Provenance

The following attestation bundles were made for gjalla-0.4.29.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.29-py3-none-any.whl.

File metadata

  • Download URL: gjalla-0.4.29-py3-none-any.whl
  • Upload date:
  • Size: 66.0 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.29-py3-none-any.whl
Algorithm Hash digest
SHA256 51882c3d7ffb1fe0f854981e2439696c706fdb25d50278a018ee345d0296e141
MD5 08534da9ecf33fb0f499d66717cb118f
BLAKE2b-256 b14f90b9e1f069148590d9f7c4f9597f8a76a54b4e1218a4fa8b1a06ff985144

See more details on using hashes here.

Provenance

The following attestation bundles were made for gjalla-0.4.29-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