Skip to main content

fj — one-shot CLI coding agent powered by soothe-nano

Project description

fj

PyPI version PyPI - Python Version CI License: MIT

🎥 Watch the demo video on Vimeo

fj is a one-shot coding-agent CLI for the terminal. Type a question, get an answer — no UI, no context-switching:

fj explain this repo
fj -f what did we decide last time?
fjf what did we decide last time?  // The same as fj -f

It runs on soothe-nano — tools, skills, MCP, subagents, and progressive loading — with SQLite persistence so every thread is resumable.

Package: fj-ai · Runtime: soothe-nano


Install

pip install fj-ai
# or
uv tool install fj-ai

Requires Python 3.11+.

Configure

Option A — Local model (guided):

fj setup

Walks you through an OpenAI-compatible endpoint (Ollama, LM Studio, vLLM, …) and writes the basics to ~/.soothe/config/nano.yml.

Option B — Cloud (no config file):

export OPENAI_API_KEY=sk-...
fj summarize README.md

Missing nano.yml falls back to OPENAI_API_KEY or ANTHROPIC_API_KEY.

Run

fj who are you
fj list Python files in this directory
fj refactor the parser to use dataclasses

Conversation

Threads persist across runs in SQLite. Continue the latest, jump to a specific one, or list them:

fj -f and now add tests          # continue latest active thread
fj -t abc123 continue from here  # continue a specific thread
fj -l                            # list recent threads

Flags

fj [options] [--] <query...>
Flag Meaning
-f / --follow Continue the latest active thread
-t ID / --thread Continue (or pin) a specific thread
-l / --list List recent threads (newest first)
-n NUM How many threads -l shows (0 = all)
-c PATH / --config Use an alternate nano.yml
-w DIR / --workspace Workspace root
--no-stream Wait for the full answer instead of streaming
-v / --verbose Mirror tool calls on stderr

Shell completion (AI-assisted, predicts natural-language intents, not just flags):

eval "$(fj completion zsh)"     # or: fj completion bash


Extend

Skills

fj ships AgentSkills (planning, TDD, debugging, document tools, MCP builder, and more) and supports your own via nano.yml:

skills:
  - ~/.soothe/skills/my-reviewer
  - ./skills/deploy

Each skill is a SKILL.md with frontmatter; progressive loading keeps the catalog compact and loads on demand.

MCP servers

Connect any Model Context Protocol server:

mcp_servers:
  - name: filesystem
    transport: stdio
    command: npx
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]

With defer: true (default), MCP tools activate on demand.


Development

git clone https://github.com/caesar0301/fj-ai.git
cd fj-ai
make sync-dev
make test
make lint

CI runs format, lint, and tests on Python 3.11–3.13; releases go GitHub Release → PyPI.

Powered by

Built on soothe-nano. For a full TUI coding agent from the same stack, see mirasoth/soothe.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fj_ai-1.0.16.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fj_ai-1.0.16-py3-none-any.whl (1.4 MB view details)

Uploaded Python 3

File details

Details for the file fj_ai-1.0.16.tar.gz.

File metadata

  • Download URL: fj_ai-1.0.16.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for fj_ai-1.0.16.tar.gz
Algorithm Hash digest
SHA256 37935050570849da73e50b4a3c651ac42ea46a1dc9de9afe7564513ab442322b
MD5 48366c27d4289147afe9116c73f76df5
BLAKE2b-256 30d2b464ee1f49ea32f4f9563d18c54746b893f5bb5adece3997ea8d0d6892fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for fj_ai-1.0.16.tar.gz:

Publisher: release.yml on caesar0301/fj-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fj_ai-1.0.16-py3-none-any.whl.

File metadata

  • Download URL: fj_ai-1.0.16-py3-none-any.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for fj_ai-1.0.16-py3-none-any.whl
Algorithm Hash digest
SHA256 a95ad1e87ec16484cd280d0155c29de21d4e932ab0fc1e8e6557df5f6dcc2f9f
MD5 dd431796dd5999c77a978424c9aaac6c
BLAKE2b-256 69fedfdef93dc2e654d9f8ee730f2037c303b5f747f724a265606779d8196ad8

See more details on using hashes here.

Provenance

The following attestation bundles were made for fj_ai-1.0.16-py3-none-any.whl:

Publisher: release.yml on caesar0301/fj-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page