← Back to main site

Applied project

Asterism

Many agents. One runtime. Separate lives.

Status
v0.1.0 — Phase 0; five packages on npm
License
Apache 2.0
Repository
github.com/qmilab/asterism
Documentation
qmilab.com/asterism/docs

Asterism is a local-first runtime for running many distinct AI agents from one install. You create separate agents for work, clients, side projects, and experiments — each with its own soul, memory, secrets, skills, workspace, event log, and autonomy level. Agents run alone by default. When they collaborate, they do it through explicit connections — never shared memory or shared credentials.

$ bunx @qmilab/asterism init

The name is the idea. The stars in an asterism aren't bound to each other; they can sit light-years apart and only form a pattern from where you're standing. That's the model: agents that are genuinely separate, organized and navigated as one grouping from a single runtime.

Unlike multi-agent orchestration frameworks — which coordinate agents to finish a task and share context freely — Asterism starts with identity and boundaries. Collaboration is a later, explicit, permissioned connection, not the default and never implicit shared state.


The problem

Today's agent runtimes are powerful, but they're naturally centered on one long-lived agent identity at a time. The moment you want several distinct agents, you end up duplicating runtimes, configs, workspaces — sometimes whole VMs — just to keep their memory, secrets, and credentials apart. You're doing systems administration instead of building.

Asterism makes a distinct agent a first-class thing you create in one command. Each agent is its own body — its own soul, memory, secrets, workspace, and autonomy — and nothing crosses between them unless you say so. A soul is nothing exotic: a small persona file defining an agent's voice, values, and operating style.


What Asterism guarantees

Five claims, each proven end to end by an automated acceptance test:

  • Memory stays home. One agent's memory never appears in another's — the boundary holds the moment the agents exist.
  • Secrets stay home. A credential added to one agent is unreadable from every other agent.
  • Autonomy is dialable. propose hands you a plan and executes nothing; notify and autonomous act on their own, with everything surfaced for review.
  • Destructive actions always pause. Even a fully autonomous agent stops for explicit confirmation before anything destructive — deleting files, force-pushing, spending money.
  • Memory is reviewable. Every memory an agent forms is typed, scoped to that agent, and yours to approve; nothing is written silently.

See them demonstrated step by step in the five-claims walkthrough, and what "separate" precisely means today in Concepts.


Quickstart

bunx @qmilab/asterism init # create two agents with distinct souls and autonomy asterism new writer --soul casual-helper --trust autonomous asterism new client --soul careful-consultant --trust propose # scoped secrets and skills — never shared across agents asterism secrets add client GITHUB_TOKEN # a skill is just a markdown file you write echo "# Blog style: sentence-case headings, active voice" > blog-style.md asterism skill add writer blog-style.md # run them (needs a configured model — see Installation) asterism run writer "tighten the draft in posts/launch.md" asterism run client "summarize the meeting and tidy the notes folder" # inspect what each one knows and did asterism memory inspect writer asterism events tail client

writer's memory never appears in client, and client's GITHUB_TOKEN can't be read from writer — those boundaries hold the moment the agents exist. The autonomy you set governs the rest: propose hands you a plan, notify and autonomous act on their own, and at every level an agent pauses for confirmation before anything destructive.

The gate acts on an agent's tools. The shipped CLI registers a default catalog of workspace-scoped file tools — read_file, write_file, delete_file — behind it, so with a configured model an ordinary edit runs under autonomous while a deletion pauses regardless of trust level. The memory and secret boundaries, by contrast, you can see from a fresh install — and all five claims are verified end to end by the acceptance test.

Installation covers setup and model configuration; the command reference covers every command and option, including the local HTTP endpoint.


Continuous, reviewable learning

$ asterism reflect writer --review Proposed memory writes: [convention] This blog uses sentence case in headings. confidence 0.86 [procedural] Run a spell pass before saving. confidence 0.78 [negative] Don't rewrite quotes inside blockquotes. confidence 0.91 Accept? edit? reject?

Each agent grows with use — but on its own track, inside its own boundary. Every memory it forms is typed, scoped to that agent, and yours to approve; nothing is written silently. Continuity, but plural: many agents growing separately, not one assistant growing around you. (The proposals above are illustrative — reflection is model-generated, so the exact memories and confidence scores differ each run.)


Status

Phase 0 (Core), v0.1.0 on npm — local CLI and HTTP endpoint, per-agent scoping of memory, secrets, skills, and workspace, souls and roles, trust profiles with the destructive-action gate, and reviewable memory. Richer cognition, collaboration, and stronger execution isolation come in later phases — the Concepts page is precise about which boundaries exist today.


Pairs with Lodestar

A lodestar is the single star you steer by. An asterism is the grouping you navigate within. Asterism runs your agents and keeps them apart; Lodestar is the layer that makes each one trustworthy — what it knows, believes, and is allowed to do.


Engaging with the project

The repository is open: github.com/qmilab/asterism. Apache 2.0. Install with bunx @qmilab/asterism init, or clone and run the acceptance test that proves the five claims.

The documentation covers installation, the core concepts, the full command reference, and the five-claims walkthrough of two agents living side by side without leaking into each other.

Contributions are welcome through the repository. Found a way for one agent to reach another's memory, secrets, or skills? Please report it privately first — see the repository's security policy.

For research collaborations, lab affiliations, or commercial inquiries, contact the lab through qmilab.com.