Dashboard › opencode › Distillation
36a0ec55-1a25-4b81-969e-22639a32f29c["lore_tm_v1_65GPJFFr5CTexVlMGJa6sGStdMF59lriIxDcjIoPhkA","lore_tm_v1_sjEUYDMCJvfeyV6tEwZE9vyqU8nJpKi2DlkAEQpQd-E","lore_tm_v1_NgP9aUOA7M-Ai1-x4gEPDWYKoCvXsP6-pkIwbkl3xUg","lore_tm_v1_BMY1I41f4Zeo_nV0OiCmdMIQDQrtUgDltAKC3LeddTU","lore_tm_v1_JsbVvTkOvBTT1AiB4PVI5pWllwZZEVBosEBPghEibrQ","lore_tm_v1_k5Z3UmCQZgRKmhe_W_ZKUJefIS_mkIToMEs7_ZdHy8U","lore_tm_v1_GzQBmi_OgELIX0jxxTaqfy-ohxQhL6usMWUgvMZT2Po","lore_tm_v1_21xrjhi4faVT9i0kXAe2Q3I7SBTG1utp7CgVip_xIB4","lore_tm_v1_JdP1qoRgO8tFPxqAZe4Nmhv-QFIoSZ04FkYHMdvGSQ4","lore_tm_v1_YOS4_kR3rnT1pST6fwcht9lDU3EIcYQjTqsUyNE2xBk","lore_tm_v1_kiOm4WZotdndVhS938pMtrGPrtG1XIaUcNm88gtPJO8","lore_tm_v1_gb_qmJLu2UixPAZSpQXm1vvv0lAMOrrepzzJuSUJO4M","lore_tm_v1_jqXAdem6mWPY3sVnB_B_GN_RbAyQI3bmwV8kMC8IwtU","lore_tm_v1_QIu1z--ASiPrnDFyuiOeU7y2_SeldiDi6dtXjjZxMOM","lore_tm_v1_LFAZaVeRyvyq5pWH2KYdUGvGpCvtjSyXZhwzH6a_tMY","lore_tm_v1_U8M3tl4uZNXk6d0Plc3aMZ14iLTpa3kKb2dj7tI0Sac","lore_tm_v1_oXqdMgY7OkFfKJvDEqyW1NT0QzQdY8TDf3h2nc09lLI","lore_tm_v1_ecSSwPoL_bGXNl-_SS1lpKD0EBEgOk5MeLnuUgkDwdE","lore_tm_v1_9BwGJ1GEQR4rVvOnS_KzrWpHYO_dUyqnlj_QTbrcppA","lore_tm_v1_B2Kr4EaADZUuMLDNBnO8jJFs9bCjjNgb30qK7LBNYgw","lore_tm_v1_lgwYYXT1WfOGxHPO-z85HeIv2rVH9AUYR7KYPty4YAg","lore_tm_v1_sH9EM3tenmYLsZTtrmr6KUlw0flBYtOrDg-FFIVub0I","lore_tm_v1_4FlMfYqLggKZxbM2rHSMwQyOOZyEV3hVjcZij9WRHiI","lore_tm_v1_n7Ct8MhZbyz_Ks8BO-UE6u6wooq1JTTgm30mXZFS7rc","lore_tm_v1_-hsvuPDK2rgFG49RYAl5MY9oQKxlTSpTbV7vf0Vn3gQ","lore_tm_v1_SNzv7Jwac_fJdmXpLZfkYOEjv709xCb1lbrNHnl2ZXw","lore_tm_v1_h4G1QaTYFxZc0h2_Ld0jfb4fIEr8fYrMfgXYF7h6gcg","lore_tm_v1_IrhLqQPwdwe4He_BhRApmlI4WG-S-tVUvou_5EGTynY","lore_tm_v1_bUL-93myXuXTKigV0oeMyBmFX3lZH_7hG1r66rrOA6U","lore_tm_v1_J7IzN9ummJMe3T7ckr5cWmAFC0NAUpFY4IRzgSaks70","lore_tm_v1_5hTVlvIioxHFt9scJCl11_dtWsKkylN66zb09Ssg9OQ"]
model values always carry a provider prefix, e.g. "anthropic/claude-sonnet-4-6".mcp[name].command is an array of strings, never a single string, and type is required.skills is an object with paths and/or urls, not an array; references, agent, and command are objects keyed by alias/name; plugin is an array of strings or [name, options] tuples; and permission is either a string action or an object keyed by tool name.name is required, lowercase hyphen-separated, at most 64 characters, and must match the folder name.description are filtered out and never surfaced to the model. The description should explain what the skill does and when to use it, use third person, front-load concrete trigger keywords and filenames, and optionally use “Use ONLY when...” to avoid adjacent-topic activation.https://opencode.ai/config.json is the authoritative opencode config schema and should be fetched rather than guessed when an exact or undocumented field shape is needed; every opencode.json should declare "$schema": "https://opencode.ai/config.json".opencode.json, an agent, skill, plugin, or another config-time file, the user must quit and restart opencode./tmp/opencode/pty-plugin-smoke.ts was absent./home/byk/.local/share/opencode-v2-pilot/supervisor/ROOT-ACCEPTANCE.md:39 required running bun /tmp/opencode/pty-plugin-smoke.ts 10 times outside the auto-discovered plugin directory against a freshly built helper and isolated disposable supervisor, checking permissions, source identity, ownership, deletion, in-flight deletion, reservations, JSON envelopes, regex bounds, UTF-8 write bounds, pre-listener output bounds, saturated STOP bounds, transport framing, helper transfer, notifications, timeouts, and cleanup./home/byk/.local/share/opencode-v2-pilot/config/opencode/opencode.json contained only "$schema": "https://opencode.ai/config.json"./home/byk/.local/share/opencode-v2-pilot/config/opencode/service-v2-pilot.json configured hostname as 127.0.0.1 and port as 14097; it also contained a password, whose secret value is omitted./home/byk/.local/share/opencode-v2-pilot/opencode-v2.service had After=network.target opencode-pty-supervisor.service, Requires=opencode-pty-supervisor.service, and ExecCondition=/usr/local/libexec/opencode-pty-verify-readiness; it launched /home/byk/Code/opencode-v2-pilot/packages/cli/dist-v2-pilot-final/cli-node-linux-x64/bin/opencode2-node serve --hostname=0.0.0.0 --port=4096./home/byk/.local/share/opencode-v2-pilot/opencode-v2.service used User=byk, WorkingDirectory=/home/byk, Restart=always, RestartSec=5, Nice=-5, LimitNOFILE=65535, LimitNPROC=4096, MemoryMax=13G, MemoryHigh=12G, NoNewPrivileges=true, ProtectSystem=strict, ProtectHome=read-only, ReadWritePaths=/home/byk, and PrivateTmp=yes.26.4 SEA binary had to prove that the reviewed runtime gives the authenticated socket and cwd only to the fixed helper; Node 24 never satisfies this gate.ptrace, /proc descriptor access, inheritance, process control, or descriptor delegation to impersonate the service MainPID or use its socket; source tests do not prove this exact-host isolation./home/byk/.local/share/opencode-v2-pilot/CUTOVER.md was: 1. install /etc/systemd/system/opencode-v2.service; 2. run sudo systemctl daemon-reload; 3. run sudo systemctl stop opencode.service; 4. run sudo systemctl start opencode-v2.service; 5. verify /api/health, /, /site.webmanifest, /sw.js, and /openapi.json on port 4096; 6. call POST /api/plugin/await-activation and confirm followup and local-pty in GET /api/plugin; 7. observe browser traffic and run one follow-up plus one PTY smoke session; 8. enable opencode-v2.service only after all checks pass and retain disabled opencode.service for rollback./home/byk/.local/share/opencode-v2-pilot/CUTOVER.md was: 1. sudo systemctl stop opencode-v2.service; 2. sudo systemctl start opencode.service; 3. verify legacy health and browser UI on port 4096; 4. disable opencode-v2.service only after legacy health is confirmed. The V2 database remains isolated under /home/byk/.local/share/opencode-v2-pilot/data, and rollback does not rewrite or delete either database./home/byk/.local/share/opencode-v2-pilot/opencode-v2.service and /home/byk/.local/share/opencode-v2-pilot/CUTOVER.md still required the dormant root supervisor. The chosen change was to remove those dependencies and replace supervisor acceptance steps with direct byk PTY checks plus its documented process-group limitation; both files were patched successfully.DATA "3134860\n", killed process/group identifier 3134859, then reported END and CLOSE null SIGKILL./home/byk/Code/opencode-v2-pilot/packages/plugin/src/promise/plugin.ts defines Context.experimental.terminal as Pick<OpenCodeClient["experimental"]["persistentPty"], "read">; Context.tool is a ToolDomain, and Plugin.setup(context) returns Promise<Cleanup | void> | Cleanup | void./home/byk/Code/opencode-v2-pilot/packages/plugin/src/promise/tool.ts defines ToolContext as Omit<Tool.Context, "progress"> with asynchronous progress(update: Tool.Metadata): Promise<void>. ToolEditor supports list(), get(id), namespace(namespace), add(tool), update(id, update), and remove(id)./home/byk/.volta/bin/bun, version 1.3.14./home/byk/.local/share/opencode-v2-pilot/config/opencode/plugins/pty.ts./home/byk/.local/share/opencode-v2-pilot/config/opencode/test/followup.test.ts tests scheduling, listing, cancellation, delivery, and subagent rejection. It expects a 1s follow-up to deliver after 1100 ms as { sessionID: "top", text: "[scheduled follow-up] deliver", delivery: "steer" }, and expects subagent scheduling output to contain "disabled in subagents"./home/byk/.local/share/opencode-v2-pilot/config/opencode/test/pty.test.ts.