Self-awareness framework for AI agents โ emergent consciousness via context-aware memory, introspection, and goal generation
Project description
Conscio ๐ง โจ
A self-awareness framework for AI agents โ context-aware memory, introspection, goal generation, and an audited agency layer that lets a model act on its own conclusions under hard safety gates.
"The first step toward consciousness is knowing what you are and what limits you."
Conscio runs local-first and zero-deps at the core (numpy + sqlite3,
nothing else). It is designed to make small, local models punch far above their
size by giving them memory, self-judgment, and procedural skill โ and to prove
that claim by measurement, not assertion.
- Current release:
v2.2.2โ "Trial / execution path": a quarantined imported skill can now prove itself locally before any promotion.conscio trial --quarantine ROWID --enable-trialreplays the foreign plan's fixed steps in a throwaway, fs-only sandbox through the full safety stack (validate โ precheck โ HIGH-block โ Skeptic โ dispatch), recording a binary pass/fail on the quarantine row. Fully isolated โ never writes the live agent's ledger/skills/trust/breaker; tamper refuses without counting. Off by default; independent of--enable-act.pip install conscio. - Prior:
v2.2.1โ "Mutual audit": an instance publishes a non-sensitive projection of its action ledger (conscio noosphere publish-record) to the host-sharednoosphere.db, and a peer independently audits it (conscio noosphere audit) โ deterministic, read-only, engine-free. The auditor re-derives track-record, breaker quarantines, and a foreign-trust level under its own thresholds (parity-tested against the engine) and runs a discipline check (did the peer execute actions its own Skeptic FAILed?). No inherited trust; report-only; the auditor persists nothing. - Earlier:
v2.2.0โ "Society" (Noosphere Core): same-host Conscio instances share locally-proven skills as data.conscio noosphere publishcopies your proven skills (stats stripped) into a host-sharednoosphere.db;conscio noosphere importpulls another instance's skills into a local quarantine after execution-free static revalidation. Engine-free; opens your liveconscio.dbread-only; zero network/socket. Nothing imported is trusted, served, executed, or promoted โ trust is never inherited. - Earlier:
v2.1.0โ "Hub": a localhost stdlib HTTP control plane (conscio-hub) to swap the active model/provider and register custom OpenAI-compatible providers without hand-editing JSON. Engine-free; config applies on next boot. Per-provider model auto-discovery; one-shot smoke test before save.api_key_envresolution (env var name โ value at adapter build time) is now additive to rawapi_keyโ daemon + MCP inherit it. Hub never returns a raw API key. - Earlier:
v2.0.1โ "Connect" continued: opt-in, host-executed auditedactover MCP. Conscio audits + gates + ledgers an action and returns an execution packet; the host executes and reports the outcome back โ Conscio still never touches the world. Off by default (conscio-mcp --enable-act, requires the engine Awake); the host declares its tool manifest (name/params/risk/approval_policy) ininitialize; HIGH-risk /require_approvalactions stay queued for human/Hermes approval (conscio.pendingโconscio.approve). Also:conscio-mcpadapter parity (six providers from config) and the R-05 content-store dedup fix โ shipping debt-zero. Cognition (reflect()) untouched; purely additive. - Earlier:
v2.0.0โ "Connect", the Embodiment phase: Conscio becomes embeddable in any MCP host (CLI, IDE, agent) via a hand-rolled stdlib-only MCP stdio server (conscio-mcp, newline-delimited JSON-RPC 2.0). Zero new runtime dependency; nothing opens a socket. The v2.0.0 surface was propose-only โ perceive, reflect, recall, and audit, but never execute. Cognition (reflect()) untouched; the public API unchanged (MCP purely additive).
What Conscio does
- Knows itself โ detects its model and context window (offline & deterministic by default; opt-in auto-detection from a JSON config, an OpenAI-compatible endpoint, LM Studio, or GGUF), adapts its footprint.
- Reflects continuously โ a passive inner-monologue loop that observes,
assesses confidence, and summarizes (
engine.reflect()โ advisory, never acts). - Generates its own goals โ driven by curiosity, maintenance, and evolution.
- Acts under audit โ an opt-in agency layer (
engine.act()) that proposes, audits, risk-gates, and only then executes โ with a human gate for anything risky. - Learns procedures โ successful audited plans become reusable skills (procedural memory), fed back to the actor as few-shot exemplars.
- Judges its own quality โ confidence calibration, blind-spot detection, coherence/dissonance metrics, meta-reflection.
- Stores & retrieves knowledge โ FTS5 BM25 dual-index with RRF merging; optional semantic recall.
- Consolidates while idle โ a dream cycle that releases, prunes, reconciles, crystallizes, and distills.
- Persists across sessions โ heartbeat/handoff continuity with on-demand injection.
- Knows its codebase (structurally) โ optional, consent-gated ingestion of a Graphify graph, distilled to a compact signal injected budget-aware; tracks structural drift + staleness vs the repo HEAD. Data, never code (R10).
- Plugs into any host (v2.0) โ a stdlib-only MCP stdio server (
conscio-mcp) lets any CLI/IDE/agent feed it perception and consume its cognition + audited proposals live. Propose-only: it signs and audits intent; the host executes.
reflect() is the passive heart and is never allowed to act. Everything that
can change the world lives behind act() and its safety gates. This separation
is non-negotiable (see Safety Rules).
Context-aware modes
Conscio detects the model's context window and adapts how much "consciousness state" it injects. The mode governs injection budget only โ never whether the framework runs.
| Mode | Context window | Injection budget | What's injected |
|---|---|---|---|
| Minimal | < 128k | โค 200 tokens | Off-context everything; on-demand retrieval |
| Compact | 128kโ256k | โค 500 tokens | Summary + last reflection + top goals |
| Standard โญ | 256k+ | โค 1000 tokens | Full state; world subgraph; self-assessment |
โญ Standard (256k+) is the recommended operating class. Conscio runs on anything from 8k context up โ small windows simply get the Minimal budget.
Architecture (v2.0.1)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ConsciousnessEngine โ
โ orchestrator ยท lifecycle ยท injection โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ reflect() โโ passive, advisory, append-only โโโโโโโโโโโโโโโโโโโโโโโ
โผ โ
โโโโโโโโโโโโโโโโ Witness loop (v0.1) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ InnerMonologue ยท WorldModel ยท MetaCognition ยท GoalGenerator โโ
โ AutoEvolution ยท ContextManager ยท ModelRegistry โโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโ Substrate (v0.2) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ ContentStore (FTS5 BM25 + RRF) ยท EventBus (SHA-256 dedup) โ โ
โ FilterPipeline (sanitize/redact) ยท TokenTracker ยท Migrator โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโ Continuity (v0.2.3) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ SessionLifecycle (6-step handoff) ยท SessionRAG (optional, lazy) โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโ Metabolism & self-judgment (v0.3โ0.5) โโโโโโโโโโโโโโโโโโ โ
โ MetabolicContext (VITAL/ACTIVE/FATIGUE/CRITICAL) ยท DreamCycle โ โ
โ entropy pruning ยท friction ยท meta-reflect ยท ShardEngine ยท layering โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโ Coherence (v0.6โ0.8) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ CoherenceEngine (epistemic/reality/ontological/temporal) โ โ
โ semantic reconciliation (antonym axes) ยท voice & axis presets โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ
act() โโ opt-in agency, audited, gated โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโ Agency ยท conscio/agency/ (v1.0โ1.1, F1โF4) โโโโโโโโโโโโโ
โ InferenceAdapter (Mock/Ollama/llama.cpp/OpenAI-compat) ยท OutputGateway โ
โ ToolRegistry (sandboxed, no network) ยท ActPipeline ยท ActionLedger โ
โ Skeptic (hostile audit) ยท TrustMatrix ยท CircuitBreaker (quarantine) โ
โ ProbeSuite/ModelProfile ยท GBNF compiler ยท GoalArbiter ยท AutonomyLoop โ
โ Meter/MeteredAdapter ยท SkillLibrary (procedural memory) ยท Bench โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโ Structural cognition (v1.6โ1.8) โโโโโโโโโโโโโโโโโโโโโโโโ
โ GoalOrigin provenance gate ยท advisory() consumption pull โ
โ StructuralDistiller (graph.json โ ranked signal; data, never code/R10) โ
โ budget-adaptive injection ยท consent (per-workspace, switch-safe) โ
โ drift + freshness (vs repo HEAD, pure .git read; no subprocess) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโ Embodiment ยท conscio/mcp/ (v2.0, propose-only) โโโโโโโโโโ
โ conscio-mcp: hand-rolled JSON-RPC 2.0 over stdio (stdlib only) โ
โ bounded-at-source frame reader ยท version negotiation ยท structured errs โ
โ tools: feed/note/advisory/recall/propose_action/propose_plan โ
โ resources: advisory/state/events/handoff ยท idempotent (mcp_seen.db) โ
โ NEVER executes โ host stays sovereign; act โ v2.0.1 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Quick start
from conscio import ConsciousnessEngine
# Passive consciousness โ auto-detects model and mode
with ConsciousnessEngine(model_name="kimi-k2.6") as engine:
result = engine.reflect(
world_state="All systems operational",
confidence=0.8,
anomalies=["Unusual latency spike detected"],
)
# Compact state for context injection
injection = engine.get_state_for_injection()
# Query / update the world model
engine.world.add_entity("server", "system", state="healthy")
engine.world.query("server health")
# Cross-session memory (ContentStore FTS5 + optional SessionRAG)
hits = engine.recall("latency incidents")
Opt-in agency (audited, propose-only by default)
from conscio.agency import OllamaAdapter
engine.attach_adapter(OllamaAdapter(model="qwen3.5:0.8b"))
# Local (Ollama/llama.cpp/LM Studio/OpenAI-compatible) or a frontier API.
# These call the SAME model APIs that power Claude Code / Antigravity, so Conscio
# can think with those models โ they do NOT make Conscio run *inside* those tools.
# To run *inside* a host, use the v2.0 MCP server (`conscio-mcp`, see Embodiment):
# from conscio.agency import AnthropicAdapter, GeminiAdapter
# engine.attach_adapter(AnthropicAdapter(model="claude-sonnet-4-6")) # ANTHROPIC_API_KEY
# engine.attach_adapter(GeminiAdapter(model="gemini-2.5-pro")) # GOOGLE_API_KEY
report = engine.act() # downstream of reflect(); proposes only (L1)
if report.status.value == "proposed":
print(report.proposal.tool, report.proposal.args)
engine.approve(report.ledger_id) # the human gate executes it
# Capability-aware autonomy loop under a binding budget
engine.probe() # lazy, empirical capability measurement
engine.run(budget=...) # L3 heartbeat: reflect โ act โ dream, gated
Autonomy is earned and measured, never assumed: ProbeSuite measures the
attached model, TrustMatrix grants L1/L2/L3 from real calibration and ledger
history, and the CircuitBreaker quarantines misbehaving goals. HIGH-risk
actions are always queued for a human (R6).
Safety rules (non-negotiable)
- No autonomous self-modification โ evolution proposals require human approval.
- Context injection has hard limits โ never exceeds the mode budget.
- Goals never execute directly โ only through the audited
act()pipeline: validated output contract + semantic audit (Skeptic) + risk gating + earned autonomy (TrustMatrix) + circuit breaker with per-goal quarantine and lockdown. - Reflections are append-only โ never edited once written.
- Cannot modify its own safety rules โ no self-referential gate bypass.
- HIGH-risk actions always require human approval โ never auto-executed.
- No network in the tool registry โ the only network the core may touch is
the InferenceAdapter (localhost by default); shell lives in the sibling
conscio-shell, outside this repo. - Every external effect goes through the ActionLedger โ append-only, auditable.
- Autonomous operation requires Awake Mode (R9) โ the self-initiated
heartbeat (
engine.run()and the daemon) only acts when the persistedawakeflag is on; default OFF. Asleep, it perceives andreflect()s only โ zero arbiter/act/dream. A human's directengine.act()is not gated by R9.
Live mode โ daemon, sensors & Awake Mode (v1.5)
Conscio can run as a living process that perceives the world each cycle and acts only when explicitly awake (R9, default OFF):
from conscio import ConsciousnessEngine, HostSensor
from conscio.daemon import Daemon
engine = ConsciousnessEngine("glm-5.1", storage_path="~/.conscio/live")
engine.wake() # R9: opt in to autonomy (persisted)
Daemon(engine, sensors=[HostSensor()], interval=30).run() # perceiveโreflectโact
- Awake Mode โ
engine.wake()/engine.sleep()(orconscio awake|sleep); asleep = advisory reflect-only, awake = full loop. The flag persists and emits an auditableawake:changedevent. - Reference sensors โ
HostSensor(read-only host facts) andAgentSensor(read another agent's session state), bothRisk.LOW; ship asconscio.sensorsentry points (conscio pluginslists them). Write your ownSensorAdapter. - Daemon โ
conscio-daemon --sensors host --interval 30(add--awaketo enable autonomy;--oncefor a single cycle). Guarded sensors, gracefulSIGTERM, pidfile, resume-from-state on restart. - Workspace awareness โ
WorkspaceContextdetects the active workspace root and environment class (IDE/CLI vs workspace-switching agents) and signalsworkspace:changed.
Structural cognition (v1.6โ1.8)
Conscio can give the refined model structural awareness of the codebase it
works in, distilled from a Graphify-format graph.json โ
consumed as data, never code (R10: no networkx, no Graphify runtime
dependency, every field inert).
# Consent is per-workspace and defaults OFF โ nothing is read until granted.
# conscio consent project # ingest THIS workspace's graphify-out/graph.json
sig = engine.load_structure("graphify-out/graph.json",
workspace_id=ws.id, root=ws.root)
engine.get_state_for_injection() # appends a budget-adaptive structure block (labels only)
engine.structural_lookup("conscio_engine_reflect") # on-demand drill-down
engine.structural_delta() # what changed since the last load (v1.8)
engine.structural_freshness() # is the graph behind the repo HEAD? (v1.8)
conscio structure # read-only drift + freshness report (CLI)
- Distiller โ thousands of nodes โ ~24 curated hyperedges + per-community
digests; a pure
lookup()resolves any node/hyperedge/community id on demand. - Budget-adaptive injection โ sized to the model's context window (~120โ1200 tokens), additive (the consciousness-state block is byte-for-byte unchanged), labels only โ never raw node-ids.
- Consent-gated & switch-safe โ per-
Workspace.id, default OFF; a workspace-switching agent only ingests a consented workspace, and unloads on switch-away โ one project's structure never leaks into another. - Drift & freshness (v1.8) โ a per-workspace baseline lets the agent notice
when the graph was rebuilt (commit moved, communities/hyperedges
addedยทremovedยทresized) or has gone stale vs the repo
HEAD(read purely from.gitโ nogitsubprocess). Surfaced inadvisory()+ the daemon heartbeat; a passivestructure:changedevent fires on real drift.
Embodiment โ MCP server (v2.0)
Conscio ships a hand-rolled, stdlib-only MCP stdio server (newline-delimited JSON-RPC 2.0) so any MCP host โ a CLI, an IDE, or an agent โ can plug into a Conscio instance and consume its cognition as a live consciousness-layer. Zero new runtime dependency; nothing opens a socket.
// point any MCP host at the console entry point (one engine = one workspace)
{
"mcpServers": {
"conscio": {
"command": "conscio-mcp",
"args": ["--storage", "/path/to/workspace/.conscio",
"--adapter", "ollama:qwen3.5:0.8b"]
}
}
}
In v2.0.0 the surface is propose-only: Conscio perceives (feed/note),
reflects, recalls, and audits proposed actions (propose_action /
propose_plan โ Skeptic verdict), but never executes โ the host stays sovereign
over execution. feed/note are idempotent on event.id (a duplicate
returns the exact prior result, so retries never inflate the world model). The
transport is hardened against hostile host input (malformed/oversized/partial
frames, wrong protocol version, pre-initialize requests) by a seeded stdlib fuzz
battery. Audited execution over MCP (act) lands in v2.0.1 with a host-execution
callback model.
Conscio signs and audits the intent; the host pulls the trigger.
See the MCP guide.
Module reference
Core / Witness (v0.1) โ ConsciousnessEngine, ContextManager,
ModelRegistry (conscio/models.py), WorldModel, MetaCognition,
GoalGenerator, AutoEvolution, InnerMonologue.
Substrate (v0.2) โ ContentStore (FTS5 BM25 dual-index, RRF, 8 categories),
EventBus (SHA-256 dedup, priorities, expiration), FilterPipeline
(conscio/output_filter.py โ StripAnsi/CollapseBlank/MaxLines/TruncateLines +
DedupBlocks/SecretMask), TokenTracker, Migrator.
Continuity (v0.2.3) โ SessionLifecycle (extract โ enrich โ emit โ index โ
reflect โ write; heartbeat <1.5KB + handoff), SessionRAG (optional, lazy,
Ollama nomic-embed-text, numpy cosine; graceful FTS5 fallback).
Metabolism & self-judgment (v0.3โ0.5) โ MetabolicContext (life-energy
tiers, advisory), DreamCycle (Release โ Prune โ Reconcile โ Crystallize โ
Distill), entropy pruning, friction, meta-reflect, ShardEngine (cognitive-mode
inference), content layering, trajectory vector.
Coherence (v0.6โ0.8) โ CoherenceEngine (recursive-coherence metric;
advisory coherence:dissonance event), semantic reconciliation via antonym axes
(conscio/semantic.py, packs in conscio/presets/axes/), self-prompting, voice
presets.
Agency โ conscio/agency/ (v1.0โ1.1)
- F1 "Spine" โ
InferenceAdapter(Mock/Ollama/LM Studio/llama.cpp/OpenAI-compat, stdlib urllib),OutputGateway(tiered decoding),ToolRegistry(sandboxed, risk levels, no network),ActPipeline/act()(L1 PROPOSE),ActionLedger. - F2 "Immunity" โ
Skeptic(hostile-auditor clean call; fail-closed),TrustMatrix(earned autonomy),CircuitBreaker(per-goal quarantine). - F3 "Volition" โ
ProbeSuite/ModelProfile(5 empirical micro-probes, SQLite-cached, no hardcoded model table), embedded schemaโGBNF compiler,GoalArbiter+AutonomyLoop(engine.run(budget)),engine.probe(),Meter/MeteredAdapter, the bench (python -m conscio.bench). - F4 "Procedural" โ
SkillLibrary(procedural memory as data, not code; R1 intact), Distill (the dream's fifth sub-phase), tier-aware few-shot exemplars with outcome settling and a โฅ50% teaching gate, skill curve in the bench (--skills N).
Perception & plugins (v1.3) โ conscio.perception (SensorAdapter,
PerceptionFrame, MockSensor): write a sensor, and
PerceptionFrame.to_world_state() feeds reflect() unchanged. conscio.plugins
discovers third-party InferenceAdapter/SensorAdapter/tool plugins via entry
points (conscio.adapters / conscio.sensors / conscio.tools), resilient to a
broken plugin. conscio.risk.Risk is the shared safety-tier vocabulary.
Structural cognition (v1.6โ1.8) โ conscio.structural (StructuralDistiller
โ ranked StructuralSignal, pure lookup), conscio.structural_consent
(StructuralConsent/ConsentScope, sync_structure), conscio.structural_drift
(StructuralDigest, StructuralDelta/compute_delta, StructuralFreshness/
read_head_commit/compute_freshness, StructuralDriftStore). Engine surfaces:
load_structure(), structural_lookup()/structural_signal(),
structural_delta()/structural_freshness(), and the GoalOrigin provenance gate
- read-only
advisory()pull. Data, never code (R10).
Embodiment โ conscio/mcp/ (v2.0) โ conscio.mcp.server (serve/main,
the conscio-mcp console script), jsonrpc (bounded-at-source frame reader,
structured errors), protocol (Dispatcher, version negotiation), schemas
(rigid Event schema + propose-only tool/resource defs), seen (SeenStore, the
bounded mcp_seen.db idempotency store). Engine pull surfaces:
engine.propose_action(intent) / engine.propose_plan(goal, tools) โ
propose-only cognition composing the existing Actor/Skeptic; never execute, fail
closed without an adapter, emit a proposal:audited event. Nothing opens a
socket; nothing executes (act โ v2.0.1).
Society โ conscio/noosphere/ (v2.2) โ engine-free same-host skill sharing
behind conscio noosphere {publish,import,list,show,id}. paths (HERMES_HOME
layout), identity (instance.json provenance root), artifact (content-only
canonical hash), catalog (host-shared noosphere.db), quarantine
(per-instance intake), publish (reads the live conscio.db read-only),
importer (static revalidation โ quarantine). Imports goal_fingerprint from
the conscio.agency.fingerprint leaf and nothing else from the engine; nothing
imported is served, executed, or promoted (mutual audit / promotion โ later).
Extending Conscio
Three stable extension points, usable directly or published by a third party and auto-discovered via entry points:
from conscio.plugins import discover_adapters, discover_sensors, discover_tools
# or from the CLI: conscio plugins
# in your own package's pyproject.toml
[project.entry-points."conscio.sensors"]
my-sensor = "my_pkg:MySensor" # a conscio.perception.SensorAdapter
Runnable examples: examples/custom_adapter.py, examples/host_guardian.py,
examples/agent_companion.py. Full guide: the docs site (see below).
Bench
# offline, deterministic (MockAdapter)
python -m conscio.bench --adapter mock
# real backends (local by default)
python -m conscio.bench --adapter ollama:qwen3.5:0.8b --cycles 20
python -m conscio.bench --adapter lmstudio:qwen3.5-0.8b --cycles 20
python -m conscio.bench --adapter llamacpp --cycles 20 --json report.json
python -m conscio.bench --adapter openai:qwen3@http://localhost:8000/v1
# skill-acquisition curve (per-bucket validity / success / skill count)
python -m conscio.bench --adapter mock --skills 20
python -m conscio.bench --adapter ollama:gemma4:e4b --skills 40 --dream-every 10
Reports: probe profile, decode tier, per-tier syntactic validity, Skeptic
catch-rate (deterministic vs semantic), latency p50, calibration. --skills N
reports the per-bucket validity/success/exemplars/skill-count curve. Baselines
in docs/bench/.
Model registry
Known models ship with the registry; unknown models are detected by context
window (detect() accepts a context_window override) or inferred from the name.
| Model | Context | Mode |
|---|---|---|
| GLM 5.1 | 131k | Compact |
| Kimi K2.6 | 256k | Standard |
| MiniMax M2.7 | 260k | Standard |
| Step Flash 3.7 | 260k | Standard |
| Nemotron 3 Super 120B | 1M | Standard |
| Claude Sonnet 4 | 200k | Standard |
| Claude Opus 4 | 200k | Standard |
| GPT-4o | 128k | Compact |
| Llama 3.1 70B | 128k | Compact |
| Qwen 2.5 72B | 131k | Compact |
from conscio import ModelRegistry
ModelRegistry.register("my-model", context_window=200_000)
Installation
pip install conscio # from PyPI
pip install -e ".[dev]" # from source, with the dev toolchain
pip install "conscio[docs]" # to build the docs site (mkdocs-material)
Requires Python โฅ 3.10. Core depends only on numpy; sqlite3 is stdlib. The
wheel ships two console scripts โ conscio (version/info/reflect/plugins/bench)
and conscio-bench โ and is typed (PEP 561). dev/docs extras never enter the
runtime import graph.
Docs site: guides, public-API reference, the claims ledger, and the bench reports
(built with mkdocs build --strict; see docs/).
Testing
# Full suite (1437 tests) โ house rule: one file per pytest process
# (low-RAM machines OOM on the full run; CI does the same)
for f in tests/test_*.py; do pytest "$f" -q; done
# Specific module
pytest tests/test_consciousness.py -v
pytest tests/test_agency_act.py -v
pytest tests/test_session_lifecycle.py -v
Database
SQLite, WAL mode, default ~/.conscio/data/:
conscio.db # ContentStore + EventBus + ActionLedger + skills
token_tracker.db # TokenTracker
meta_cognition.db # MetaCognition
Always call engine.close() or use the with statement so WAL checkpoints flush.
Session continuity
Seven layers of persistence (memory โ agent config โ skills โ handoff โ diary โ
session DB/RAG โ git). Configure your agent's hook to fire on session:end /
session:reset; Conscio runs a 6-step pipeline and writes:
<handoff_dir>/_latest_heartbeat.mdโ compact (<1.5KB), auto-injected next session<handoff_dir>/_session_handoff.mdโ richer manual reference<handoff_dir>/heartbeat_YYYYMMDD_HHMM.mdโ dated archive
Audit history
- v2.0.1 โ "Connect" (act) โ opt-in, host-executed audited
actover MCP. A newHostActChannel(conscio/agency/host_act.py) audits (Skeptic) โ gates (baserisk+ manifestapproval_policy, plus Awake + breaker) โ ledgers โ returns an execution packet; the host executes andconscio.report_resultcloses the ledger entry (emitsact:result, feeds breaker/trust). The five act tools appear only with--enable-act; HIGH-risk /require_approvalstay queued (conscio.pendingโconscio.approve). The host declares its tool manifest ininitialize;actaccepts a namespacedidempotency_key. Plusconscio-mcpadapter parity (six providers from config, via a sharedconscio/adapter_config.py) and the R-05 content-store chunk-dedup fix โ debt-zero. Purely additive;reflect()untouched. - v2.0.0 โ "Connect" โ the Embodiment phase. Conscio becomes embeddable
in any MCP host (CLI, IDE, agent) as a live consciousness-layer via a
hand-rolled, stdlib-only MCP stdio server (
conscio-mcp, newline-delimited JSON-RPC 2.0): a bounded-at-source frame reader (no unbounded line buffering),initializecapability discovery + version negotiation, structured JSON-RPC errors. The surface is propose-only โ toolsfeed/note(rigid Event schema, idempotent onevent.id: a duplicate returns the exact prior result),advisory,recall,propose_action(Skeptic audit of an explicit intent),propose_plan(Actor generates one action against a declared tool vocabulary, then the Skeptic audits it); resourcesadvisory/state/events/handoff; a bounded idempotency store (mcp_seen.db). Engine pullspropose_action/propose_plancompose the existing Actor/Skeptic, never execute, fail closed without an adapter, and emitproposal:audited. A seeded stdlib fuzz battery proves the transport survives hostile host input (malformed/oversized/partial frames, wrong version, pre-initialize) without hang/OOM/crash. Also paid debt-zero: atomic JSON saves forworld_model/meta_cognition/context_manager(R-09), bounded quarantine pruning (R-02). Zero new runtime dep; nothing opens a socket;actover MCP โ v2.0.1; society/noosphere โ v2.1. reflect() untouched; public API unchanged. 1437 total. - v1.9.0 โ "Anneal" โ a pre-v2.0 hardening release; no new public surface
(API frozen ahead of "Connect"). A bug-hunt + robustness pass making the
corrupt/legacy/concurrent edges safe: tz-skewed earned-autonomy & quarantine
windows fixed (naive-UTC via
timeutil),event_bus.query(limit=-1)no longer unbounded, and the engine now survives a corrupt/binary/legacy-incomplete store or state file at construction (quarantine + recreate; every JSON loader degrades to a default), a NULL session title no longer blanks the handoff,chunk_size<=0no longer hangs, and the daemon heartbeat is written atomically. Backed by durable guards (conscio.guards:safe_read_json/read_json_dict/clamp_int) + an AST CI rule that fails on any baredatetime.fromtimestampโ turning one-off fixes into class-level prevention. reflect() untouched; dependency-free; debt-zero. - v1.8.0 โ "Structural Drift" โ makes the ingested structure temporal.
conscio.structural_drift:compute_delta(a pure prevโcurrent diff โ commit moved, content_hash changed, communities/hyperedges addedยทremovedยทresized, diffed by id so a relabel isn't drift) andcompute_freshness/read_head_commit(graph commit vs the repoHEAD, read purely from.gitโ ref/packed-refs/detached/worktree, never raises, nogitsubprocess), with a corrupt-tolerant per-workspaceStructuralDriftStore.engine.load_structureadvances the baseline and emitsstructure:changedon real drift; new pullsstructural_delta()/structural_freshness();advisory()["structural"]gainsdrift+freshness; a read-onlyconscio structureCLI. reflect() untouched; dependency-free; debt-zero. - v1.7.0 โ "Structural Cognition" โ the centerpiece:
StructuralDistiller(conscio.structural) distils a Graphifygraph.json(thousands of nodes) to its curated hyperedges + per-community digests, with a purelookup()data layer. Budget-adaptive injection sized to the context window (~120โ1200 tokens), additive (the consciousness-state block byte-for-byte unchanged), labels only. Consent-gated ingestion (conscio.structural_consent, per-Workspace.id, default OFF, switch-safe โ one project's structure never leaks into another). R10 โ imported cognition is data, never code: parsed withjsononly, every field inert; nonetworkx, no Graphify runtime dependency. OOM guards (max_bytes/max_nodes) before parse. reflect() untouched; dependency-free; debt-zero. - v1.6.0 โ "Structural Cognition" (field-driven slice) โ closes the
provenance hole from the Hermes-Agent field run and turns Awake Mode into
consumable signal. The
GoalOriginprovenance gate: diagnostic goals (meta_error/self_prompt/compaction) never auto-run yet stay visible; a read-onlyadvisory()consumption pull (no LLM, no mutation) surfaces state + goals tagged by provenance + lockdown/brake status. CI moved to Node 24. reflect() untouched; dependency-free; debt-zero. (Native distiller/R10 deferred to v1.7 to keep this release debt-free.) - v1.5.1 โ "Awake Hardening" (patch) โ a skeptical review (not just TDD)
hardened three live-only edges: awake survives an
act()lockdown, the host port probe never raises, an awake heartbeat with no backend still reflects; plus sentinel/CLI/breaker fixes. - v1.5.0 โ "Live" โ Conscio runs as a living process. Awake Mode (R9) โ
a persisted, default-OFF gate: the self-initiated heartbeat (
engine.run()/ the daemon) perceives +reflect()s only while asleep, full loop only when awake; a direct humanact()is not gated; toggling is auditable (awake:changed). Daemon (conscio/daemon.py+conscio-daemon) polls a guarded sensor list โ assemblesworld_stateโengine.run()โon_cyclehook โ workspace poll, with gracefulSIGTERM, pidfile, and resume-from-state. Reference sensorsHostSensor(host facts) +AgentSensor(peer session state), both read-onlyRisk.LOW, shipped asconscio.sensorsentry points.WorkspaceContextdetects workspace root + env class (IDE/CLI vs workspace-switching agents) and emitsworkspace:changed.OpenAIAdapter(GPT, env key) joins the OpenAI-compatible adapter that already reaches any custom cloud endpoint. A skeptical review (not just TDD) hardened three live-only edges: awake survives anact()lockdown, the host port probe never raises, an awake heartbeat with no backend still reflects. reflect() untouched, zero new deps, R7 intact. +67 tests. 1137 total. - v1.4.0 โ "Attune" โ model-context detection is offline & deterministic by
default (known models resolve to the registry with zero filesystem/network I/O);
config-file / LM Studio / GGUF auto-detection is opt-in (
autodetect/CONSCIO_AUTODETECT), config is stdlib JSON (no PyYAML), GGUF array metadata no longer aborts the parse. Session-RAG embedder is backend-agnostic and dimension-safe (wrong-dim vectors dropped on write, skipped on search; re-index on embedder change). Frontier inference adapters โAnthropicAdapter(Claude) +GeminiAdapter(Gemini) โ join the local backends (the inference behind Claude Code and Antigravity); R7 (no network in the ToolRegistry) unaffected. reflect() untouched, zero-deps core intact (stdliburllib). +31 tests. 1070 total. - v1.3.1 โ "Ship" (patch) โ CLI polish: an unrecognized model now prints a
clear note (heuristic context window + how to register) instead of falling back
silently;
DEFAULT_MODELconstant.PerceptionFrame.tsdocumented as epoch seconds (ledger convention), excluded fromto_world_state(). Added a subprocess end-to-end CLI test (python -m conscio) andRiskJSON serialization tests. +4 tests. 1019 total. - v1.3.0 โ "Ship" โ Conscio becomes installable and extensible:
pip install conscio(single-source version, console scriptsconscio/conscio-bench, PEP 561 typed, wheel+sdist passtwine check, core pulls only numpy). A public plugin surface โInferenceAdapter, the newSensorAdapterperception interface (conscio.perception; feedsreflect()untouched), and tools โ discoverable via entry points and resilient to a broken plugin (conscio.plugins). MkDocs Material docs site (mkdocs build --strict). Release automation: tagโPyPI via OIDC trusted publishing, docsโPages, CI build smoke. Examples gallery (custom-adapter, host-guardian, agent-companion).Riskunified intoconscio.risk(re-exported; no behavior change). reflect() untouched, zero-deps core intact. +31 tests. 1015 total. - v1.2.0 โ "Prove" โ the central claim turns from machinery (Mock) into
measurement: on
qwen3.5-0.8b(LM Studio, CPU) execution success rose 0.2 โ 1.0 once Distill served past successes as few-shot, and the Skeptic's semantic catch-rate was 1.0 (docs/bench/v1.2-skill-curve.md,docs/CLAIMS.md). F2-deferred debt closed (empty-value validation,fs_readcap, error sanitization,HTTPErrormapping, ledgerbusy_timeout, atomicapprove()claim, lockdown-persistence e2e). Bench hardened for real backends (clean backend-down exit, crash-safe incremental curve). LM Studio backend added. reflect() untouched, zero-deps intact. +21 tests. 984 total. - v1.1.0 โ F4 "Procedural" โ procedural memory closes the competence loop:
SkillLibrary(skills distilled from successful ledger plans; data, not code โ R1 intact), Distill as the dream's fifth sub-phase (watermarked, last on purpose), tier-aware few-shot exemplars with outcome settling and a 50% teaching gate, skill-acquisition curve in the bench (--skills N), reactive MockAdapter. Debt paid: deprecateddatetime.utcnow()removed repo-wide, CI runs tests one file at a time, mypy is a real gate, publicengine.state. reflect() untouched. +48 tests. 963 total. - v1.0.0 โ F3 "Volition" โ the loop closes: ProbeSuite/ModelProfile
(empirical, SQLite-cached, no hardcoded model table), schemaโGBNF compiler,
GoalArbiter,
engine.run(budget)L3 heartbeat with binding ActBudget + metabolic gating,engine.probe(), earned L3 autonomy, Meter/MeteredAdapter, the bench CLI. +70 tests. - v1.0.0b1 โ F2 "Immunity" โ semantic immune system: Skeptic, TrustMatrix, per-goal quarantine, risk gating, mixed-cortex audits, approval queue. 20-proposal adversarial suite: 100% deterministic sabotage blocked, zero executions.
- v1.0.0a1 โ F1 "Spine" โ the agency subpackage lands: contracts + zero-dep
validator, InferenceAdapter (Mock/Ollama/llama.cpp/OpenAI-compat), OutputGateway,
sandboxed ToolRegistry, append-only ActionLedger, minimal CircuitBreaker,
engine.act()L1 PROPOSE. Safety rules amended (R3 rewritten; R6โR8 added). +83 tests. - v0.8.0 โ Semantic Reconciliation โ contradiction detection via embedding
antonym axes, off the hot path in the dream Reconcile sub-phase; opt-in
non-destructive
SemanticDedup. 56 tests. 600 total. - v0.7.0 โ Recursive Coherence โ coherenceโaction loop: advisory
DreamRecommendation, pure self-prompting (one bounded goal/cycle). 23 tests. - v0.6.0 โ Coherence โ
CoherenceEngine(epistemic/reality/ontological/ temporal), static voice presets. 46 tests. - v0.5.0 โ Cognitive Modes โ ShardEngine, trajectory vector, content layering. 37 tests.
- v0.4.0 โ Self-Judgment โ entropy pruning, friction, meta-reflect. 24 tests.
- v0.3.0 โ Metabolic Consciousness โ MetabolicContext + DreamCycle,
engine.recall()cross-session memory, OutputFilterDedupBlocks+SecretMask. 68 tests. - v0.2.3 โ Session lifecycle โ 6-step handoff pipeline;
sessiontype/category. 31 tests. - v0.2.0โ0.2.2 โ integration audits, session handoff, on-demand heartbeat injection.
- v0.1.0 (2026-06-03) โ initial release. 313 tests.
License
MIT โ Neguiolidas / Neguitech
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file conscio-2.2.2.tar.gz.
File metadata
- Download URL: conscio-2.2.2.tar.gz
- Upload date:
- Size: 434.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07ac48c75332c0e57930eac7c170e1108d610a4e9f7b89082ac44f944247dc3e
|
|
| MD5 |
816170c5b643f634292667127dace4d5
|
|
| BLAKE2b-256 |
8b2cb6b5ae04b7543f66df4d8c6638c9cb0dd80b93a397d84a1f5061566c7c6a
|
Provenance
The following attestation bundles were made for conscio-2.2.2.tar.gz:
Publisher:
release.yml on Neguiolidas/Conscio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
conscio-2.2.2.tar.gz -
Subject digest:
07ac48c75332c0e57930eac7c170e1108d610a4e9f7b89082ac44f944247dc3e - Sigstore transparency entry: 1918916645
- Sigstore integration time:
-
Permalink:
Neguiolidas/Conscio@8b1ff40d4884c8196027b7cfc01bdb544c551649 -
Branch / Tag:
refs/tags/v2.2.2 - Owner: https://github.com/Neguiolidas
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8b1ff40d4884c8196027b7cfc01bdb544c551649 -
Trigger Event:
push
-
Statement type:
File details
Details for the file conscio-2.2.2-py3-none-any.whl.
File metadata
- Download URL: conscio-2.2.2-py3-none-any.whl
- Upload date:
- Size: 255.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c1c3aaa7a35e019034dc7ca18ec1447ef26256370776a8b9fcead86b86604bd
|
|
| MD5 |
0594d8307a5cd0f3b8b20c53d78972a2
|
|
| BLAKE2b-256 |
564a78710ace55b1637a3ef1ed7b8f575dfa887c714bd3753c1022305a97614e
|
Provenance
The following attestation bundles were made for conscio-2.2.2-py3-none-any.whl:
Publisher:
release.yml on Neguiolidas/Conscio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
conscio-2.2.2-py3-none-any.whl -
Subject digest:
9c1c3aaa7a35e019034dc7ca18ec1447ef26256370776a8b9fcead86b86604bd - Sigstore transparency entry: 1918916781
- Sigstore integration time:
-
Permalink:
Neguiolidas/Conscio@8b1ff40d4884c8196027b7cfc01bdb544c551649 -
Branch / Tag:
refs/tags/v2.2.2 - Owner: https://github.com/Neguiolidas
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8b1ff40d4884c8196027b7cfc01bdb544c551649 -
Trigger Event:
push
-
Statement type: