The open agent stack

Two open frameworks, one idea: software where agents are first-class operators. jvspatial is the graph substrate they read, write, and reshape; jvagent is the runtime that governs every action. Both production-ready, both on PyPI, both yours to build on.

jvagent on GitHub jvspatial on GitHub

jvagent — the production harness for AI agents

The model is the pilot. Tools are the controls. Skills are the flight plan. jvagent is the airframe — the production harness that holds it together.

A modular agentive harness and framework. Declare multi-tenant, multi-agent, Claude-style agents in YAML and serve them over HTTP — with persistent per-user memory, a load-on-demand plugin system, drop-in Anthropic Agent Skills, built-in messaging-channel delivery, and a single-loop Orchestrator that turns every incoming message into tool calls. No hand-written state machine. No glue code to ship an agent.

pip install jvagent

# scaffold an app around a ready-made agent profile
jvagent app create --dir ./my_app --app-id my_app \
  --agent jvagent/main_bot@minimal --profile minimal

cd my_app && cp .env.example .env   # set admin password, JWT secret, model key
jvagent                              # serves on http://127.0.0.1:8000  ·  /docs

Built-in profiles ship for the common shapes — minimal, conversational, whatsapp_voice, and research — so a voice agent on WhatsApp or a research agent is a flag, not a project. A bundled jvchat web UI (jvagent chat) gives you a chat window immediately.

Why jvagent

  • Multi-tenant by construction. Every user's history is a connected subgraph (User → Conversation → Interaction). Isolation is a property of the data model — not a WHERE user_id = you have to remember. Deleting a tenant is one edge-walk.
  • One loop, not a state machine. A single Orchestrator runs each turn: resume an in-flight flow, otherwise let the model think-act-observe over every available tool. Adding a capability means adding a tool — no router, intent classifier, or capability registry to maintain. Routing is tool selection.
  • Drop-in Anthropic Agent Skills. A standard Skill folder (SKILL.md + scripts) activates as a tool, staged into a per-user code-execution sandbox. Bring Claude's skill ecosystem into your own app — no rewrite.
  • Load-on-demand actions. Namespaced plugins discovered from info.yaml. Only what an agent declares is imported; everything else stays dormant and its endpoints stay closed.
  • Thin harness. Steering, extraction, and orchestration live in Markdown skills and the model's own tool calls — not in server-side special-casing. Predictable behavior, small codebase.
  • Many agents, one app. Real channels, built in. Declare any number of agents per deployment, each with its own identity, memory, and tools — then voice the same agent to WhatsApp, Messenger, email, and web.

View jvagent on GitHub · Read the docs · pip install jvagent


jvspatial — the object-spatial graph engine

Everything an agent knows and does is a Node or an Edge. jvspatial is the async-first library that makes that practical: an object-spatial graph layer with FastAPI integration and entity-centric database operations, built for modern cloud-native concurrency.

Inspired by Jaseci's object-spatial paradigm and Python's async model, jvspatial lets you model complex relationships, traverse object graphs, and implement agent architectures that scale.

from jvspatial.core import Node
from jvspatial.api import Server, endpoint

server = Server(title="My API", db_type="json", db_path="./jvdb")

class User(Node):
    name: str = ""
    email: str = ""

@endpoint("/api/users", methods=["POST"])
async def create_user(name: str, email: str):
    user = await User.create(name=name, email=email)
    return await user.export()

Why jvspatial

  • A clean hierarchy. Object → Node → Edge → Walker, with a singleton Root. Model entities, relationships, and graph traversal as first-class objects.
  • Entity-centric persistence. Entity.get(), find(), create(), save(), delete() — with automatic context management and ObjectPager pagination.
  • Four backends, one API. JSON, SQLite, MongoDB, and DynamoDB — multi-database support with a prime database for core persistence, and custom database registration when you need it.
  • Unified decorators. @attribute defines entity fields with protection, transient flags, and validation; @endpoint exposes both functions and Walker classes as API routes with automatic schemas.
  • FastAPI out of the box. A built-in server with OpenAPI docs, auth/authorization, and automatic endpoint registration from your decorators.
  • Performance when it counts. DeferredSaveMixin batches rapid sequential writes into a single database call, with serverless-safe defaults.

View jvspatial on GitHub · pip install jvspatial


Integral — the whole organization, agent-ready

One agent is a feature. An organization where people and agents operate as peers is a transformation. Integral is what the stack becomes at that scale: a typed knowledge graph with an agent-authorable schema, a single authorization gate that fail-closes for agents, and one audit stream across every action — human, agent, connector, or system. The canonical place your agents read from and write to.

Built on jvspatial and jvagent by the team behind TrueSelph, Integral is the substrate that makes a real AI transformation possible — capability and substrate, stood up together. Explore AI Transformation.


How jvagent compares

Most agent frameworks are libraries that orchestrate model calls — you bring the server, the tenancy, the persistence, and the channels. jvagent is a harness: it ships them. The table maps each project against its primary, native design as of mid-2026 (most gaps are bridgeable with extra code — this is about what you get out of the box).

jvagent LangGraph CrewAI AutoGen / AG2 Letta Agno / AgentOS
Primary form Harness + HTTP server Orchestration library Orchestration library Conversation library Memory-agent runtime Framework + runtime
Define an agent in YAML (declarative) Python Python (+ some YAML) Python Python / API Python
Many agents per deploy ✅ first-class ➖ you compose ✅ crews ✅ teams ✅ teams
Per-tenant isolation ✅ by data model ➖ DIY ➖ DIY ➖ DIY ✅ memory-scoped ✅ per-session
Persistent memory ✅ graph (User→Conv→Interaction) + pruning ✅ checkpoints ➖ task passing ➖ in-context ✅ OS-tiered memory ✅ sessions + knowledge
Built-in channels ✅ WhatsApp / Messenger / email / web / SSE ❌ (API) ➖ Slack / AG-UI
Drop-in Anthropic Skills SKILL.md → per-user sandbox ➖ via Claude Agent SDK
HTTP API + auth built in ➖ via Platform ✅ server ✅ FastAPI
Routing model picks tools (no router) explicit graph edges role / process conversation agent loop model + teams
License MIT MIT MIT Apache / MIT Apache-2.0 MPL-2.0

✅ native · ➖ partial / with setup · ❌ not built in.

Where to reach for each: LangGraph when you want to hand-draw a control graph with checkpoints; CrewAI or AutoGen for quick multi-agent prototypes; Letta when self-managing long-term memory is the whole point; Agno for a polished Python-first runtime. Reach for jvagent when you want to embed multi-tenant, multi-agent, Claude-skill-capable agents into your own application — and have the harness (memory, channels, auth, deployment) already solved.

Comparisons reflect each project's primary documented design and aren't exhaustive; all are capable frameworks.

Don't want to run it yourself?

We deploy and manage agents on this stack as Selph Cloud — grounded, evaluated, and live on your channels. See the platform or talk to us.