- English for source code, comments, logs, HTTP errors, Admin UI, README, and config templates.
- Tenant locale (
DefaultLanguage,WikiSchema, personas) for LLM-facing prompts, wiki text, HITL keywords, and tool outputs returned to the model. - Localized strings live in
src/ContextMemory.Core/Localization/(TenantLocale,AgenticMessages,ToolExecutionMessages,ValidationMessages,LlmPrompts,ToolSchemaMessages). UseTenantLocale.Select(language, en, pt)for new user-facing or model-facing text.
dotnet restore
dotnet build ContextMemory.sln
dotnet test tests/ContextMemory.Api.Tests/ContextMemory.Api.Tests.csproj# Terminal 1 — gateway
cd src/ContextMemory.Api
dotnet run
# http://localhost:5100
# Terminal 2 — Admin console / Chat Lab
cd src/ContextMemory.Admin.Web
dotnet run
# http://localhost:5200In Admin Settings, set API base URL http://localhost:5100 and the Master Key from ContextMemory:MasterKey (User Secrets, env, or appsettings).
Local secrets — prefer User Secrets or environment variables (see .env.example). You may also create a gitignored src/ContextMemory.Api/appsettings.Development.json with local overrides.
Public contracts are in src/ContextMemory.Core/Contracts/ with XML summaries. When adding or changing an interface, update the /// comments and keep Swagger descriptions in English.
- Keep changes focused; match existing naming and DI patterns.
- Run the full test suite before opening a PR. If you touched the chat path, also run
./scripts/aha-chat.shagainst a local engine (e.g.docker compose -f docker-compose.yml -f docker-compose.llamacpp.yml up --build). - Do not commit secrets,
data/, or localappsettings.Development.json. - Use Conventional Commits for the PR title and for commits pushed to
main(feat: …,fix: …,docs: …,chore: …). Releases and the changelog are generated by release-please from these prefixes; other messages are ignored.
Tried ContextMemory with an engine/model we do not document yet? Open an issue with the Engine / model compatibility report template — those reports feed the table in docs/self-host.md.