engramic


Nameengramic JSON
Version 0.4.0 PyPI version JSON
download
home_pageNone
SummaryAn open source (for companies less than 250 employees) AI library for processing, storing, and retrieving proprietary, unstructured data.
upload_time2025-07-24 18:45:55
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseEngramic Community License Copyright (c) 2025 Preisz Consulting, LLC. This Software is provided under the terms of the MIT License. Notwithstanding the foregoing, the following Restrictions apply: Restrictions. 1. If you or the entity you represent employ 250 or more people worldwide you must obtain a commercial or research license. Contact us at license@engramic.org. 2. You may not act on behalf of any person or entity employing 250 or more people worldwide to circumvent Restriction 1. All derivative works must retain this Engramic Community License and these Restrictions.
keywords ai llm memory rag retrieval augmented generation
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">
  <img alt="Engramic Logo" src="https://images.squarespace-cdn.com/content/67b3db6de0a35d0b59158854/69eac5b0-f048-4ec7-84d5-9ba7b7a1272a/logo_gray_200.png">
</div>

# Engramic: Build Apps that Answer, Learn, and Remember

## What is Engramic?
Engramic is an advanced system designed to enhance AI applications with sophisticated context management and memory capabilities. Unlike conventional RAG implementations, Engramic goes beyond simple retrieval and response by integrating memory and learning mechanisms, enabling applications to synthesize their data, improving its undersanding over time.

## Core Features
- **Context Management**: Maintain and utilize contextual awareness across multiple interactions.
- **Long-Term Memory**: Store and recall relevant information dynamically for more natural and intelligent responses.
- **Procedural Memory**: Store and recall procedural memories that perform specialized skills.
- **Learning Capability**: Adapt over time based on interactions and inputs.

## Development Status
We are in early stages of development and platform testing is limited. Engramic should be considered experimental. Core concepts are in place, but the system is still evolving. We encourage developers and researchers to follow our progress and contribute to shaping the future of Engramic.

There is currently no support for the following:

- There is no support for individual users.
- There is no HTTP(s) interface at this time.
- There are no fallbacks if API calls fail.
- Windows and MacOS is not being tested as part of our release process.

These features, along with others, will be available in the near future.

What Engramic is ready for:

- Proof of concepts focused on folder directories with 10 or so PDFs with less than 100 pages.
- Research related to long term memory.
- Developers looking to support Engramic.

[Engramic Docs](https://engramic.github.io/engramic/)

[Engramic Knowledge Base](https://www.engramic.org/knowledge-base)

## Getting Started

The fastest way to begin working with Engramic is to download it from pip.

```
pip install engramic
```

**!!!Important**. Engramic must be run from within a virtual environment (e.g. venv).

During these early phases of development, we recommend working from source code. Setting up your environment is designed to be straightforward. See the "Getting Started" section in our documentation. The complete code is available in examples/mock_profile/mock_profile.py.

### Starter Example 
Run a mock version (no API key required) of Engramic.

**Step 1**. Include the imports & set logging:
```
import logging
from typing import Any

from engramic.application.message.message_service import MessageService
from engramic.application.response.response_service import ResponseService
from engramic.application.retrieve.retrieve_service import RetrieveService
from engramic.core.host import Host
from engramic.core.prompt import Prompt
from engramic.core.response import Response
from engramic.infrastructure.system import Service

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
```

**Step 2**. Create a test service and subscribe to the MAIN_PROMPT_COMPLETE message:

```
class TestService(Service):
    def start(self):
        self.subscribe(Service.Topic.MAIN_PROMPT_COMPLETE, self.on_main_prompt_complete)
        return super().start()

    def on_main_prompt_complete(self, message_in: dict[str, Any]) -> None:
        response = Response(**message_in)
        logging.info('\n\n================[Response]==============\n%s\n\n', response.response)
        self.host.shutdown()
```

**Step 3**. Create the host, add the services, and submit a prompt.
```
if __name__ == '__main__':

    host = Host(
        'mock',
        [
            MessageService,
            RetrieveService,
            ResponseService,
            TestService,
        ],
    )

    retrieve_service = host.get_service(RetrieveService)
    retrieve_service.submit(Prompt('Tell me about the All In podcast.'))

    # The host continues to run and waits for a shutdown message to exit.
    host.wait_for_shutdown()
```

This example uses plugins that emulate API calls (i.e. mocks) to LLMs, databases, etc. by returning deterministic data. Visit the documentation for the next "Getting Started" example to use non-mock plugins.

## Dependencies
**Pure Python**
- Pluggy
- Mako
- Tomli
- Cachetools
- Websockets
- Pymupdf
- PyJWT

**Pure Python & C++**
- Pyzmq

## Plugins
Plugins are managed in the engram_profiles.toml file which is generated during the first run. Engramic currently includes the plugins listed below.

*Note: Plugin dependencies are downloaded on first run of the plugin and can be viewed in the plugin.toml file located in the root directory of the plugin.*

Vector DB
- ChromaDB

Database
- SQLite

LLM
- Gemini (2.5 Flash and pro)

Embedding
- Google gemini-embedding-001



## Getting Involved
If you're interested in contributing or have questions about Engramic, feel free to reach out to us:

**Email**: [info@engramic.org](mailto:info@engramic.org)




            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "engramic",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "AI, LLM, Memory, RAG, Retrieval Augmented Generation",
    "author": null,
    "author_email": "\"Preisz Consulting, LLC\" <license@engramic.org>",
    "download_url": "https://files.pythonhosted.org/packages/b7/44/1e619dd18d7d3661fa811fa521af8db53d48d88d7f0e51b5d49a45c5fd31/engramic-0.4.0.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\n  <img alt=\"Engramic Logo\" src=\"https://images.squarespace-cdn.com/content/67b3db6de0a35d0b59158854/69eac5b0-f048-4ec7-84d5-9ba7b7a1272a/logo_gray_200.png\">\n</div>\n\n# Engramic: Build Apps that Answer, Learn, and Remember\n\n## What is Engramic?\nEngramic is an advanced system designed to enhance AI applications with sophisticated context management and memory capabilities. Unlike conventional RAG implementations, Engramic goes beyond simple retrieval and response by integrating memory and learning mechanisms, enabling applications to synthesize their data, improving its undersanding over time.\n\n## Core Features\n- **Context Management**: Maintain and utilize contextual awareness across multiple interactions.\n- **Long-Term Memory**: Store and recall relevant information dynamically for more natural and intelligent responses.\n- **Procedural Memory**: Store and recall procedural memories that perform specialized skills.\n- **Learning Capability**: Adapt over time based on interactions and inputs.\n\n## Development Status\nWe are in early stages of development and platform testing is limited. Engramic should be considered experimental. Core concepts are in place, but the system is still evolving. We encourage developers and researchers to follow our progress and contribute to shaping the future of Engramic.\n\nThere is currently no support for the following:\n\n- There is no support for individual users.\n- There is no HTTP(s) interface at this time.\n- There are no fallbacks if API calls fail.\n- Windows and MacOS is not being tested as part of our release process.\n\nThese features, along with others, will be available in the near future.\n\nWhat Engramic is ready for:\n\n- Proof of concepts focused on folder directories with 10 or so PDFs with less than 100 pages.\n- Research related to long term memory.\n- Developers looking to support Engramic.\n\n[Engramic Docs](https://engramic.github.io/engramic/)\n\n[Engramic Knowledge Base](https://www.engramic.org/knowledge-base)\n\n## Getting Started\n\nThe fastest way to begin working with Engramic is to download it from pip.\n\n```\npip install engramic\n```\n\n**!!!Important**. Engramic must be run from within a virtual environment (e.g. venv).\n\nDuring these early phases of development, we recommend working from source code. Setting up your environment is designed to be straightforward. See the \"Getting Started\" section in our documentation. The complete code is available in examples/mock_profile/mock_profile.py.\n\n### Starter Example \nRun a mock version (no API key required) of Engramic.\n\n**Step 1**. Include the imports & set logging:\n```\nimport logging\nfrom typing import Any\n\nfrom engramic.application.message.message_service import MessageService\nfrom engramic.application.response.response_service import ResponseService\nfrom engramic.application.retrieve.retrieve_service import RetrieveService\nfrom engramic.core.host import Host\nfrom engramic.core.prompt import Prompt\nfrom engramic.core.response import Response\nfrom engramic.infrastructure.system import Service\n\nlogging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n```\n\n**Step 2**. Create a test service and subscribe to the MAIN_PROMPT_COMPLETE message:\n\n```\nclass TestService(Service):\n    def start(self):\n        self.subscribe(Service.Topic.MAIN_PROMPT_COMPLETE, self.on_main_prompt_complete)\n        return super().start()\n\n    def on_main_prompt_complete(self, message_in: dict[str, Any]) -> None:\n        response = Response(**message_in)\n        logging.info('\\n\\n================[Response]==============\\n%s\\n\\n', response.response)\n        self.host.shutdown()\n```\n\n**Step 3**. Create the host, add the services, and submit a prompt.\n```\nif __name__ == '__main__':\n\n    host = Host(\n        'mock',\n        [\n            MessageService,\n            RetrieveService,\n            ResponseService,\n            TestService,\n        ],\n    )\n\n    retrieve_service = host.get_service(RetrieveService)\n    retrieve_service.submit(Prompt('Tell me about the All In podcast.'))\n\n    # The host continues to run and waits for a shutdown message to exit.\n    host.wait_for_shutdown()\n```\n\nThis example uses plugins that emulate API calls (i.e. mocks) to LLMs, databases, etc. by returning deterministic data. Visit the documentation for the next \"Getting Started\" example to use non-mock plugins.\n\n## Dependencies\n**Pure Python**\n- Pluggy\n- Mako\n- Tomli\n- Cachetools\n- Websockets\n- Pymupdf\n- PyJWT\n\n**Pure Python & C++**\n- Pyzmq\n\n## Plugins\nPlugins are managed in the engram_profiles.toml file which is generated during the first run. Engramic currently includes the plugins listed below.\n\n*Note: Plugin dependencies are downloaded on first run of the plugin and can be viewed in the plugin.toml file located in the root directory of the plugin.*\n\nVector DB\n- ChromaDB\n\nDatabase\n- SQLite\n\nLLM\n- Gemini (2.5 Flash and pro)\n\nEmbedding\n- Google gemini-embedding-001\n\n\n\n## Getting Involved\nIf you're interested in contributing or have questions about Engramic, feel free to reach out to us:\n\n**Email**: [info@engramic.org](mailto:info@engramic.org)\n\n\n\n",
    "bugtrack_url": null,
    "license": "Engramic Community License\n        Copyright (c) 2025 Preisz Consulting, LLC.\n        \n        This Software is provided under the terms of the MIT License.\n        \n        Notwithstanding the foregoing, the following Restrictions apply:\n        \n        Restrictions.\n        \n        1. If you or the entity you represent employ 250 or more people worldwide you must obtain a commercial or research license. Contact us at license@engramic.org.\n        \n        2. You may not act on behalf of any person or entity employing 250 or more people worldwide to circumvent Restriction 1.\n        \n        All derivative works must retain this Engramic Community License and these Restrictions.",
    "summary": "An open source (for companies less than 250 employees) AI library for processing, storing, and retrieving proprietary, unstructured data.",
    "version": "0.4.0",
    "project_urls": {
        "Documentation": "https://github.com/engramic/engramic#readme",
        "Issues": "https://github.com/engramic/engramic/issues",
        "Source": "https://github.com/engramic/engramic"
    },
    "split_keywords": [
        "ai",
        " llm",
        " memory",
        " rag",
        " retrieval augmented generation"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "853d340fffa1775397af6dbc5c69a3be06684286f3f73cb34719112bfcb637c1",
                "md5": "5203d7d65d25bbc2c6e3884ee8fce75f",
                "sha256": "54ddcb00f7446681e2f6e5cbda0505355f10a928881a28f35aa945ada159312a"
            },
            "downloads": -1,
            "filename": "engramic-0.4.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "5203d7d65d25bbc2c6e3884ee8fce75f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 660227,
            "upload_time": "2025-07-24T18:45:56",
            "upload_time_iso_8601": "2025-07-24T18:45:56.009760Z",
            "url": "https://files.pythonhosted.org/packages/85/3d/340fffa1775397af6dbc5c69a3be06684286f3f73cb34719112bfcb637c1/engramic-0.4.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b7441e619dd18d7d3661fa811fa521af8db53d48d88d7f0e51b5d49a45c5fd31",
                "md5": "238a4be721450ba68b6a50bbd3ab761c",
                "sha256": "b4ea46f5b406fbc2ae2ae077ec748a42847265e264331ffbe957440119a54a67"
            },
            "downloads": -1,
            "filename": "engramic-0.4.0.tar.gz",
            "has_sig": false,
            "md5_digest": "238a4be721450ba68b6a50bbd3ab761c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 618923,
            "upload_time": "2025-07-24T18:45:55",
            "upload_time_iso_8601": "2025-07-24T18:45:55.070088Z",
            "url": "https://files.pythonhosted.org/packages/b7/44/1e619dd18d7d3661fa811fa521af8db53d48d88d7f0e51b5d49a45c5fd31/engramic-0.4.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-24 18:45:55",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "engramic",
    "github_project": "engramic#readme",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "engramic"
}
        
Elapsed time: 1.09875s