Turn open-source ambition into a repeatable contribution system.
OpenMeta CLI is a local-first autonomous contribution agent that helps developers discover worthwhile GitHub issues, prepare repository context, draft implementation plans, and compound contribution momentum over time.
Overview | Features | Quick Start | Commands | Roadmap | Contributing
Open source work usually breaks down long before code is written.
The real friction is often:
- deciding what to work on
- filtering noise from genuinely promising issues
- entering unfamiliar repositories quickly
- rebuilding context from scratch every time
- losing continuity between one contribution and the next
OpenMeta CLI is designed to reduce that friction and turn contribution work into a system instead of a one-off burst of energy.
It combines:
- issue discovery and ranking
- repository-aware workspace preparation
- patch and PR draft generation
- durable contribution artifacts
- local automation for recurring execution
OpenMeta is not just an issue recommender. It is designed around the full path from opportunity discovery to contribution-ready artifacts.
State, workspace preparation, memory, and generated artifacts stay local. The only remote services involved are the GitHub and LLM APIs you explicitly configure.
Each run can improve the next one through repo memory, inbox state, and proof-of-work records. The system is meant to get more useful over time.
OpenMeta ranks GitHub issues against your technical profile using signals such as:
- stack fit
- freshness
- onboarding clarity
- merge potential
- repository impact
Once an opportunity is selected, OpenMeta can:
- prepare a local workspace
- detect likely files
- extract useful snippets
- detect runnable validation commands
- carry repository memory into the next decision step
OpenMeta can generate:
- patch drafts
- PR drafts
- contribution dossiers
- inbox entries
- proof-of-work records
OpenMeta preserves:
- repo memory
- recent issue outcomes
- preferred file paths
- artifact history
- proof-of-work logs
OpenMeta can install and manage a local daily automation workflow:
launchdon macOScronon Linux- manual fallback on unsupported platforms
flowchart TD
A["Scout GitHub Issues"] --> B["Score Fit + Opportunity"]
B --> C["Select Target"]
C --> D["Prepare Local Workspace"]
D --> E["Inspect Files + Checks"]
E --> F["Draft Patch Strategy"]
F --> G["Draft PR Narrative"]
G --> H["Save Memory / Inbox / Proof of Work"]
H --> I["Optional Local Automation"]
Current project layout:
src/
cli.ts # entrypoint
commands/ # command wiring
contracts/ # structured agent contracts
infra/ # config, logger, prompts, helpers
orchestration/ # init, agent, config, automation flows
services/ # github, llm, workspace, memory, scheduler
types/ # shared config and domain types
test/ # Bun test suite
bin/ # built CLI output
- Bun 1.0+
- Git
- GitHub Personal Access Token
- An LLM API key
Supported LLM options currently include:
- OpenAI
- MiniMax
- Kimi (Moonshot AI)
- GLM (Zhipu AI)
- Custom OpenAI-compatible endpoints
Install dependencies:
bun installBuild the CLI:
bun run buildCreate a global openmeta command on Linux or macOS:
ln -sf "$(pwd)/bin/openmeta.js" /usr/local/bin/openmeta
chmod +x ./bin/openmeta.js
hash -rVerify the installation:
openmeta --helpInitialize configuration:
openmeta initRun the autonomous contribution workflow:
openmeta agentScout only:
openmeta scout --limit 10Inspect durable artifacts:
openmeta inbox
openmeta powReview configuration:
openmeta config viewIf you prefer not to create a global symlink, you can still run the built file directly:
./bin/openmeta.js init
./bin/openmeta.js agent --run-checks
./bin/openmeta.js automation status| Command | Description |
|---|---|
openmeta init |
Initialize OpenMeta CLI configuration |
openmeta agent |
Run the autonomous contribution workflow |
openmeta agent --headless |
Run unattended using saved automation defaults |
openmeta agent --run-checks |
Execute detected baseline validation commands |
openmeta daily |
Compatibility alias for agent |
openmeta scout --limit <count> |
Rank the highest-value contribution opportunities |
openmeta inbox |
Show drafted contribution opportunities |
openmeta pow |
Show proof-of-work history |
openmeta runs |
Show recent command runs, durations, and failure reasons |
openmeta runs <id> |
Inspect one recorded run |
openmeta provider list |
List saved LLM provider profiles |
openmeta provider config |
Configure a provider profile interactively |
openmeta provider save <name> |
Save current LLM settings as a reusable provider profile |
openmeta provider add <name> |
Add a provider profile from command-line values |
openmeta provider use <name> |
Switch the active LLM provider to a saved profile |
openmeta provider remove <name> |
Remove a saved provider profile |
openmeta automation status |
Show automation state |
openmeta automation enable |
Enable unattended daily automation using saved settings |
openmeta automation disable |
Disable unattended daily automation and remove the system scheduler |
openmeta config view |
Show current configuration |
openmeta config set <key> <value> |
Set a configuration value |
openmeta config reset |
Reset configuration to defaults |
Example provider workflow:
openmeta provider config
openmeta provider save production
openmeta provider use production --validate
# optional: tune context budget and autonomous mode directly
openmeta config set llm.maxContextTokens 262144
openmeta config set automation.autonomousAgentEnabled trueOpenMeta maintains a clear local footprint:
- config:
~/.config/openmeta/config.json - workspaces:
~/.openmeta/workspaces - artifacts:
~/.openmeta/artifacts - repo memory and proof-of-work state: stored in the local OpenMeta state area
During openmeta agent, OpenMeta now retries implementation drafting with bounded repository context expansion when the model reports insufficient code context.
- Context expansion is enabled by default and only reads files inside the prepared workspace.
- Standard runs stop at three expansion rounds; autonomous mode can extend the loop to five rounds with a wider snippet budget.
- The loop never bypasses dirty-workspace, draft-only, validation, or generated-file safety gates.
- Editable context is capped by the active provider profile's
maxContextTokenssetting using deterministic compression; no extra summarization model call is required.
OpenMeta is built around user-controlled execution:
- GitHub PAT and LLM API keys are stored with AES encryption
- no OpenMeta-hosted backend is required
- only explicitly configured GitHub and LLM services are contacted
- unattended automation is opt-in
Typical local verification commands:
bun x tsc --noEmit
bun test
bun run buildPlanned or actively evolving areas include:
- stronger real-PR publishing flows
- richer repository memory and quick-win scanning
- deeper provider coverage for OpenAI-compatible ecosystems
- more robust unattended automation and recovery behavior
- improved artifact publishing and contribution traceability
Contributions are welcome.
Good contribution areas include:
- improving issue ranking and repo memory quality
- expanding provider support
- strengthening workspace preparation and validation logic
- refining automation and artifact publishing flows
- improving documentation and onboarding
Suggested local workflow:
git checkout -b feat/your-change
bun install
bun x tsc --noEmit
bun testMIT