Skip to content

Engramic Plugin and Profile System

Engramic is designed with a plugin layer that allows seamless integration with various components such as LLMs, databases, vector databases, and embedding services. The glue that binds these systems together are called profiles.

Example: Default Profile Configuration

version = 0.1

[mock]
type = "profile"
vector_db.db = {name="Mock"}
llm.retrieve_gen_conversation_direction = {name="Mock"}
llm.retrieve_gen_index = {name="Mock"}
llm.retrieve_prompt_analysis = {name="Mock"}
db.document = {name="Mock"}
llm.response_main = {name="Mock"}
llm.validate = {name="Mock"}
llm.summary = {name="Mock"}
llm.gen_indices = {name="Mock"}
embedding.gen_embed = {name="Mock"}

[standard]
type = "pointer"
ptr = "standard-2025-04-01"

[standard-2025-04-01]
type = "profile"
vector_db.db = {name="ChromaDB"}
llm.retrieve_gen_conversation_direction = {name="Gemini", model="gemini-2.0-flash"}
llm.retrieve_gen_index = {name="Gemini", model="gemini-2.0-flash"}
llm.retrieve_prompt_analysis = {name="Gemini", model="gemini-2.0-flash"}
db.document = {name="Sqlite"}
llm.response_main = {name="Gemini", model="gemini-2.0-flash"}
llm.validate = {name="Gemini", model="gemini-2.0-flash"}
llm.summary = {name="Gemini", model="gemini-2.0-flash"}
llm.gen_indices = {name="Gemini", model="gemini-2.0-flash"}
embedding.gen_embed = {name="Gemini", model="text-embedding-004"}

Loading a Profile with the Host

When creating a Host, you should load the initial profile like so:

host = Host(
    'standard',
    [
        MessageService,
        RetrieveService,
        ResponseService,
        StorageService,
        CodifyService,
        ConsolidateService
    ]
)

In this example, the developer is using the standard profile. This is a pointer profile that redirects to a dated version (e.g., standard-2025-04-01). As Engramic evolves, the standard pointer will be updated to reference the currently recommended profile. By using standard, you're always aligned with the recommended configuration.

The mock profile is another key option. When using mock, all plugins are mock implementations — meaning no API calls are made. This mode is intended exclusively for testing and development.