agentleFS
jamesblackwelljamesblackwell/falcondeck/AGENTS.md

falcondeck

AGENTS.md7 starsChanged 16 days agoMITView on GitHub

FalconDeck is a monorepo for a local daemon-first agent control plane:

The file

Show its rules and text

We split this AGENTS.md into the rules it gives an agent

21 rules. About 0 are common, 10 are distinctive, and 11 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈10

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 11

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use codex app-server for Codex, not the MCP server path.

    line 21
  2. Distinctive:

    Keep Claude on the CLI subprocess path, not the Agent SDK.

    line 22
  3. Distinctive:

    Default to same-folder workflows.

    line 24
  4. Very specific:

    Start shared protocol changes in crates/falcondeck-core and packages/client-core, then fan out.

    line 25
  5. Very specific:

    Keep secrets and real inventory out of git.

    line 49
  6. Very specific:

    Delete simulators, emulators, and Docker containers/images/volumes you created (xcrun simctl delete <udid>, docker rm/rmi/volume rm).

    line 56
  7. Very specific:

    Remove temp worktrees (git worktree remove), scratch clones, /tmp build dirs, smoke-test state dirs, and one-off EAS/Xcode archives you …

    line 57
  8. Very specific:

    Prefer reusing existing target/, DerivedData, and node_modules over fresh copies.

    line 58
  9. Distinctive:

    Only remove artifacts you created.

    line 59
  10. Very specific:

    Read docs/ before changing protocol or architecture.

    line 60
  11. Very specific:

    Read docs/EXTENSIONS.md before changing extension contracts, contribution points, permissions, storage, or host behaviour.

    line 61
  12. Very specific:

    Read docs/HARNESSES.md before changing harness (coding CLI) detection, version checks, upgrades, or the harness API surface.

    line 63
  13. Very specific:

    Read DESIGN.md before changing shared UI, branding, or iconography.

    line 65
  14. Very specific:

    Keep AGENTS.md short and operational.

    line 66
  15. Distinctive:

    Prefer semantic shared UI wrappers over ad hoc utility-heavy markup.

    line 67
  16. Distinctive:

    Run the repo-local autoreview on any significant change before handing off, not just headline features.

    line 76
  17. Distinctive:

    Verify accepted findings against the real code path, fix in-scope issues, rerun focused checks, and rerun autoreview until clean.

    line 81
  18. Distinctive:

    Keep the desktop and daemon flow solid.

    line 86
  19. Distinctive:

    Keep relay protocol and retention/reconnect behavior correct.

    line 87
  20. Distinctive:

    Keep remote web and mobile aligned with daemon/relay contracts.

    line 88
  21. Distinctive:

    Keep the public site simple and separate from product runtime concerns.

    line 89

≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
AGENTS.md

FalconDeck Agent Guide

Overview

FalconDeck is a monorepo for a local daemon-first agent control plane:

  • apps/desktop - Tauri shell around the daemon
  • apps/mobile - paired mobile client
  • apps/remote-web - paired browser client
  • apps/site - public marketing site
  • packages/client-core - shared TS protocol, types, helpers
  • packages/ui, packages/chat-ui - shared UI primitives
  • crates/falcondeck-core - shared Rust protocol and types
  • crates/falcondeck-daemon - local daemon, agent integration, unified event stream, relay bridge
  • crates/falcondeck-relay - public relay with encrypted replay storage and trusted-device pairing
  • ops/ansible - deploy and server config

Core Rules

  • The daemon is the product; desktop is just its shell.
  • Use codex app-server for Codex, not the MCP server path.
  • Keep Claude on the CLI subprocess path, not the Agent SDK.
  • Sessions and conversation history belong to the underlying agent. Do not add a FalconDeck conversation DB.
  • Default to same-folder workflows. Do not force worktrees.
  • Start shared protocol changes in crates/falcondeck-core and packages/client-core, then fan out.

Mobile App

  • React Native 0.83 + Expo SDK 55. Entry point: apps/mobile/src/entry.ts.
  • Package manager: npm (not pnpm). Always run npm install from monorepo root after changing any package.json.
  • react-native-nitro-modules must be a direct dependency (auto-linking needs it for the NitroModules pod).
  • plugins/withLibz.js links libz for react-native-mmkv's CRC32 — do not remove.
  • metro.config.js pins React, React Native, and React DOM resolution to the workspace root. Preserve this single-runtime setup; duplicate copies crash the mobile app.
  • babel.config.js must include react-native-unistyles/plugin with root: __dirname.
  • EAS builds: make mobile-build (ad-hoc install link) or eas build --profile preview-testflight (TestFlight).
  • OTA updates: make mobile-deploy pushes JS-only changes without rebuilding.
  • See docs/14-mobile-app.md for full build/deploy/troubleshooting reference.

Gotchas

  • The relay is stateful but not the conversation source of truth. The daemon and native agent storage are. Relay replay only smooths remote reconnects.
  • Pairings are short-lived onboarding state. Trusted devices are the long-lived relationship.
  • Relay replay may be pruned. When history is truncated, clients must recover from a fresh daemon snapshot, not assume full replay remains.
  • Relay sequence numbers must stay monotonic after pruning. Do not derive next_seq from the last retained update.
  • The daemon is currently localhost-first. falcondeck-daemon binds to 127.0.0.1 by default. Do not document direct-hosted web product behavior unless it actually exists.
  • Remote and mobile access depend on daemon RPC registration. Methods like snapshot.current, thread.detail, turn.start, and approval handlers are part of that contract; changing names or flow breaks clients.
  • Remote clients are clients of the daemon, not separate durable stores. Before adding remote-only persistence, check whether it belongs in the daemon or native agent storage instead.
  • Production relay storage uses Postgres. File-backed relay state still exists for local, test, and simple setups.
  • Keep secrets and real inventory out of git. ops/ansible/inventory/example and example vars are safe; real hosts, creds, and production inventory are not.

Working Guidelines

  • Packaged Mac deployment: commit, then make desktop-install-head (builds HEAD in a clean temp worktree, installs, restarts), or make desktop-restart (restart only). make desktop-install refuses a dirty tree: other agents' uncommitted edits once shipped and kept the phone offline. These are synchronous one-shot commands with a health check. Never use launchctl submit, KeepAlive jobs, or recurring automation for a one-off restart: a leftover job previously restarted the daemon 77 times and invalidated mobile sync tokens. Do not use broad pkill on the desktop binary; MCP helpers share it.
  • Multiple agents often work directly on main. Keep commits terse and scoped, commit completed work promptly, and exclude unrelated changes.
  • The Mac runs near-full on disk. Clean up after yourself before handing off:
    • Delete simulators, emulators, and Docker containers/images/volumes you created (xcrun simctl delete <udid>, docker rm/rmi/volume rm). Shut down booted simulators you started.
    • Remove temp worktrees (git worktree remove), scratch clones, /tmp build dirs, smoke-test state dirs, and one-off EAS/Xcode archives you produced.
    • Prefer reusing existing target/, DerivedData, and node_modules over fresh copies; don't create extra cargo target dirs or per-worktree npm installs unless needed, and delete them when done.
    • Only remove artifacts you created. Never prune shared caches, other agents' worktrees, or the user's simulators/containers without asking.
  • Read docs/ before changing protocol or architecture.
  • Read docs/EXTENSIONS.md before changing extension contracts, contribution points, permissions, storage, or host behaviour.
  • Read docs/HARNESSES.md before changing harness (coding CLI) detection, version checks, upgrades, or the harness API surface.
  • Read DESIGN.md before changing shared UI, branding, or iconography.
  • Keep AGENTS.md short and operational; put rationale in docs/.
  • Prefer semantic shared UI wrappers over ad hoc utility-heavy markup.
  • Preserve hosting defaults:
  • connect.falcondeck.com - relay
  • app.falcondeck.com - pairing landing (same public site; opens the iOS app)
  • falcondeck.com - public site
  • You may use Ansible and SSH on the production relay/app host for deployment, debugging, and verification when needed.

Code Review

  • Run the repo-local autoreview on any significant change before handing off, not just headline features. Tests and typecheck alone are not a review.
  • Changes to core functionality always warrant a review: the daemon event stream and RPC surface, relay protocol/replay/pairing, client-core sync/streaming/normalization, approval and turn flow, and storage or persistence behavior on any client.
  • Also treat new features, protocol or API changes, cross-package refactors, migrations, and release work as significant.
  • Skipping is fine only for trivial mechanical edits (copy, comments, isolated styling) — say so in the handoff.
  • For uncommitted work, run .agents/skills/autoreview/scripts/autoreview --mode local; for work already committed to main, run --mode commit --commit <sha> per commit.
  • Verify accepted findings against the real code path, fix in-scope issues, rerun focused checks, and rerun autoreview until clean.
  • Record the autoreview command and result in the handoff when you skip it or when it finds follow-up work.

Priorities

  1. Keep the desktop and daemon flow solid.
  2. Keep relay protocol and retention/reconnect behavior correct.
  3. Keep remote web and mobile aligned with daemon/relay contracts.
  4. Keep the public site simple and separate from product runtime concerns.
  5. Expand Claude support without regressing the Codex path.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.