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:
v1.3.1โ "Ship" (pip install conscio; public plugin surface โ adapters, sensors, tools; docs site; tagโPyPI release automation; 1019 tests, CI green, mypy a real gate)
What Conscio does
- Knows itself โ detects its model and context window, 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.
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 (v1.1.0)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 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 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
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"))
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.
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.
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 (1019 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
- 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-1.3.1.tar.gz.
File metadata
- Download URL: conscio-1.3.1.tar.gz
- Upload date:
- Size: 242.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64fec7e26abcd0b0ae445aa4196d869e86b739009dbb5556796bd60656775834
|
|
| MD5 |
e9abbb3cecae2797ea6e8ead434a630c
|
|
| BLAKE2b-256 |
e3d25a4bee0d7f7db7a70bcb2df42cbe8c06b587df617be998d7f3eab070f0d4
|
Provenance
The following attestation bundles were made for conscio-1.3.1.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-1.3.1.tar.gz -
Subject digest:
64fec7e26abcd0b0ae445aa4196d869e86b739009dbb5556796bd60656775834 - Sigstore transparency entry: 1818437840
- Sigstore integration time:
-
Permalink:
Neguiolidas/Conscio@b9a74afebbc17342ba47bf86115002ebabec68ff -
Branch / Tag:
refs/tags/v1.3.1 - Owner: https://github.com/Neguiolidas
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b9a74afebbc17342ba47bf86115002ebabec68ff -
Trigger Event:
push
-
Statement type:
File details
Details for the file conscio-1.3.1-py3-none-any.whl.
File metadata
- Download URL: conscio-1.3.1-py3-none-any.whl
- Upload date:
- Size: 153.6 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 |
d4351b1a18aecbd6bb016c6365950c52df069e6fd0d7e601b8133229f503129d
|
|
| MD5 |
78ad9b62a22200b9e552513e85ea234d
|
|
| BLAKE2b-256 |
a2b5c528fcf272ad571963e72c79a311e24c2a7b5572b3dbff62815e10e5345b
|
Provenance
The following attestation bundles were made for conscio-1.3.1-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-1.3.1-py3-none-any.whl -
Subject digest:
d4351b1a18aecbd6bb016c6365950c52df069e6fd0d7e601b8133229f503129d - Sigstore transparency entry: 1818437851
- Sigstore integration time:
-
Permalink:
Neguiolidas/Conscio@b9a74afebbc17342ba47bf86115002ebabec68ff -
Branch / Tag:
refs/tags/v1.3.1 - Owner: https://github.com/Neguiolidas
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b9a74afebbc17342ba47bf86115002ebabec68ff -
Trigger Event:
push
-
Statement type: