tylor-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.aws-setup.sh +25 -0
- package/.claude-plugin/plugin.json +22 -0
- package/.mcp.json +12 -0
- package/AGENTS.md +93 -0
- package/CLAUDE.md +99 -0
- package/CLAUDE_PLATFORM_AWS_SETUP.md +105 -0
- package/LICENSE +21 -0
- package/README.md +146 -0
- package/assets/tylor_logo.png +0 -0
- package/assets/tylor_threads_concept.png +0 -0
- package/bin/tylor.js +23 -0
- package/hooks/kill-thread-trigger.sh +7 -0
- package/hooks/post-tool-use-code-index.sh +7 -0
- package/hooks/session-checkpoint.sh +7 -0
- package/hooks/session-start.sh +7 -0
- package/install.py +401 -0
- package/install.sh +260 -0
- package/package.json +24 -0
- package/pytest.ini +2 -0
- package/registry.json +26 -0
- package/server/.env.example +24 -0
- package/server/__init__.py +0 -0
- package/server/config.py +89 -0
- package/server/main.py +93 -0
- package/server/personas/analyst.md +15 -0
- package/server/personas/ceo.md +14 -0
- package/server/personas/code_agent.md +15 -0
- package/server/personas/cto.md +14 -0
- package/server/provision.py +260 -0
- package/server/provision_opensearch.py +154 -0
- package/server/requirements.txt +26 -0
- package/server/storage/__init__.py +0 -0
- package/server/storage/dynamo.py +399 -0
- package/server/storage/json_store.py +359 -0
- package/server/storage/opensearch.py +194 -0
- package/server/storage/s3.py +96 -0
- package/server/storage/tests/__init__.py +0 -0
- package/server/storage/tests/test_dynamo.py +452 -0
- package/server/storage/tests/test_json_store.py +226 -0
- package/server/storage/tests/test_opensearch.py +270 -0
- package/server/storage/tests/test_s3.py +125 -0
- package/server/tests/__init__.py +0 -0
- package/server/tests/test_install.py +606 -0
- package/server/tests/test_isolation.py +90 -0
- package/server/tests/test_ui_server.py +385 -0
- package/server/tests/test_ui_shader_background.py +52 -0
- package/server/tests/test_ui_story_6_3.py +105 -0
- package/server/tools/__init__.py +0 -0
- package/server/tools/_mcp.py +4 -0
- package/server/tools/agents.py +160 -0
- package/server/tools/ecc/__init__.py +1 -0
- package/server/tools/ecc/data.py +35 -0
- package/server/tools/ecc/diagrams.py +23 -0
- package/server/tools/ecc/pipeline.py +24 -0
- package/server/tools/ecc/presentation.py +24 -0
- package/server/tools/ecc/web.py +23 -0
- package/server/tools/executor.py +880 -0
- package/server/tools/harness.py +330 -0
- package/server/tools/help.py +162 -0
- package/server/tools/hooks.py +357 -0
- package/server/tools/personas.py +110 -0
- package/server/tools/registry.py +195 -0
- package/server/tools/router.py +117 -0
- package/server/tools/skill_installer.py +230 -0
- package/server/tools/summarizer.py +168 -0
- package/server/tools/tests/__init__.py +0 -0
- package/server/tools/tests/test_agents.py +246 -0
- package/server/tools/tests/test_code_index.py +108 -0
- package/server/tools/tests/test_ecc_tools.py +51 -0
- package/server/tools/tests/test_executor.py +584 -0
- package/server/tools/tests/test_help_agent101.py +149 -0
- package/server/tools/tests/test_hooks.py +124 -0
- package/server/tools/tests/test_kill_thread.py +125 -0
- package/server/tools/tests/test_new_thread_list_threads.py +293 -0
- package/server/tools/tests/test_personas.py +52 -0
- package/server/tools/tests/test_recall_memory.py +55 -0
- package/server/tools/tests/test_registry_client.py +308 -0
- package/server/tools/tests/test_router.py +263 -0
- package/server/tools/tests/test_skill_installer.py +174 -0
- package/server/tools/tests/test_switch_thread.py +163 -0
- package/server/tools/tests/test_thread_command_skills.py +54 -0
- package/server/tools/tests/test_thread_resolver.py +165 -0
- package/server/tools/tests/test_tier1_schema.py +296 -0
- package/server/tools/thread_resolver.py +75 -0
- package/server/tools/tylor.py +374 -0
- package/server/tools/ui.py +38 -0
- package/server/ui_server.py +292 -0
- package/server/validate.py +237 -0
- package/skills/add-skill/SKILL.md +37 -0
- package/skills/afk-status/SKILL.md +20 -0
- package/skills/bmad/SKILL.md +14 -0
- package/skills/help-agent101/SKILL.md +48 -0
- package/skills/kill-thread/SKILL.md +35 -0
- package/skills/list-threads/SKILL.md +35 -0
- package/skills/new-thread/SKILL.md +35 -0
- package/skills/recall/SKILL.md +39 -0
- package/skills/run/SKILL.md +33 -0
- package/skills/set-sandbox/SKILL.md +38 -0
- package/skills/switch-thread/SKILL.md +38 -0
- package/ui/claude-logo.png +0 -0
- package/ui/index.html +1314 -0
package/.aws-setup.sh
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Claude Platform on AWS Setup for agent101
|
|
3
|
+
|
|
4
|
+
# AWS Credentials Configuration
|
|
5
|
+
# Using existing credentials in ~/.aws/credentials
|
|
6
|
+
export AWS_PROFILE=default
|
|
7
|
+
export AWS_REGION=us-east-1
|
|
8
|
+
|
|
9
|
+
# Claude Platform on AWS Configuration
|
|
10
|
+
export CLAUDE_CODE_USE_ANTHROPIC_AWS=1
|
|
11
|
+
export ANTHROPIC_AWS_WORKSPACE_ID=wrkspc_01C19h6yMnj1V4X6Uo3VUrjj
|
|
12
|
+
export ANTHROPIC_AWS_BASE_URL=https://aws-external-anthropic.us-east-1.api.aws
|
|
13
|
+
|
|
14
|
+
# Model versions (optional - uses latest if not set)
|
|
15
|
+
# export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-7
|
|
16
|
+
# export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-6
|
|
17
|
+
# export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5
|
|
18
|
+
|
|
19
|
+
# Refresh credentials if they expire
|
|
20
|
+
export AWS_AUTH_REFRESH="aws sso login --profile ${AWS_PROFILE}"
|
|
21
|
+
|
|
22
|
+
echo "β Claude Platform on AWS environment configured"
|
|
23
|
+
echo " Workspace ID: $ANTHROPIC_AWS_WORKSPACE_ID"
|
|
24
|
+
echo " Region: $AWS_REGION"
|
|
25
|
+
echo " Auth method: AWS credentials (SigV4)"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tylor",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Tylor β the tailor to your threads. Eliminates Claude session death with persistent named threads, silent code indexing, a live thread visualizer, agent personas, and AFK autonomous execution.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "GunjanGrunge"
|
|
7
|
+
},
|
|
8
|
+
"repository": "https://github.com/GunjanGrunge/tylor",
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"keywords": [
|
|
11
|
+
"claude",
|
|
12
|
+
"claude-code",
|
|
13
|
+
"mcp",
|
|
14
|
+
"plugin",
|
|
15
|
+
"threads",
|
|
16
|
+
"memory",
|
|
17
|
+
"persistence",
|
|
18
|
+
"agents",
|
|
19
|
+
"session"
|
|
20
|
+
],
|
|
21
|
+
"homepage": "https://github.com/GunjanGrunge/tylor#readme"
|
|
22
|
+
}
|
package/.mcp.json
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"agent101": {
|
|
4
|
+
"type": "stdio",
|
|
5
|
+
"command": "sh",
|
|
6
|
+
"args": [
|
|
7
|
+
"-c",
|
|
8
|
+
"_P=\"${CLAUDE_PLUGIN_ROOT:-}\"; if [ -z \"$_P\" ]; then for _D in \"$HOME/.claude/plugins/GunjanGrunge/tylor\" \"$HOME/.claude/plugins/cache/GunjanGrunge/tylor/\"[0-9]*/ \"$HOME/.claude/plugins/cache/gunjangrunge/tylor/\"[0-9]*/; do [ -f \"$_D/server/main.py\" ] && { _P=\"$_D\"; break; }; done; fi; [ -n \"$_P\" ] || { echo 'Tylor: plugin root not found' >&2; exit 1; }; _VENV=\"$HOME/.tylor/venv\"; if [ ! -f \"$_VENV/bin/python3\" ] && [ ! -f \"$_VENV/Scripts/python3.exe\" ] && [ ! -f \"$_VENV/Scripts/python.exe\" ]; then python3 -m venv \"$_VENV\" && \"$_VENV/bin/pip\" install -q -r \"$_P/server/requirements.txt\" 2>&1 | tail -2; fi; _PY=\"$_VENV/bin/python3\"; [ -f \"$_PY\" ] || _PY=\"$_VENV/Scripts/python3.exe\"; [ -f \"$_PY\" ] || _PY=\"$_VENV/Scripts/python.exe\"; cd \"$_P\" && exec \"$_PY\" -m server.main"
|
|
9
|
+
]
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
package/AGENTS.md
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
<claude-mem-context>
|
|
2
|
+
# Memory Context
|
|
3
|
+
|
|
4
|
+
# [agent101] recent context, 2026-05-13 8:41pm GMT+5:30
|
|
5
|
+
|
|
6
|
+
Legend: π―session π΄bugfix π£feature πrefactor β
change π΅discovery βοΈdecision π¨security_alert πsecurity_note
|
|
7
|
+
Format: ID TIME TYPE TITLE
|
|
8
|
+
Fetch details: get_observations([IDs]) | Search: mem-search skill
|
|
9
|
+
|
|
10
|
+
Stats: 50 obs (17,754t read) | 464,852t work | 96% savings
|
|
11
|
+
|
|
12
|
+
### May 12, 2026
|
|
13
|
+
S72 Run BMAD Implementation Readiness Check for agent101 project (May 12 at 5:08 PM)
|
|
14
|
+
S73 BMAD Implementation Readiness Check β Epic Coverage Validation Results for agent101 (May 12 at 5:12 PM)
|
|
15
|
+
S74 Execute /bmad-create-architecture command to design and validate complete system architecture for agent101 project with 100% feature requirement coverage. (May 12 at 5:16 PM)
|
|
16
|
+
S75 Story 2.6 model router 3-tier fallback β Story 2.7 kill_thread async Bedrock Opus summarizer implementation (May 12 at 5:25 PM)
|
|
17
|
+
251 10:02p β
sprint-status.yaml updated: story 2-7 moved from in-progress to review
|
|
18
|
+
S76 Story 2.8 implementation β Claude Code lifecycle hooks (SessionStart, Stop, PostToolUse) for agent101 thread management plugin (May 12 at 10:02 PM)
|
|
19
|
+
252 10:33p π΅ Thread Management Epic Stories 2.9 & 2.10 Reviewed
|
|
20
|
+
253 " π΅ agent101 install.sh Full Implementation Reviewed
|
|
21
|
+
254 10:34p π£ Story 2.8 Implementation Artifact Created
|
|
22
|
+
255 " β
Story 2.8 Sprint Status Advanced from Backlog to In-Progress
|
|
23
|
+
256 " π£ Story 2.8 Hook Tests Written (TDD)
|
|
24
|
+
257 10:35p π΅ Story 2.8 Tests Confirmed Red β Implementation Files Not Yet Created
|
|
25
|
+
258 " π£ server/tools/hooks.py Implemented
|
|
26
|
+
259 10:36p π£ Three Claude Code Hook Shell Scripts Created
|
|
27
|
+
260 " π£ Story 2.8 Hook Tests All Green β Implementation Complete
|
|
28
|
+
261 " π΅ Hook Shell Scripts Pass Syntax Check; Full Regression Suite Running Clean
|
|
29
|
+
262 " π£ Full Regression Suite Passes β 163/163 Tests Green
|
|
30
|
+
263 10:37p π£ Story 2.8 Complete β All Tasks Done, Status Advanced to Review
|
|
31
|
+
264 " β
Sprint Status Updated β Story 2.8 Marked Review
|
|
32
|
+
S77 Story 2.9: Thread Management Slash Commands β implement 5 SKILL.md files for /new-thread, /switch-thread, /kill-thread, /list-threads, /recall (May 12 at 10:37 PM)
|
|
33
|
+
265 10:43p π΅ Thread Management Skill Specs in epics.md
|
|
34
|
+
266 " π΅ agent101 BMAD Skill Library Structure
|
|
35
|
+
267 " π΅ agent101 Architecture: Two-Tier MCP Tool System with Sprint Status
|
|
36
|
+
268 10:44p β
Story 2.9 Implementation Artifact Created, Sprint Status Set to In-Progress
|
|
37
|
+
269 " π£ Test Suite Created for Story 2.9 Thread Command Skill Files
|
|
38
|
+
270 " π΅ TDD Red Phase Confirmed: All 5 Thread Command SKILL.md Files Missing
|
|
39
|
+
271 10:45p π£ All 5 Thread Management SKILL.md Files Created
|
|
40
|
+
272 " π΄ One Test Failing: Case-Sensitivity Mismatch on "recovery" Phrase Check
|
|
41
|
+
273 " π΄ All 5 Story 2.9 Tests Pass: "recovery" Phrase Added to All SKILL.md Error Sections
|
|
42
|
+
274 " π£ Full Regression Suite Green: 56 Tests Pass After Story 2.9
|
|
43
|
+
275 " π£ Story 2.9 Complete: Full Server Test Suite 168/168 Passing
|
|
44
|
+
276 10:46p β
Story 2.9 Moved to Review Status with Full Completion Record
|
|
45
|
+
277 " β
Sprint Status YAML Confirmed: Story 2.9 at "review"
|
|
46
|
+
S78 Code review of Story 2.9: Thread Management Slash Commands using bmad-code-review skill (May 12 at 10:47 PM)
|
|
47
|
+
278 10:56p π΅ bmad-code-review Skill Architecture Revealed
|
|
48
|
+
279 " π΅ bmad-code-review Workflow Config: Minimal Customization Active
|
|
49
|
+
280 " π΅ bmad-code-review Step-01: 5-Tier Review Target Resolution Cascade
|
|
50
|
+
281 10:57p π£ Story 2.9: Thread Management Slash Commands Implemented
|
|
51
|
+
282 " π΅ agent101 Architecture: WebSocket UI, Lifecycle Hooks, and Thread Visualizer
|
|
52
|
+
283 " π΅ /recall Skill Depends on OpenSearch and Bedrock for Semantic Memory
|
|
53
|
+
284 " π΅ bmad-code-review Step-02: Parallel Adversarial Review Layer Architecture
|
|
54
|
+
S79 Code review of Story 2.9 (Thread Management Slash Commands) β one bug found and fixed (May 12 at 10:58 PM)
|
|
55
|
+
285 11:00p π΄ Fixed /kill-thread Misleading Confirmation Wording
|
|
56
|
+
286 " π΄ kill-thread Fix Verified: 5/5 Tests Pass After Wording Change
|
|
57
|
+
S80 Implementation and completion of Story 2.10 (Fuzzy Thread Name Matching) following Story 2.9 code review (May 12 at 11:00 PM)
|
|
58
|
+
287 11:01p π΅ Story 2.10: Fuzzy Thread Name Matching β Next Sprint Story
|
|
59
|
+
288 " π΅ tylor.py MCP Tool Implementations and Story 2.10 Gap Confirmed
|
|
60
|
+
289 11:02p β
Story 2.10 Implementation Artifact Created, Sprint Status Set to In-Progress
|
|
61
|
+
290 " π£ Story 2.10: Thread Resolver Tests Written (TDD RED Phase)
|
|
62
|
+
291 11:03p π΅ Story 2.10 TDD RED Confirmed: 5 Failures, MCP Error Code Verified
|
|
63
|
+
292 " π£ server/tools/thread_resolver.py Implemented
|
|
64
|
+
293 " π£ switch_thread_by_name MCP Tool Wired into tylor.py
|
|
65
|
+
294 " π£ Story 2.10 TDD GREEN: All 5 Resolver Tests Pass
|
|
66
|
+
295 11:04p β
test_tier1_schema.py Updated to Include switch_thread_by_name
|
|
67
|
+
296 " β
skills/switch-thread/SKILL.md Updated for Fuzzy Query Flow
|
|
68
|
+
297 " π£ Story 2.10 Complete: Full Regression Suite Passes at 174 Tests
|
|
69
|
+
298 11:05p β
Story 2.10 Implementation Artifact Finalized, Status Set to Review
|
|
70
|
+
### May 13, 2026
|
|
71
|
+
299 10:46a π£ Story 4.1 ECC Tool Modules β Artifact Created and RED Tests Written
|
|
72
|
+
300 " π΅ agent101 Project Sprint Status Snapshot
|
|
73
|
+
S81 Continue with next story β Story 4.1: ECC Tool Modules Initial 5 Categories (Epic 4, agent101 project) (May 13 at 10:48 AM)
|
|
74
|
+
**Investigated**: Sprint status YAML and backlog to determine next story; Story 4.1 acceptance criteria for ECC lazy-loadable tool categories; existing registry.py stub; FastMCP tool registration patterns; McpError/INVALID_PARAMS error handling conventions already used in the codebase.
|
|
75
|
+
|
|
76
|
+
**Learned**: - ECC tool categories (ecc/web, ecc/data, ecc/presentation, ecc/diagrams, ecc/pipeline) are implemented as importlib-loaded Python modules under server/tools/ecc/, each registering tools via @mcp.tool() on the shared mcp singleton.
|
|
77
|
+
- load_skill_tools() validates category keys against ECC_GROUPS dict, raises McpError(ErrorData(INVALID_PARAMS, ...)) for unknown groups, then calls importlib.import_module() and returns {tool_group, status: "loaded", tools: sorted(list)}.
|
|
78
|
+
- list_registry() remains a ToolError stub, deferred to Story 4.2.
|
|
79
|
+
- sprint-status.yaml reads were showing a cached "backlog" value (Chunk ID: 1376f9) even after successful patches β a tool-level read cache artifact; actual disk file was correctly updated.
|
|
80
|
+
|
|
81
|
+
**Completed**: - Created story artifact: _bmad-output/implementation-artifacts/4-1-ecc-tool-modules-initial-5-categories.md
|
|
82
|
+
- Updated sprint-status.yaml: epic-4 and 4-1-ecc-tool-modules-initial-5-categories both moved from backlog β in-progress β review
|
|
83
|
+
- Created server/tools/ecc/__init__.py, web.py, data.py, presentation.py, diagrams.py, pipeline.py with lightweight MCP-registered tool stubs
|
|
84
|
+
- Updated server/tools/registry.py: replaced ToolError stub with real ECC_GROUPS dispatch + importlib loading
|
|
85
|
+
- Created server/tools/tests/test_ecc_tools.py: 6 tests (5 parametrized group loads + 1 unknown category error)
|
|
86
|
+
- TDD REDβGREEN complete: all 6 ECC tests pass; full suite 201/201 pass
|
|
87
|
+
- Story artifact updated with completion notes, file list, dev log, all tasks checked, status set to review
|
|
88
|
+
|
|
89
|
+
**Next Steps**: Story 4.1 is fully complete and in review. Next story is Story 4.2: Two-Tier Tool Manifest and Skill Registry Client β implementing list_registry() with registry.json reading and expanding load_skill_tools() for external skill groups beyond the hardcoded ECC_GROUPS.
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
Access 465k tokens of past work via get_observations([IDs]) or mem-search skill.
|
|
93
|
+
</claude-mem-context>
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# agent101 β Claude Code Plugin (TYLOR Thread Manager)
|
|
2
|
+
|
|
3
|
+
## Project Overview
|
|
4
|
+
|
|
5
|
+
agent101 is a Claude Code plugin β Personal Cognitive Infrastructure β that eliminates session death by giving Claude persistent, isolated, named context scopes called **threads**. Built as a FastMCP Python server with a local Thread Visualizer UI.
|
|
6
|
+
|
|
7
|
+
## Architecture
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Claude Code (terminal)
|
|
11
|
+
βββ FastMCP server (server/main.py, stdio transport)
|
|
12
|
+
βββ Tier 1 tools: new_thread, switch_thread, kill_thread, list_threads, recall_memory
|
|
13
|
+
βββ Tier 2 tools (lazy): ECC skill modules (ecc/*/tools.py)
|
|
14
|
+
βββ aiohttp UI server (localhost:8765) β Thread Visualizer
|
|
15
|
+
βββ Storage: DynamoDB single-table (Personal) or local JSON (Project mode)
|
|
16
|
+
|
|
17
|
+
Claude Code hooks (hooks/)
|
|
18
|
+
βββ session-start.sh β surfaces active thread context on session open
|
|
19
|
+
βββ session-checkpoint.sh β checkpoints thread state on Stop
|
|
20
|
+
βββ kill-thread-trigger.sh β dispatches Bedrock Opus summarization on KillThread
|
|
21
|
+
|
|
22
|
+
Thread Visualizer (ui/)
|
|
23
|
+
βββ D3.js force graph, glassmorphism bubbles, silk SVG bezier curves, Vanta.js bg
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Directory Structure
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
agent101/
|
|
30
|
+
βββ server/ # FastMCP Python server
|
|
31
|
+
β βββ main.py # Entry point β co-starts FastMCP + aiohttp
|
|
32
|
+
β βββ config.py # pydantic-settings (reads .env)
|
|
33
|
+
β βββ ui_server.py # aiohttp web server (localhost:8765)
|
|
34
|
+
β βββ tools/ # MCP tool modules
|
|
35
|
+
β β βββ tylor.py # Thread lifecycle tools (new/switch/kill/recall/list)
|
|
36
|
+
β β βββ ui.py # open_threads_ui tool
|
|
37
|
+
β β βββ agents.py # spawn_agent, list_personas
|
|
38
|
+
β β βββ registry.py # load_skill_tools, list_registry
|
|
39
|
+
β β βββ executor.py # sandboxed bash execution
|
|
40
|
+
β β βββ router.py # 3-tier model router
|
|
41
|
+
β βββ storage/ # Storage clients
|
|
42
|
+
β β βββ dynamo.py # DynamoDB single-table client
|
|
43
|
+
β β βββ json_store.py # Project JSON mode (zero-infra)
|
|
44
|
+
β β βββ s3.py # S3 blob storage (>400KB)
|
|
45
|
+
β β βββ opensearch.py # Vector search (Titan Embeddings v2)
|
|
46
|
+
β βββ personas/ # Agent persona definitions
|
|
47
|
+
βββ ui/ # Thread Visualizer (served by aiohttp)
|
|
48
|
+
β βββ index.html # D3.js force graph + WebSocket client
|
|
49
|
+
βββ hooks/ # Claude Code lifecycle hook scripts
|
|
50
|
+
βββ skills/ # Claude Code slash commands
|
|
51
|
+
β βββ new-thread/
|
|
52
|
+
β βββ switch-thread/
|
|
53
|
+
β βββ kill-thread/
|
|
54
|
+
β βββ list-threads/
|
|
55
|
+
β βββ recall/
|
|
56
|
+
β βββ add-skill/
|
|
57
|
+
β βββ help-agent101/
|
|
58
|
+
βββ ecc/ # ECC tool modules (lazy-loaded Tier 2)
|
|
59
|
+
β βββ web/, data/, presentation/, diagrams/, pipeline/
|
|
60
|
+
βββ install.sh # One-command install
|
|
61
|
+
βββ registry.json # Installed skill index
|
|
62
|
+
βββ pytest.ini # Test config (asyncio_mode = auto)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Starting the Server
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
cd server
|
|
69
|
+
python3 -m venv .venv && source .venv/bin/activate
|
|
70
|
+
pip install -r requirements.txt
|
|
71
|
+
python3 -m server.main # starts FastMCP on stdio + aiohttp on :8765
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Environment Setup
|
|
75
|
+
|
|
76
|
+
Copy `.env` to `server/.env`. Required keys:
|
|
77
|
+
- `AWS_REGION`, `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`
|
|
78
|
+
- `DYNAMO_TABLE` (default: agent101)
|
|
79
|
+
- `OPENSEARCH_HOST`, `OPENSEARCH_PORT`
|
|
80
|
+
- `BEDROCK_REGION` (default: us-east-1)
|
|
81
|
+
|
|
82
|
+
## Storage Modes
|
|
83
|
+
|
|
84
|
+
- **Project mode** (default): threads stored at `{cwd}/.agent101/threads.json` β zero AWS required
|
|
85
|
+
- **Personal mode**: DynamoDB-backed, cross-project, cross-machine
|
|
86
|
+
|
|
87
|
+
## Key Conventions
|
|
88
|
+
|
|
89
|
+
- All MCP tools use explicit `thread_id` parameter β never hidden server-side state
|
|
90
|
+
- All errors raised as `McpError` β never return error dicts
|
|
91
|
+
- DynamoDB items include mandatory fields: `PK`, `SK`, `CreatedAt`, `UpdatedAt`, `Version`
|
|
92
|
+
- MCP tool names: `verb_noun` snake_case β immutable once registered
|
|
93
|
+
- Status colors in UI: cyan=active, amber=awaiting, purple=running, dim=idle
|
|
94
|
+
|
|
95
|
+
## Running Tests
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
python3 -m pytest server/tests/ -v
|
|
99
|
+
```
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Claude Platform on AWS Setup Guide
|
|
2
|
+
|
|
3
|
+
You've successfully configured agent101 to use Claude Platform on AWS. Here's what was set up:
|
|
4
|
+
|
|
5
|
+
## β Completed Setup
|
|
6
|
+
|
|
7
|
+
### 1. AWS Credentials
|
|
8
|
+
- **Status**: Active β
|
|
9
|
+
- **Profile**: `default` (from `~/.aws/credentials`)
|
|
10
|
+
- **User**: `bedrock_agent` in account `751289209169`
|
|
11
|
+
- **Region**: `us-east-1`
|
|
12
|
+
|
|
13
|
+
### 2. Environment Variables Configured
|
|
14
|
+
|
|
15
|
+
Added to `server/.env`:
|
|
16
|
+
```bash
|
|
17
|
+
CLAUDE_CODE_USE_ANTHROPIC_AWS=1
|
|
18
|
+
ANTHROPIC_AWS_WORKSPACE_ID=wrkspc_01C19h6yMnj1V4X6Uo3VUrjj
|
|
19
|
+
ANTHROPIC_AWS_BASE_URL=https://aws-external-anthropic.us-east-1.api.aws
|
|
20
|
+
AWS_PROFILE=default
|
|
21
|
+
AWS_REGION=us-east-1
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 3. Authentication Method
|
|
25
|
+
- **Type**: AWS SigV4 (recommended for teams)
|
|
26
|
+
- **Credentials location**: `~/.aws/credentials`
|
|
27
|
+
- **Workspace**: `wrkspc_01C19h6yMnj1V4X6Uo3VUrjj`
|
|
28
|
+
|
|
29
|
+
## π Next Steps
|
|
30
|
+
|
|
31
|
+
### Option A: Run Claude Code CLI with AWS
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# 1. Source the setup script
|
|
35
|
+
source .aws-setup.sh
|
|
36
|
+
|
|
37
|
+
# 2. Verify Claude Code can see AWS
|
|
38
|
+
code /status
|
|
39
|
+
|
|
40
|
+
# 3. Start your project
|
|
41
|
+
code "your question here"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Option B: Run agent101 FastMCP Server
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# 1. Navigate to server directory
|
|
48
|
+
cd server
|
|
49
|
+
|
|
50
|
+
# 2. Load AWS environment
|
|
51
|
+
source ../.aws-setup.sh
|
|
52
|
+
|
|
53
|
+
# 3. Install dependencies (if not already done)
|
|
54
|
+
python3 -m venv .venv
|
|
55
|
+
source .venv/bin/activate
|
|
56
|
+
pip install -r requirements.txt
|
|
57
|
+
|
|
58
|
+
# 4. Start the FastMCP server
|
|
59
|
+
python3 -m server.main
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Option C: Use Agent SDK
|
|
63
|
+
|
|
64
|
+
Your FastMCP server can now use Claude Platform on AWS by reading these environment variables:
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
import os
|
|
68
|
+
from anthropic import Anthropic
|
|
69
|
+
|
|
70
|
+
# These are automatically read from .env
|
|
71
|
+
client = Anthropic(
|
|
72
|
+
api_key=os.getenv("ANTHROPIC_AWS_API_KEY") or None, # Falls back to AWS SigV4
|
|
73
|
+
base_url="https://aws-external-anthropic.us-east-1.api.aws"
|
|
74
|
+
)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## π Troubleshooting
|
|
78
|
+
|
|
79
|
+
### If you see "403 Forbidden" or "AccessDenied"
|
|
80
|
+
- Check IAM permissions for your user in AWS Console
|
|
81
|
+
- Verify role has `aws-external-anthropic:InvokeModel` permission
|
|
82
|
+
- Check that workspace ID is correct
|
|
83
|
+
|
|
84
|
+
### If Claude Code is still hitting `api.anthropic.com`
|
|
85
|
+
- Verify `CLAUDE_CODE_USE_ANTHROPIC_AWS=1` is set (not 0 or blank)
|
|
86
|
+
- Check that `CLAUDE_CODE_USE_BEDROCK` and `CLAUDE_CODE_USE_FOUNDRY` are not set
|
|
87
|
+
- Run `code /status` to confirm resolved provider
|
|
88
|
+
|
|
89
|
+
### If credentials expire
|
|
90
|
+
- Re-run the setup script or manually re-export variables
|
|
91
|
+
- Credentials from `~/.aws/credentials` should work without refresh needed
|
|
92
|
+
|
|
93
|
+
## π Additional Resources
|
|
94
|
+
|
|
95
|
+
- [Claude Platform on AWS docs](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws)
|
|
96
|
+
- [IAM action reference](https://platform.claude.com/docs/en/api/claude-platform-on-aws-iam-actions)
|
|
97
|
+
- [Claude models overview](https://platform.claude.com/docs/en/about-claude/models/overview)
|
|
98
|
+
- [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching)
|
|
99
|
+
|
|
100
|
+
## π Security Notes
|
|
101
|
+
|
|
102
|
+
- Your API key is in `server/.env` (Git ignored)
|
|
103
|
+
- AWS credentials come from `~/.aws/credentials`
|
|
104
|
+
- Keep workspace ID confidential
|
|
105
|
+
- Rotate API keys periodically if using that method instead of SigV4
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Gunjan Sarkar
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="assets/tylor_logo.png" alt="Tylor Logo" width="150">
|
|
3
|
+
<h1>Tylor</h1>
|
|
4
|
+
<p><strong>The Tailor to Your Threads</strong></p>
|
|
5
|
+
<p><em>Give Claude Code persistent memory, laser-focused context, and an autonomous team of specialists.</em></p>
|
|
6
|
+
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
[](#)
|
|
9
|
+
[](#)
|
|
10
|
+
[](#)
|
|
11
|
+
[](#)
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
Tylor transforms your Claude Code experience from a single-shot terminal interaction into a **persistent, intelligent workspace**.
|
|
17
|
+
|
|
18
|
+
Every time you open Claude Code, you normally start from zero. Tylor fixes that. It organizes your work into **threads**βisolated, named workspaces that survive restarts and reboots. It remembers every decision, every line of code, and every discussion, so you never have to repeat yourself.
|
|
19
|
+
|
|
20
|
+
**No database. No cloud account. No configuration. Just install and go.**
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## π¨ How It Works
|
|
25
|
+
|
|
26
|
+
<div align="center">
|
|
27
|
+
<img src="assets/tylor_threads_concept.png" alt="Tylor Threads Architecture" width="800">
|
|
28
|
+
<p><em>Tylor weaves parallel, persistent memory threads and orchestrates specialist sub-agents.</em></p>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## β¨ Features
|
|
34
|
+
|
|
35
|
+
### π§ Persistent Memory
|
|
36
|
+
Tylor completely eliminates the "context reset." Shut down your computer, close your terminal, and come back a week laterβClaude will pick up exactly where you left off.
|
|
37
|
+
|
|
38
|
+
### ποΈ Context Isolation (Threads)
|
|
39
|
+
Work in parallel without context bleed. Discuss frontend components in a `Frontend` thread and database schemas in a `Backend` thread. By isolating context, token usage stays low, and Claude's focus stays incredibly sharp.
|
|
40
|
+
|
|
41
|
+
### π€ Intelligent Orchestration
|
|
42
|
+
You don't need to micromanage. Claude acts as the orchestrator. If you ask it to review architecture, it will dynamically load its `cto` persona. If you ask it to write a PRD, it natively invokes the `bmad` skill framework to get the job done.
|
|
43
|
+
|
|
44
|
+
### π Infinite Extensibility (Lazy-Loading)
|
|
45
|
+
Tylor is built on a production-hardened ADK-pattern harness. You can register hundreds of domain-specific ECC skills (like `ecc/web`, `ecc/data`) via the `/add-skill` command. Tylor **lazy-loads** only the tools required for the current prompt, giving you massive capability scaling without ever blowing up Claude's token context window.
|
|
46
|
+
|
|
47
|
+
### ποΈ Autonomous AFK Sandboxing
|
|
48
|
+
Declare a sandbox for your thread and let Claude work autonomously. Assign large, complex tasks and let Claude execute them while you step away from the keyboard.
|
|
49
|
+
|
|
50
|
+
### π Visual Dashboard
|
|
51
|
+
Monitor your entire workspace through a beautiful, locally hosted web UI. Track active threads, review past conversations, and watch autonomous agent progress in real-time.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## π Installation
|
|
56
|
+
|
|
57
|
+
Tylor installs seamlessly into your Claude Code, Claude Desktop, GitHub Copilot, Antigravity, or VSCode Claude extension environment. Requires Python 3.8+.
|
|
58
|
+
|
|
59
|
+
### β‘ Option 1: The One-Line Installer (Recommended)
|
|
60
|
+
|
|
61
|
+
If you have Node.js installed, you can configure Tylor instantly across all your clients without manually cloning the repository. Simply run:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npx tylor-mcp
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### π» Option 2: Manual Git Clone
|
|
68
|
+
|
|
69
|
+
**macOS / Linux / WSL:**
|
|
70
|
+
```bash
|
|
71
|
+
git clone https://github.com/GunjanGrunge/tylor ~/.claude/plugins/GunjanGrunge/tylor
|
|
72
|
+
python3 ~/.claude/plugins/GunjanGrunge/tylor/install.py
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Windows:**
|
|
76
|
+
```powershell
|
|
77
|
+
git clone https://github.com/GunjanGrunge/tylor %USERPROFILE%\.claude\plugins\GunjanGrunge\tylor
|
|
78
|
+
python %USERPROFILE%\.claude\plugins\GunjanGrunge\tylor\install.py
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Step 3: Verify
|
|
82
|
+
|
|
83
|
+
1. Restart your Claude, GitHub Copilot, or Antigravity client completely (close the terminal/app and reopen it).
|
|
84
|
+
2. Type `/help-agent101` in your prompt (or use Copilot Chat / `/mcp show`).
|
|
85
|
+
3. If you see the capability index, Tylor is fully operational!
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## πΉοΈ Quick Start
|
|
90
|
+
|
|
91
|
+
Creating your first persistent workflow is incredibly simple:
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
/new-thread Authentication β Create a persistent workspace
|
|
95
|
+
/run we need to implement JWT based authentication
|
|
96
|
+
|
|
97
|
+
/new-thread Dashboard UI β Create an isolated UI thread
|
|
98
|
+
/run build a react dashboard with a sidebar
|
|
99
|
+
|
|
100
|
+
/switch-thread Authentication β Instantly switch context back to Auth
|
|
101
|
+
/run add refresh token logic
|
|
102
|
+
|
|
103
|
+
/list-threads β View your workspace status
|
|
104
|
+
/open-threads-ui β Launch the visual dashboard
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## π οΈ Command Reference
|
|
110
|
+
|
|
111
|
+
Tylor exposes a suite of powerful commands directly within Claude:
|
|
112
|
+
|
|
113
|
+
| Command | Description |
|
|
114
|
+
|---|---|
|
|
115
|
+
| `/new-thread <name>` | Create a named thread and seamlessly switch future work into it. |
|
|
116
|
+
| `/switch-thread <name>` | Switch context to an existing thread (fuzzy matching supported). |
|
|
117
|
+
| `/list-threads` | Show all available threads alongside their status and activity. |
|
|
118
|
+
| `/kill-thread <name>` | Close a thread and dispatch asynchronous summarization. |
|
|
119
|
+
| `/recall` | Search through the deep semantic memory of your active thread. |
|
|
120
|
+
| `/add-skill` | Install a new skill package dynamically. |
|
|
121
|
+
| `/open-threads-ui` | Open the live, local thread visualizer UI in your browser. |
|
|
122
|
+
| `/set-sandbox <path>` | Declare specific filesystem roots for secure, autonomous execution. |
|
|
123
|
+
| `/afk-status` | Get real-time progress reports on current autonomous background tasks. |
|
|
124
|
+
|
|
125
|
+
> **Pro Tip:** You can also use shorthand aliases like `CT <name>` to create a thread or `SwThread <name>` to switch.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## π Sub-Agents & Personas
|
|
130
|
+
|
|
131
|
+
Tylor comes pre-equipped with specialist sub-agents. Claude will **automatically invoke** these personas based on the nature of your queryβno manual intervention required.
|
|
132
|
+
|
|
133
|
+
* **`cto`**: System architecture, tradeoffs, platform strategy, and engineering standards.
|
|
134
|
+
* **`code_agent`**: Senior software engineer laser-focused on shipping robust code and tests.
|
|
135
|
+
* **`analyst`**: Market research, data synthesis, and technical decision support.
|
|
136
|
+
* **`ceo`**: Product strategy, roadmap prioritization, and stakeholder framing.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## π License
|
|
141
|
+
|
|
142
|
+
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
|
|
143
|
+
|
|
144
|
+
<div align="center">
|
|
145
|
+
<p><em>Tylor β Tailoring the future of AI development.</em></p>
|
|
146
|
+
</div>
|
|
Binary file
|
|
Binary file
|
package/bin/tylor.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const { spawnSync } = require('child_process');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
|
|
5
|
+
const installPy = path.join(__dirname, '..', 'install.py');
|
|
6
|
+
const args = process.argv.slice(2);
|
|
7
|
+
|
|
8
|
+
console.log("π Running Tylor Installer...");
|
|
9
|
+
|
|
10
|
+
// Try `python` first (standard on Windows and some Unix systems)
|
|
11
|
+
let result = spawnSync('python', [installPy, ...args], { stdio: 'inherit' });
|
|
12
|
+
|
|
13
|
+
// Fallback to `python3` if `python` fails (standard on macOS/Linux)
|
|
14
|
+
if (result.error || result.status !== 0) {
|
|
15
|
+
result = spawnSync('python3', [installPy, ...args], { stdio: 'inherit' });
|
|
16
|
+
|
|
17
|
+
if (result.error) {
|
|
18
|
+
console.error("β Failed to launch the Tylor installer. Please ensure Python 3.8+ is installed on your system.");
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
process.exit(result.status);
|