Skip to main content

nocville

Python SDK for pushing status updates to Nocville.

Installation

pip install nocville

For async support:

pip install nocville[async]

Usage

Synchronous

from nocville import NocvilleClient, Status, Mood

client = NocvilleClient(
    api_key="your-api-key",
    service_id="my-service",
)

# Push a status update
response = client.push_status(
    status=Status.HEALTHY,
    mood=Mood.HAPPY,
    message="All systems operational",
    metrics={"cpu": 45, "memory": 60},
)

# Quick helpers
client.healthy("Everything is fine")
client.warning("High memory usage")
client.critical("Service down!")

Asynchronous

import asyncio
from nocville.client import AsyncNocvilleClient, Status

async def main():
    client = AsyncNocvilleClient(
        api_url="https://your-nocville-server.com",
        api_key="your-api-key",
        service_id="my-service",
    )

    response = await client.push_status(
        status=Status.HEALTHY,
        message="All systems operational",
    )

asyncio.run(main())

Configuration

Option Type Default Description
api_key str required Team API key for authentication
api_url str https://nocville.com Nocville API URL (override for development)
service_id str required The service ID this client represents
timeout float 5.0 Request timeout in seconds
retries int 3 Number of retry attempts on failure
retry_delay float 1.0 Base delay between retries in seconds
debug bool False Enable debug logging

Status Values

  • Status.HEALTHY - Service is operating normally
  • Status.WARNING - Service has non-critical issues
  • Status.CRITICAL - Service has critical issues
  • Status.UNKNOWN - Service status cannot be determined

Mood Values

  • Mood.HAPPY - NPC appears happy
  • Mood.CONCERNED - NPC appears concerned
  • Mood.STRESSED - NPC appears stressed
  • Mood.IDLE - NPC appears neutral

License

MIT

Maps, AI coworkers and shutdown

Both clients accept map="Ops" (map name or ID) and the same keyword-only status fields:

from nocville import NocvilleClient, BehaviorHints, CompanionSpec

client = NocvilleClient(api_key="your-api-key", service_id="build-agent", map="Ops")
behavior: BehaviorHints = {"activity": "busy", "busy": "seek-desk"}
companion: CompanionSpec = {
    "screenType": "desk-sign",
    "placement": "on-desk",
    "size": {"w": 3, "h": 1},
    "label": "checkout-api",
}
try:
    client.push_status(
        "healthy", name="Claude", message="Running tests",
        behavior=behavior, companion=companion,
        appearance={"family": "claude"},
        agent_stats={"added": 12, "removed": 3},
    )
finally:
    client.shutdown()

agent_stats becomes agentStats on the wire. Behavior and companion dictionaries use API camelCase keys. offline=True immediately removes the NPC. shutdown() stops and drains heartbeats before sending an unknown/idle/offline sentinel, and returns a PushResponse; use await client.shutdown() for AsyncNocvilleClient.

auto_offline=True opts into a best-effort interpreter-exit callback (default False). For async clients this callback uses a synchronous request because the event loop may already be closed. Prefer explicit shutdown in finally; exit callbacks cannot run after SIGKILL or a crash. Python 3.9 or newer is required.

Metadata

Release files for nocville 0.2.2

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

Source distribution (sdist)

Source distribution for nocville 0.2.2
File Size Uploaded Provenance
nocville-0.2.2.tar.gz 10.8 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for nocville 0.2.2
File Interpreter ABI Platform
nocville-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 21.0 kB

Release files / nocville-0.2.2.tar.gz

Download URL nocville-0.2.2.tar.gz
Size 10.8 kB
Tags Source
SHA-256 checksum
How to use checksums
cda68948f74a8b24c9fb6c5d5174fe3bd915285bb9b16e07f6f597e11e91f8d7
BLAKE2b-256 checksum
How to use checksums
50d190c6930766bd97729672c9f456db45647f47d8817fc315585113c1e70042
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / nocville-0.2.2-py3-none-any.whl

Download URL nocville-0.2.2-py3-none-any.whl
Size 10.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e198d72bcc31f520aa93deb4e25c668c370fd6725c9d6e4c6d03d7d3e52ae276
BLAKE2b-256 checksum
How to use checksums
24963783474dfab9af856ffaf77c1723d688c6701af5cfdd263d39b5803442d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Security for nocville 0.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for nocville-0.2.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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