Skip to main content

JarvisCore

Describe an agent in a few lines of Python. It reads the web, runs code, works a browser,
remembers what it was told, and picks up where it left off after kill -9.

PyPI Python Docs Discord License

The JarvisCore Desk running a three-agent research mesh: the request is typed, the Scout searches the web and reads official docs, the Analyst compares the options and hands its comparison to the Writer, and the Writer delivers a decision brief with source links as a document.

Three agents on one mesh, live in the JarvisCore Desk: a scout reads official docs on the live web, an analyst compares, a writer delivers the brief with its sources.
A real run, idle time trimmed (MP4). The Desk ships with JarvisCore Agents, opening soon; the team is 30 lines of Python.

class Scout(AutoAgent):
    role = "scout"
    capabilities = ["web_research"]
    default_kernel_role = "researcher"
    system_prompt = "You find primary sources on the live web, read them, and cite every fact."

class Analyst(AutoAgent):
    role = "analyst"
    capabilities = ["analysis"]
    default_kernel_role = "communicator"
    system_prompt = "You compare options strictly on the evidence."

class Writer(AutoAgent):
    role = "writer"
    capabilities = ["writing"]
    default_kernel_role = "communicator"
    system_prompt = "You write short, decisive briefs for engineering leads, citing sources."

results = await mesh.workflow("vector-db-brief", [
    {"agent": "scout",   "task": "Gather the facts this request turns on, from official docs: ..."},
    {"agent": "analyst", "task": "Compare the options on the scout's evidence.", "depends_on": [0]},
    {"agent": "writer",  "task": "Write a decision brief of at most eight lines.", "depends_on": [1]},
])

JarvisCore is a Python runtime for agents that do work, not just talk. You give an agent a role and a prompt; the runtime gives it tools, a loop that checks itself, memory, credentials and durable state, and hands you back an answer you can verify.

  • Agents act. Every turn is one real tool call: search and read the web, run Python in a sandbox, drive a browser, draft and deliver.
  • Answers come with their evidence. You get the answer, the data behind it, what each tool actually saw, and an honest status: an agent that could not finish says so, and why.
  • Work survives. Finished steps survive a crash, agents remember across runs, credentials never enter a prompt, and a person approves anything irreversible.

What people build with it

Read a whole website

One goal_oriented agent opens the catalogue, walks every page, computes the figures with code and saves a report: 32 books, 2 pages, every figure correct. browse_a_whole_site.py · real time 1m 56s · needs jarviscore-framework[browser] and BROWSER_ENABLED=true.

Watch it run in a terminal browse_a_whole_site.py: an agent collects all 32 books in the Mystery category of books.toscrape.com across both pages, reports the count per rating, the average price of £31.72 and the three most expensive books, and saves mystery_report.md.

Compute, never estimate

Revenue and quarter-on-quarter growth for four regions from a 400-row CSV, computed by code the agent writes and runs in a sandbox. Every figure matches a hand-written check. analyst_that_computes.py · real time 54s.

Watch it run in a terminal analyst_that_computes.py: an agent reads a 400-row sales CSV, writes and runs Python, and reports exact revenue per region and Q1 to Q2 growth, with South growing most at 28.64%.

Remember across runs

Tell it once. A new process, given nothing, still knows. Kept facts live in .jarviscore/memory/, with nothing to install; point it at Athena for semantic memory shared across machines. agent_that_remembers.py.

Watch it run in a terminal agent_that_remembers.py run twice: the first run is told Acme renews on 3 March 2027 with Jane Mwangi as contact; a second process, given nothing, answers with the date and the contact; the fact is shown on disk in .jarviscore/memory/account_manager.jsonl.

Survive kill -9

Kill the process mid-workflow and run the same command again: finished steps come back from Redis, and only the unfinished work runs. survives_a_crash.py · needs REDIS_URL.

Watch it run in a terminal survives_a_crash.py: a two-step workflow is started, the process is killed with kill -9 once step 1 is saved, and the same command in a new process recovers step 1 from Redis without re-running it and finishes step 2.
More, end to end
Demo What it shows
Research team, in a terminal The same kind of team without the Desk: a scout and an analyst, one workflow, a cited brief. Recording.
Investment committee Seven agents deliberate a $1.5M position on live market data; the process is killed mid-deliberation and finishes without re-running the analysts. Recording.
Four-process research mesh Four agents in four processes find each other over SWIM, claim steps from a shared ledger, and deliver to Slack through the credential vault. Reproduce with examples/demo_synthesizer.py and demo_node_1/2/3.py.
Launch film The story of JarvisCore Agents, in four minutes.

How it works

Blueprint of one agent turn: the model at the centre, an orbit of five numbered stations around it (1 context in, 2 act, 3 record, 4 approve, 5 done or not), an outer runtime ring that wraps every call, the answer leaving station 5 as result_summary with output, evidence and status, and beside it a wireframe globe of agents that find each other by capability.

An agent's work is a loop around the model, and everything outside the model is the runtime's job, not the prompt's:

  1. Context in. The system prompt, the agent's own working notes (never dropped, even when the context is full) and facts recalled from earlier runs.
  2. Act. One real tool call per turn, in the role the task needs: researcher, coder, browser or communicator. Credentials are placed at the call by Nexus, and only for agents that declare requires_auth = True.
  3. Record. Every call and its result are kept, so the answer can cite them and you can check them.
  4. Approve. An action marked irreversible waits for a person, then runs once.
  5. Done, or not. The agent finishes with complete=True, or says what stopped it.

Agents find each other on the mesh by capability, one agent can run as a pool of workers, and every workflow step is saved in Redis as it finishes.

Start in two minutes

pip install jarviscore-framework

Add one model key to .env (AZURE_API_KEY, CLAUDE_API_KEY, GEMINI_API_KEY or LLM_ENDPOINT), check it with jarviscore check --validate-llm, and run:

import asyncio
from jarviscore import AutoAgent, Mesh


class Researcher(AutoAgent):
    role = "researcher"
    capabilities = ["research"]
    system_prompt = "You find primary sources, read them, and cite every fact."


async def main():
    mesh = Mesh()
    mesh.add(Researcher)
    await mesh.start()
    result = await mesh.run_task(
        agent="researcher",
        task="What changed in the EU AI Act's final text for open-source models?",
    )
    print(result["result_summary"])  # the answer
    print(result["evidence"])        # what the tools actually saw
    await mesh.stop()

asyncio.run(main())

No database, no broker, no Docker. Add what you need as you go:

Install Adds
jarviscore-framework[browser] then playwright install chromium A browser agent that reads whole sites and fills forms
jarviscore-framework[redis] with REDIS_URL Durable workflows, crash recovery, several processes sharing work
jarviscore-framework[p2p] Agents on several machines finding each other over SWIM
jarviscore-framework[rag] Local vector search over your documents
jarviscore-framework[full] Everything

Prefer to write the logic yourself? A CustomAgent is plain Python in execute_task(), on the same mesh as everything else.

What you can count on

Promise What the runtime does
An honest status An agent that could not do the task returns failure with its own reason, never a success with empty figures.
Evidence you can check result["evidence"] holds each cited tool's input and output. A receipt the agent did not earn is refused.
Work that survives Finished workflow steps are recovered from Redis after a crash, not re-run and not re-billed. Long steps continue across execution epochs.
Memory that lasts Facts an agent keeps are recalled in later runs, keyed to its role, and kept apart per tenant with memory_scope_field.
Credentials out of reach Tokens are placed at the call by Nexus, only for agents that declare requires_auth. They never appear in prompts, generated code or traces.
A person in the loop Irreversible actions wait for an approval through Mesh.resolve_hitl(), then run exactly once.
Scale without rewrites Pool(max=8) turns one agent into several workers, and every model call is paced to the provider's real limits. Verifying 196 claims took 9.4 minutes with pools, against 202 with fixed workers.
Integrations without wiring Typed atoms for CRMs, payments, messaging, storage and more, with auth injected at runtime. See what your installed version ships with jarviscore atom list.

Go further

Guide What it covers
Getting started Install, first agent, first multi-agent workflow
AutoAgent · CustomAgent The two ways to write an agent
Workflows · Goals Steps you know in advance, and goals that plan their own
Browser · People in the loop Reading and acting on real sites, with approvals
Memory · Nexus What agents keep, and how they reach your accounts
Production · Configuration Pools, pacing, Redis, sandboxes and every setting
Changelog What changed, release by release

Community

Every other week we debug real agents live in office hours on Discord. If JarvisCore saves you time, a ⭐ helps other developers find it.

License

Apache 2.0. See LICENSE. You can build and sell products with it; there is no revenue or user threshold that requires a commercial agreement. Separately licensed enterprise modules have their own terms; see JarvisCore Enterprise.

Building with JarvisCore? An optional Built with JarvisCore credit on your About page or docs is appreciated; the trademark policy applies.

Metadata

Release files for jarviscore-framework 2.2.0

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

Source distribution (sdist)

Source distribution for jarviscore-framework 2.2.0
File Size Uploaded Provenance
jarviscore_framework-2.2.0.tar.gz 1.4 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for jarviscore-framework 2.2.0
File Interpreter ABI Platform
jarviscore_framework-2.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 4.2 MB

Release files / jarviscore_framework-2.2.0.tar.gz

Download URL jarviscore_framework-2.2.0.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
974664f50ff4af40b2f9e239d65a67d22a5ca24ee963515a7ece7444c64c8c6a
BLAKE2b-256 checksum
How to use checksums
65ab82dce58e27b9012aff4b9be27e0067ca4975e3577cbe00ae3c7f62d4401d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 22, 2026.

Transparency log

Release files / jarviscore_framework-2.2.0-py3-none-any.whl

Download URL jarviscore_framework-2.2.0-py3-none-any.whl
Size 2.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
9e50cb538905052ae6222897a8f328c6ff4777046bad56fbf363507a12f6ad18
BLAKE2b-256 checksum
How to use checksums
b69b7a4b36c78ab841853a253341de71c05cb7ca24f3f902cfc59f275a74b1da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 22, 2026.

Transparency log

Security for jarviscore-framework 2.2.0

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 jarviscore_framework-2.2.0.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 22, 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.

Release history Release notifications | RSS feed

This release

2.2.0 This release

2 release files Full provenance

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