Hi everyone,
We use deepagents==0.6.8 on LangSmith Deployment and are looking for the recommended architecture for skills.
Our skills are immutable at runtime. Git is the source of truth: changes are reviewed through GitHub and validated by CI. Normal users and the agent must
never modify them.
We considered three options:
-
FilesystemBackend
The simplest solution would be to expose the packaged agent/skills/ directory as a read-only route in a CompositeBackend. However, the documentation
discourages FilesystemBackend for web servers and APIs. Does this warning still apply when the backend is restricted to a non-secret, read-only skills
directory with virtual_mode=True? -
ContextHubBackend
Context Hub provides native versioning, but Git would no longer be the only editable source. We would still need Git-to-Context-Hub synchronization,
runtime LangSmith credentials, and potentially an agent repo linking several skill repos. This seems unnecessary when the skills belong only to our
application. -
StoreBackend
This is our current choice. Before local startup or Cloud deployment, we seed the Git skills into the Store and deny agent writes under /skills/**. It
works, but requires custom synchronization, versioned namespaces, cleanup, deployment credentials, and rolling-deployment coordination.
Is StoreBackend the recommended pattern for immutable, Git-managed skills in a custom LangSmith Deployment, or is there a simpler supported mechanism?
We also need guidance on versioning existing threads.
SkillsMiddleware stores skills_metadata in checkpointed state and loads it only once per session, while the full SKILL.md is read lazily.
If Thread A starts with skills v1 and we deploy v2, should:
- Thread A remain pinned to v1 while new threads use v2?
- Or should Thread A automatically use v2 on its next invocation?
Is there a supported mechanism to pin or refresh skill versions without mixing old metadata with new skill content?
Our goal is a simple, deterministic setup where Git remains authoritative.