Catalog PyPI
Back to packageRELEASE DETAILS

1.1.0

PyPI

aimmh-lib

Async multi-model conversation orchestration (fan_out, daisy_chain, room_all, room_synthesized, council, roleplay, MultiModelHub, ModelInstance)

aiasyncconversationllmmulti-modelorchestration
Published21 Apr 2026
Direct dependencies5
Transitive dependenciesNot calculated

README

Version 1.1.0 documentation

Emergent — Multi-Model AI Hub

Live App PyPI License: Apache 2.0

Chat with GPT, Claude, Gemini, Grok, DeepSeek, and Perplexity in parallel. Compare, synthesize, and chain their responses — all in one interface.


Try it live

emergentapp.interdependentway.org

TierPriceWhat you get
Free$05 instances, 10 runs/month, basic responses and chat
Supporter$5/month15 instances, 30 runs/month, removes "Made with Emergent" badge, Hall of Makers eligibility, early feature voting, private thank-you channel
Coffee$5 one-timeSupporter perks + Hall of Makers eligibility
Builder$25 one-timeSupporter perks + Hall of Makers eligibility (Builder tier)
Patron$50 one-timeSupporter perks + Hall of Makers eligibility (Patron tier)
Pro$19/month or $149/yearUnlimited instances & runs, advanced synthesis, priority support, all supporter perks
Team$49/month (3 seats)Unlimited instances & runs, shared workspace, admin controls, all supporter perks
Team extra seat$15/monthAdds 1 extra seat to an existing Team plan

What is this?

Emergent is a multi-model AI hub that lets you send one prompt to multiple LLMs simultaneously and work with their responses together. Instead of copy-pasting between chat tabs, you get a single interface with color-coded, side-by-side or stacked responses from every model you care about.

Beyond simple fan-out, Emergent supports structured interaction patterns — synthesis (feed multiple responses into one model for analysis), shared rooms (models that see and respond to each other), daisy chains (A→B→C sequential pipelines), council mode, and roleplay scenarios. The EDCM engine analyzes conversation transcripts across six cognitive metrics and surfaces actionable insights.


Interaction Patterns

PatternWhat it does
Fan-outSend one prompt to N models in parallel
SynthesisSelect responses, send to a synthesis model for analysis
Shared Room (All)All models see each other's responses and reply in rounds
Shared Room (Synthesized)Responses synthesized first, then drive the next round
Daisy ChainModel A → B → C sequentially, each seeing the previous response
CouncilEach model synthesizes all responses including its own
RoleplayDM-driven roleplay with initiative ordering and reactions

Self-hosting

Backend (FastAPI + MongoDB)

cd backend
pip install -r requirements.txt

# Required env vars
export MONGO_URI="mongodb://localhost:27017"
export JWT_SECRET="your-secret"
export STRIPE_SECRET_KEY="sk_..."        # optional: for payments
export STRIPE_WEBHOOK_SECRET="whsec_..." # optional: for webhooks

uvicorn server:app --reload

Frontend (React)

cd frontend
npm install
npm start

The frontend expects the backend at http://localhost:8000 by default.


aimmh-lib — the open-source core

The orchestration patterns are extracted into a standalone, zero-dependency Python library.

pip install aimmh-lib

Functional API

import asyncio
from aimmh_lib import fan_out

async def call_model(model_id: str, messages: list[dict]) -> str:
    # plug in any model backend here
    return f"Response from {model_id}"

async def main():
    results = await fan_out(
        call_fn=call_model,
        model_ids=["gpt-4o", "claude-sonnet-4-6", "gemini-2.0-flash"],
        messages=[{"role": "user", "content": "What is the best programming language?"}],
    )
    for r in results:
        print(f"{r.model_id}: {r.content}")

asyncio.run(main())

Instantiation API

Bind a backend once and call any pattern as a method:

from aimmh_lib import MultiModelHub

hub = MultiModelHub(call_model)

results = await hub.fan_out(["gpt-4o", "claude-sonnet-4-6"], messages)
results = await hub.daisy_chain(["gpt-4o", "claude-sonnet-4-6", "gemini-2.0-flash"], "Explain gravity")
results = await hub.council(["gpt-4o", "claude-sonnet-4-6"], "What is consciousness?")

Stateful single-model conversations

from aimmh_lib import ModelInstance

gpt = ModelInstance(call_model, "gpt-4o", system_context="You are a Socratic tutor.")
r1 = await gpt.send("What is entropy?")
r2 = await gpt.send("Give me an example.")  # history carries over automatically
print(gpt.history)
gpt.clear()  # reset to fresh state

All six patterns available: fan_out, daisy_chain, room_all, room_synthesized, council, roleplay.

PyPI →


Tech Stack

Backend: FastAPI · Motor (async MongoDB) · asyncio · Stripe · Google OAuth · JWT

Frontend: React · Tailwind CSS · Shadcn UI · React Router

Library: Pure Python 3.11+ · zero runtime dependencies


Repository Structure

aimmh_lib/   # pip install aimmh-lib — zero-dep async orchestration library
backend/     # FastAPI service (auth, multi-model chat, payments, EDCM)
frontend/    # React UI

License

aimmh_lib/ is licensed under the Apache License 2.0. The backend and frontend are proprietary — you may self-host for personal use but may not offer them as a competing hosted service.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 5

Native requirements
5 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
emergentintegrations
Environment
{
  "extras": "",
  "marker": "extra == \"backend\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
emergentintegrations; extra == "backend"runtime
fastapi
Environment
{
  "extras": "",
  "marker": "extra == \"backend\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
fastapi; extra == "backend"runtime
motor
Environment
{
  "extras": "",
  "marker": "extra == \"backend\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
motor; extra == "backend"runtime
build
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
build; extra == "dev"runtime
twine
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
twine; extra == "dev"runtime

Distribution files

2 collected
aimmh_lib-1.1.0-py3-none-any.whl

bdist_wheel · 13.13 KB · Python py3

Source file
aimmh_lib-1.1.0.tar.gz

sdist · 14.48 KB · Python source

Source file

Repository

PENDING
the-interdependency/aimmh

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 11:20 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:a06bffa4c7da3c33d834fd673a3451f33b42ce7ef1318ef835ab2b25bb7e9fc5

Other collected versions

View all collected versions →