Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

vibeatlas-ship

SHIP Score PyPI version Python Version License Tests

SHIP Protocol SDK - Success Heuristics for Intelligent Programming

The industry standard for measuring AI coding agent reliability.

Why SHIP?

70% of AI coding tasks fail. There's no standard metric for reliability.

SHIP Score (0-100) predicts whether AI-assisted code will work:

Grade Score Reliability
A+ 95-100 95%+ success rate
A 85-94 85-94% success rate
B 70-84 70-84% success rate
C 50-69 50-69% success rate
D 30-49 30-49% success rate
F 0-29 <30% success rate

Installation

pip install vibeatlas-ship

Quick Start

Async (Recommended)

import asyncio
from vibeatlas_ship import ShipClient, FileInfo, Language

async def main():
    async with ShipClient() as client:
        response = await client.assess(
            files=[
                FileInfo(
                    path="main.py",
                    content='''
def calculate_total(items):
    return sum(item.price for item in items)
                    ''',
                    language=Language.PYTHON,
                )
            ],
            prompt="Add error handling and type hints",
        )

        # Get your SHIP Score
        print(f"SHIP Score: {response.ship_score.score} ({response.ship_score.grade.value})")
        print(f"Confidence: {response.confidence.confidence_score}")
        print(f"Focus: {response.focus.focus_score}")
        print(f"Context: {response.context.context_score}")
        print(f"Efficiency: {response.efficiency.efficiency_score}")

        # Get recommendations
        for rec in response.recommendations:
            print(f"  [{rec.type}] {rec.message}")

asyncio.run(main())

Sync Client

from vibeatlas_ship import SyncShipClient, FileInfo, Language

with SyncShipClient() as client:
    response = client.quick_assess(
        code="def hello(): print('world')",
        prompt="Add type hints and docstring",
        language=Language.PYTHON,
    )
    print(f"SHIP Score: {response.ship_score.score}")

From Files

from vibeatlas_ship import SyncShipClient

with SyncShipClient() as client:
    response = client.assess_files(
        file_paths=["src/main.py", "src/utils.py"],
        prompt="Refactor to use async/await",
        project_root="/path/to/project",
    )

Features

Antifragile Design

Built with Talebian principles - the SDK gets stronger from failures:

  • Circuit Breaker: Prevents cascade failures
  • Exponential Backoff: Smart retry with jitter
  • Graceful Degradation: Never crashes, always returns useful info
from vibeatlas_ship import ShipClientConfig, CircuitBreaker, RetryPolicy

config = ShipClientConfig(
    # Circuit breaker settings
    circuit_breaker=CircuitBreaker(
        failure_threshold=5,
        failure_window_seconds=60,
        recovery_timeout_seconds=30,
    ),
    # Retry settings
    retry_policy=RetryPolicy(
        max_retries=3,
        base_delay_ms=1000,
        max_delay_ms=30000,
    ),
)

client = ShipClient(config)

Self-Learning Feedback Loop

Help improve the model by providing feedback:

from vibeatlas_ship import TaskOutcome

# After your AI task completes
await client.feedback(
    request_id=response.request_id,
    outcome=TaskOutcome(
        task_completed=True,
        first_attempt_success=True,
        total_attempts=1,
        user_satisfaction=5,
    ),
)

Full Type Safety

Complete type hints and Pydantic validation:

from vibeatlas_ship import (
    ShipResponse,
    ShipScore,
    ConfidenceAssessment,
    FocusAssessment,
)

# All types are fully typed and validated
response: ShipResponse = await client.assess(...)
score: ShipScore = response.ship_score
confidence: ConfidenceAssessment = response.confidence

API Reference

ShipClient

Method Description
assess() Assess code context and get SHIP Score
quick_assess() Quick assessment from single code snippet
assess_files() Assess files from disk
feedback() Submit feedback for learning
get_score() Get project's current score
get_metrics() Get account metrics
health() Check API health

Types

Type Description
FileInfo File with content and metadata
Context Context for assessment
ShipScore Score breakdown
ShipResponse Full assessment response
TaskOutcome Feedback outcome data

Exceptions

Exception Description
ShipError Base exception
ShipTimeoutError Request timed out
ShipRateLimitError Rate limit exceeded
ShipValidationError Invalid request
CircuitBreakerOpenError Circuit breaker open

Configuration

from vibeatlas_ship import ShipClientConfig, create_client

client = create_client(
    api_key="ship_free_...",  # Optional for free tier
    base_url="https://ship.vibeatlas.dev",
    timeout_seconds=30,
)

Environment variables:

export SHIP_API_KEY="ship_free_..."
export SHIP_BASE_URL="https://ship.vibeatlas.dev"

Philosophy

This SDK follows Talebian/Antifragile principles:

  1. Optionality: Multiple ways to achieve the same goal
  2. Barbell Strategy: Safe defaults + advanced configuration
  3. Via Negativa: Improve by removing failure modes
  4. Convexity: Failures cost little, successes compound
  5. Skin in the Game: Confidence scores = accountability

Links

License

MIT License - see LICENSE for details.


Built with love by VibeAtlas - Making AI coding reliable.

Metadata

Release files for vibeatlas-ship 0.1.0b0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vibeatlas-ship 0.1.0b0
File Size Uploaded
vibeatlas_ship-0.1.0b0.tar.gz 21.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vibeatlas-ship 0.1.0b0
File Interpreter ABI Platform
vibeatlas_ship-0.1.0b0-py3-none-any.whl Python 3 none any Details

Total release size: 40.9 kB

Release files / vibeatlas_ship-0.1.0b0.tar.gz

Download URL vibeatlas_ship-0.1.0b0.tar.gz
Size 21.6 kB
Tags Source
SHA-256 checksum
How to use checksums
bdfcaa7460180ce00b28ea806bb41d2d4f9abfbf9aae258c48c9227bf1307b3a
BLAKE2b-256 checksum
How to use checksums
11b9544f0fa81a040c59ebd2ecc15a16783c68e3055afefb22acf08a871c95fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / vibeatlas_ship-0.1.0b0-py3-none-any.whl

Download URL vibeatlas_ship-0.1.0b0-py3-none-any.whl
Size 19.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4118249c85f8089567a96d508ca9c56db3eefc195348de65b62e4521636315a4
BLAKE2b-256 checksum
How to use checksums
e706eb9442703471b7b44e214436dfd14d4d10d31429bf75e1526d4af2620c7c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.1.0b0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page