feat(ai): add SynthSeek MCP client #194
No reviewers
Labels
No labels
area:authentication
area:flake-utilities
area:performance
area:tbd
host:chaos
host:electra
host:fleet
host:lyra
host:nova
host:vega
investigation
phase:cutover
phase:deploy
phase:mcp
phase:module
phase:packaging
phase:prep
phase:validation
priority:high
priority:medium
project:attic-postgres-lyra-rollout
project:auto-update-reliability
project:auto-update-remediation
project:declarative-purity-cleanup
project:external-review
project:fleet-boundary-cleanup
project:host-facts-refactor
project:lyra-nixos-deploy
project:lyra-service-stack-migration
project:nebula-mesh-network
project:nixos-build-deployment-pipeline
project:security-hardening
project:service-stack-migration
project:vega-sillytavern-cutover
project:wiki-rebuild
repo:numtide/flake-utils
repo:numtide/nix-auth
repo:numtide/nixos-passthru-cache
repo:numtide/nix-relay
service:auto-update
service:mem0
service:nix
service:sillytavern
service:slskd
service:synthseek
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nimmo/nixos-config!194
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/synthseek-mcp"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Validation
No deployment is included in this PR.
Automated code review
Reviewed commit:
aa7b1b45a44dc59b253d639548d4a26b8a8880daVerdict: Ready to merge
No blocking or important findings were retained, and deterministic checks passed. Suggestions remain advisory.
Overall assessment
The PR introduces a new SynthSeek MCP client configuration, adding a SOPS-encrypted secret file (
secrets/synthseek-mcp.yaml), updating.sops.yamlfor key management, and integrating the credentials into bothai-agents.nix(for Codex) andai-runtime.nix(for OpenCode). A significant refactoring removes the redundantcodexForUserwrapper fromai-runtime.nix, consolidating it intoai-agents.nix. The changes are logically sound, follow existing patterns for secret handling and conditional configuration, and correctly address the separation of concerns between agent profiles and runtime environments.Blocking findings
None.
Important findings
None.
Suggestions
Verify OpenCode JSON header interpolation syntax (modules/profiles/ai-runtime.nix:396; medium confidence)
"headers.Authorization" = "Bearer {file:${config.sops.secrets.${synthseekMcpApiKeySecretName}.path}}";
Impact: The OpenCode configuration uses
{file:...}interpolation for the bearer token. This syntax is specific to OpenCode's MCP client implementation. If OpenCode's version or configuration schema changes, this might break silently or fail to authenticate.Suggested fix: Verify that the
{file:...}syntax is still supported in the version of OpenCode being used. Consider adding a comment referencing the OpenCode documentation for this feature to aid future maintainers.Consider consolidating MCP configuration logic (modules/profiles/ai-agents.nix:295; medium confidence)
${lib.optionalString synthseekMcpConfigured ''
ensure_http_mcp
synthseek
https://seek.nimmog.uk/api/v1/mcp
${lib.escapeShellArg synthseekMcpApiKeyEnvVar}
''}
Impact: The MCP configuration for SynthSeek is duplicated between
ai-agents.nix(for Codex) andai-runtime.nix(for OpenCode). While this separation aligns with the current module structure, it creates two points of maintenance for the same endpoint URL and authentication method.Suggested fix: Consider extracting the SynthSeek MCP configuration into a shared helper function or a dedicated small module that both
ai-agents.nixandai-runtime.nixcan import. This would ensure consistency if the endpoint URL or auth method changes in the future.Tests and validation
Questions
codexForUserfromai-runtime.nix. Is there any other host or profile that importsai-runtime.nixand relies on thecodexbinary being available in the PATH via that module'shome.packages?electra,lena,vega, andlyra. Are all these hosts confirmed to be AI client hosts that will actually use the SynthSeek MCP endpoint, or could some of these key groups be unnecessary?Review limitations
nix flake checkto validate the Nix configuration syntax.modules/profiles/ai-agents.nixormodules/profiles/ai-runtime.nix, so I am inferring the context of changes based on the provided snippets.Diff coverage
.sops.yaml: reviewed — included in a context-limited batchmodules/profiles/ai-agents.nix: reviewed — included in a context-limited batchmodules/profiles/ai-runtime.nix: reviewed — included in a context-limited batchsecrets/README.md: reviewed — included in a context-limited batchsecrets/synthseek-mcp.yaml: reviewed — included in a context-limited batchReview metadata
0fabb76227aa7b1b45a4