The compose button was inside the left sidebar (position: absolute relative to .left-rail). Moved it outside the sidebar in the HTML and changed CSS from position: absolute to position: fixed so it sits at the top-right corner of the entire window. Verified with vision model (Qwen3.6-27B): "The compose button is located in the top-right corner of the entire window, just outside the main content area. It is not inside the sidebar." This is the first fix made using the visual eyes system — the agent could verify the change before Nick tests it.
Conductor
Self-contained social media manager. Desktop app, LAN, or Raspberry Pi. No cloud.
What it does
Conductor connects all your social media accounts into one app. Create posts, schedule content, track analytics, and generate thumbnails — all from your desktop. Your credentials stay on your machine.
Three ways to run it:
- Desktop — Open the app, use it, done. Primary mode.
- LAN — Serve the app on your local network so other devices can reach it. Toggle it in settings.
- Pi — The app helps you set up a Raspberry Pi to run Conductor 24/7. The desktop app stays in control.
Installation
Not yet available for public users. Conductor is in active development (
0.7.2— feature-rich with 16-phase gauntlet pipeline). Public installers arrive at1.0.0. Development builds are installed via~/.local/bin/conductorwith XDG-compliant desktop entry.
Linux (development builds)
The gauntlet pipeline installs Conductor locally after every verified build:
# Binary
~/.local/bin/conductor
# Desktop entry (appears in application menu)
~/.local/share/applications/com.guitarguynick.conductor.desktop
# Icons
~/.local/share/icons/hicolor/
The install is XDG/Freedesktop compliant.
macOS
# Open the DMG, drag to Applications. Done.
open Conductor-x.x.x.dmg
Windows
# Run the installer. Done.
msiexec /i Conductor-x.x.x.msi
Zero prerequisites. The app bundles everything it needs — the web runtime, the database, the TLS library, all of it. You don't install Rust, cargo, system libraries, or anything else. The app is the complete package.
Zero prerequisites. The app bundles everything — web runtime, database, TLS, all of it. Download, run, done.
Build from source
Developers only. The app bundles everything for users; this is for people who want to compile it themselves.
git clone https://github.com/ThingsCouldGetDicey/conductor.git
cd conductor
./setup.sh # Installs build tools (Rust, cargo tools, system libs)
just build # Build the desktop app base without installer bundling
The setup script is for BUILDING only. None of these tools are needed to run the finished app.
Self-contained release build
just release
# Output: target/release/bundle/
# ├── conductor-x.x.x.flatpak ← primary, self-contained, native feel
# ├── conductor_x.x.x_amd64.deb
# ├── conductor-x.x.x.x86_64.rpm
# └── ...
Flatpak via Flathub is the primary Linux format. Self-contained, native feel, installs from your software center like any other app. Permissive sandbox — full filesystem access, no restrictions that get in the way.
Architecture
Conductor is a Rust workspace with 13 isolated component crates. Each has its own version. If something breaks, only that crate is affected.
| Crate | What it does |
|---|---|
| core | Shared types, traits, error handling |
| config | Configuration loading and validation |
| platform | Platform API traits and shared logic |
| tiktok | TikTok API client |
| Instagram API client | |
| youtube | YouTube API client |
| content | Content engine, scheduling, pipeline |
| storage | SQLite persistence and migrations |
| thumbnail | Image processing and generation |
| ui | Tauri desktop UI (primary interface) |
| cli | Command-line for headless operation |
| lan | LAN serving mode (optional) |
| pi | Raspberry Pi setup assistant (optional) |
Development Workflow
All Conductor development follows Constitutional Spec-Driven Development (C-SDD) — see specs/governance/conductor-workflow.md for the full methodology.
5 phases: Specify → Plan → Tasks → Implement → Validate. Each phase has a gate. No gate = no proceed.
Key tracking files:
specs/governance/conductor-subsystems.md— Per-subsystem PRD, version, behaviour, changelogspecs/governance/conductor-criticisms.md— All feedback logged, tracked, resolvedspecs/governance/conductor-workflow.md— Full methodology, security constitution, evidence
Security constitution (non-negotiable): No secrets in code, all input untrusted, least privilege, dependencies pinned/audited, no auto-merge without human review, pre-commit secrets scanning, SAST as blocking gate, row-level data security, agent context reviewed by humans, runtime scanning.
Versioning
This project follows Semantic Versioning 2.0.0.
- All versions are 0.y.z until the product is live and serving real users
- 1.0.0 marks the first stable release
- Each component has its own version; a root version aggregates them
- Each UI subsystem has its own version tracked in
specs/governance/conductor-subsystems.md - Minor bumps (0.x.0) include PRD and README updates
Status
Current root/app version: 0.7.2
Current phase: V1-critical chain complete. Content ingestion, YouTube OAuth, scheduler storage/worker/notifications, resumable upload, command palette, and desktop notifications are implemented and tested. Awaiting Nick's real-YouTube end-to-end upload confirmation.
What exists now:
- Tauri 2 + Svelte 5 desktop app with left-rail navigation and compose drawer.
- Content Library with ffmpeg-based metadata extraction and duplicate detection.
- YouTube OAuth backend (PKCE, refresh token persistence, access-token refresh).
- Scheduler: save/cancel posts, 30s worker, status transitions, desktop notifications on publish/fail.
- YouTube resumable upload implementation with streaming file reads.
- Keyboard shortcuts (Ctrl+D/L/3/4/5/,/, Ctrl+Shift+E) and searchable command palette (Ctrl+K).
- Auto-saving composer, concrete dates, no-shame language, and status indicators.
- GitHub CI as full technical source of truth: Rust format/lint/tests, frontend tests/build, Tauri no-bundle build, dependency/security review, review-surface, brand-surface, structural quality, architecture placement, and non-coder review pack.
What does not exist yet:
- Public installer packages / signed updater flow.
- Real scheduled upload verified against a live YouTube account.
- Pixel-accurate platform previews, command palette plugin-based actions.
- macOS/Windows packaging.
Next app-base task: Nick runtime review of installed binary; confirm scheduled upload to YouTube; then continue V1 backlog (platform previews, welcome-back re-entry).
Distance to v1.0.0
Conductor is still pre-release. 0.7.2 means the desktop shell and V1-critical pipeline exist, not that the product is 70% feature-complete. Compared with 1.0.0, the project is roughly at the core workflow wired / awaiting real-platform verification stage:
| Area | Current state | Needed for v1 |
|---|---|---|
| Desktop shell | Scaffold + route registry | Fully clickable, accessible, low-clutter app shell |
| Posting | Not implemented | Post/schedule to supported platforms |
| Accounts/auth | Not implemented | Secure account connection and token storage |
| Analytics | Not implemented | Useful per-platform analytics views |
| Daily brief | Not implemented | Brief generation and prioritised actions |
| Storage | Scaffold only | SQLite schema, migrations, data integrity checks |
| Release/update | Planned/scaffolded | Signed updater, installer packages, version surface, smoke update test |
| Governance/CI | Strong foundation | Continue enforcing as features land |
Practical estimate: Conductor is well before v1; the main win so far is that the foundation, gates, and architecture discipline are now strong enough to build features without accumulating avoidable structural debt.
License
MIT
Local install/update after green GitHub CI
When a pushed build changes application code or user-facing app behaviour and should update Nick's installed local app, first wait for GitHub CI to pass for the current HEAD, then run:
just install-local-after-green-ci
The command refuses to install if the latest GitHub CI run for the current commit is missing, pending, failed, or from a different HEAD. It then builds the release binary and updates ~/.local/bin/conductor plus the desktop entry. Docs/spec/process-only commits do not require a local reinstall.
MemPalace retrieval
Use specs/README.md first, then search MemPalace before opening large specs. After changing specs/research docs, run:
just mempalace-mine-changed
This mines only changed files into the conductor wing, avoiding expensive full-tree mining.
Gauntlet — Build Pipeline
Conductor uses the Gauntlet — a 10-phase automated build, verify, and deploy pipeline. Every code change runs through it. See specs/governance/gauntlet-prd.md.
| Phase | What |
|---|---|
| 0 | Deep research — best practices, component upgrades |
| 1 | Code-chain diagnosis — adapted PC troubleshooter |
| 2 | LLM verification chain (A+B+C+L4+D) |
| 3 | Fix all confirmed problems |
| 3.5 | Refactoring discipline |
| 4 | Deterministic gates (10 local + GitHub CI matrix) |
| 5 | Build + deploy to GitHub |
| 6 | Local install |
| 7 | Documentation (semver + README + function docs) |
| 8 | Report + learnings baked |
Version
0.7.2 — 16-phase gauntlet pipeline, XDG-compliant Linux install, UX + ethics audits, 7 platform connectors
Recent changes
0.7.2— UX audit fixes, semver sync, anti-hallucination checkpoint system0.7.1— Floating composer, notifications, accessibility, energy modes, command palette0.7.0— YouTube scheduling + 6 platform scaffolds0.6.2— YouTube scheduled upload (publishAt)0.6.0— Dev mode, mock layer, structured logging, fuzz/mutation gates0.5.5— Navigation refactor, Svelte 5 rune fix, Playwright E2E