Skip to main content

Orchestrate multi-agent systems with peer-to-peer coordination, unified memory, and built-in auth.

Reason this release was yanked:

Yanked pending corrected release

Project description

JarvisCore

Orchestrate multi-agent systems with peer-to-peer coordination, unified memory, and built-in auth.

Features

  • Agent Profiles — AutoAgent auto-generates and executes function tools under Kernel supervision; CustomAgent is bring-your-own-logic for advanced use cases
  • Human In the Loop (HITL) — Pause and resume agent execution for human review and approval
  • P2P Mesh — Agent discovery, peer-to-peer communication, and cognitive discovery via SWIM protocol + ZMQ
  • Workflow Orchestration — Dependencies, context passing, multi-step pipelines with crash recovery
  • Distributed Autonomous Workers — Mesh claims workflow steps without hardcoding step IDs
  • UnifiedMemory — EpisodicLedger, LongTermMemory, RedisMemoryAccessor, WorkingScratchpad
  • Context Distillation — TruthContext, TruthFact, Evidence models for shared agent knowledge
  • Nexus OSS Auth — Full OAuth flow via requires_auth=True; no boilerplate in agents
  • Telemetry / Tracing — TraceManager (Redis + JSONL), Prometheus step metrics
  • Integrations — FastAPI, aiohttp, and other async frameworks via jarviscore.integrations

Installation

pip install jarviscore-framework

# With Redis support (required for distributed features)
pip install "jarviscore-framework[redis]"

# With Prometheus metrics
pip install "jarviscore-framework[prometheus]"

# Everything
pip install "jarviscore-framework[redis,prometheus]"

Setup

# Initialize project
python -m jarviscore.cli.scaffold --examples
cp .env.example .env
# Add your LLM API key to .env

# Start Redis (required for mailbox, memory, distributed workflows)
docker compose -f docker-compose.infra.yml up -d

# Validate
python -m jarviscore.cli.check --validate-llm
python -m jarviscore.cli.smoketest

Quick Start

AutoAgent

from jarviscore import Mesh
from jarviscore.profiles import AutoAgent

class CalculatorAgent(AutoAgent):
    role = "calculator"
    capabilities = ["math"]
    system_prompt = "You are a math expert. Store result in 'result'."

mesh = Mesh()
mesh.add(CalculatorAgent)
await mesh.start()

results = await mesh.workflow("calc", [
    {"agent": "calculator", "task": "Calculate factorial of 10"}
])
print(results[0]["output"])  # 3628800

CustomAgent (Workflow Mode)

from jarviscore import Mesh
from jarviscore.profiles import CustomAgent

class ProcessorAgent(CustomAgent):
    role = "processor"
    capabilities = ["processing"]

    async def execute_task(self, task):
        data = task.get("params", {}).get("data", [])
        return {"status": "success", "output": [x * 2 for x in data]}

mesh = Mesh(config={"p2p_enabled": True, "bind_port": 7950, "redis_url": "redis://localhost:6379/0"})
mesh.add(ProcessorAgent)
await mesh.start()

results = await mesh.workflow("demo", [
    {"agent": "processor", "task": "Process", "params": {"data": [1, 2, 3]}}
])
print(results[0]["output"])  # [2, 4, 6]

Infrastructure Stack

Every agent receives the full infrastructure stack automatically — no wiring required.

Feature Injected as Enabled by
Blob storage self._blob_storage STORAGE_BACKEND=local (default)
Context distillation TruthContext, ContextManager automatic
Telemetry / tracing TraceManager automatic (PROMETHEUS_ENABLED for metrics)
Mailbox messaging self.mailbox REDIS_URL
Function registry self.code_registry automatic (AutoAgent)
Kernel OODA loop Kernel (AutoAgent internals) automatic (AutoAgent)
Distributed workflow WorkflowEngine REDIS_URL
Nexus OSS auth self._auth_manager requires_auth=True + NEXUS_GATEWAY_URL
Unified memory UnifiedMemory, EpisodicLedger, LTM REDIS_URL
Auto-injection all of the above automatic
class MyAgent(CustomAgent):
    requires_auth = True   # → self._auth_manager injected

    async def setup(self):
        await super().setup()
        # All infrastructure already injected — no __init__ wiring needed
        self.memory = UnifiedMemory(
            workflow_id="my-workflow", step_id="step-1",
            agent_id=self.role,
            redis_store=self._redis_store,
            blob_storage=self._blob_storage,
        )

    async def execute_task(self, task):
        # Save artifact
        await self._blob_storage.save("results/output.json", json.dumps(result))

        # Notify another agent
        self.mailbox.send(other_agent_id, {"event": "done", "workflow": "my-workflow"})

        # Log to episodic ledger
        await self.memory.episodic.append({"event": "step_complete", "ts": time.time()})

        return {"status": "success", "output": result}

Production Examples

All examples require Redis (docker compose -f docker-compose.infra.yml up -d).

Example Mode Profile
Financial Pipeline autonomous AutoAgent
Research Network (4 nodes) distributed AutoAgent
Support Swarm p2p CustomAgent
Content Pipeline distributed CustomAgent
Investment Committee autonomous AutoAgent + CustomAgent
# Financial pipeline (single process)
python examples/financial_pipeline.py

# 4-node distributed research network
python examples/research_synthesizer.py &  # Start seed first (port 7949)
python examples/research_node_1.py &       # port 7946
python examples/research_node_2.py &       # port 7947
python examples/research_node_3.py &       # port 7948

# Customer support swarm (P2P + optional Nexus OSS auth)
python examples/support_swarm.py

# Content pipeline with LTM (sequential, single process)
python examples/content_pipeline.py

# Investment Committee: 7-agent workflow with web dashboard
cd examples/investment_committee
python committee.py --mode full --ticker NVDA --amount 1500000
# or: python dashboard.py  (web UI on http://localhost:8004)

Profiles

Profile You Write JarvisCore Handles
AutoAgent System prompt (3 attributes) Agent-generated function tools, Kernel OODA loop, sandboxed execution, repair, function registry
CustomAgent on_peer_request() and/or execute_task() Mesh, discovery, routing, lifecycle, full infrastructure stack

Execution Modes

Mode Use Case
autonomous Single machine, agent-generated function tools (AutoAgent)
p2p Agent-to-agent communication, swarms (CustomAgent)
distributed Multi-node workflows + P2P + Redis crash recovery

Integrations

JarvisCore is async-first. Best experience with async frameworks.

Framework Integration
FastAPI JarvisLifespan — 3-line setup via jarviscore.integrations.fastapi
aiohttp, Quart, Tornado Manual lifecycle (see docs)
Flask, Django Background thread pattern (see docs)
from fastapi import FastAPI
from jarviscore.profiles import CustomAgent
from jarviscore.integrations.fastapi import JarvisLifespan

class ProcessorAgent(CustomAgent):
    role = "processor"
    capabilities = ["processing"]

    async def on_peer_request(self, msg):
        return {"result": msg.data.get("task", "").upper()}

app = FastAPI(lifespan=JarvisLifespan(ProcessorAgent()))

Documentation

https://jarviscore.developers.prescottdata.io/

Guide Description
Getting Started 5-minute quickstart
AutoAgent Agent profiles, Kernel, distributed research network
CustomAgent CustomAgent patterns, infrastructure stack, production walkthroughs
Guides Workflows, memory, auth, HITL, Nexus, testing, and more
API Reference Detailed API docs for all infrastructure classes
Configuration Settings reference and environment variable guide
Troubleshooting Common issues and diagnostics
Changelog Full release history

Docs are also bundled with the package:

python -c "import jarviscore; print(jarviscore.__path__[0] + '/docs')"

Version

1.0.3

License

Apache 2.0 — see LICENSE for details.

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

jarviscore_framework-1.0.3.tar.gz (951.7 kB view details)

Uploaded Source

Built Distribution

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

jarviscore_framework-1.0.3-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file jarviscore_framework-1.0.3.tar.gz.

File metadata

  • Download URL: jarviscore_framework-1.0.3.tar.gz
  • Upload date:
  • Size: 951.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for jarviscore_framework-1.0.3.tar.gz
Algorithm Hash digest
SHA256 1746ddddf3abb620a011f22cb87cffcd4fcaecf45773f8f9f8442796d84d6221
MD5 b18b35f5aa70ee9998d1f4fb658eb533
BLAKE2b-256 65910e0d490b5cd1a6376db04ef45943387e279b90b69c88c14637485c0e4972

See more details on using hashes here.

File details

Details for the file jarviscore_framework-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for jarviscore_framework-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2f2e38e93be267ad5faa8a562c0ac601983c359faa6be4a2b8fbead0ec4841c6
MD5 644b65236a0ee8d41fe91c9a0d185292
BLAKE2b-256 28f5b6d099eb53ee66f12237c0fbf853354d555377442d50bdcaf11d8116eb44

See more details on using hashes here.

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